[{
   "name":"search request",
   "filters":[
      "Param:q",
      "Path=^(/|/search)$"
   ],
   "interval":60,
   "limit":10,
   "subrules":[
      {
         "name":"roboagent limit",
         "interval": 60,
         "limit": 0, 
         "filters":[
            "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"
         ],
         "actions":[
            {
               "name":"block",
               "params":{
                  "message":"Rate limit exceeded"
               }
            }
         ]
      },
      {
         "name":"botlimit",
         "limit":0,
         "stop":true,
         "filters":[
            "Header:User-Agent=(Googlebot|bingbot|Baiduspider|yacybot|YandexMobileBot|YandexBot|Yahoo! Slurp|MJ12bot|AhrefsBot|archive.org_bot|msnbot|MJ12bot|SeznamBot|linkdexbot|Netvibes|SMTBot|zgrab|James BOT)"
         ],
         "actions":[
            {
               "name":"block",
               "params":{
                  "message":"Rate limit exceeded"
               }
            }
         ]
      },
      {
         "name":"IP limit",
         "interval": 300,
         "limit": 256,
         "stop":true,
         "aggregations":[
            "Header:X-Forwarded-For"
         ],
         "actions":[
            {
               "name":"block",
               "params":{
                  "message":"Rate limit exceeded"
               }
            }
         ]
      },
      {
         "name":"rss/json limit",
         "interval": 600,
         "limit": 4,
         "stop":true,
         "filters":[
            "Param:format=(csv|json|rss)"
         ],
         "actions":[
            {
               "name":"block",
               "params":{
                  "message":"Rate limit exceeded"
               }
            }
         ]
      },
      {
         "name":"useragent limit",
         "interval": 300,
         "limit": 128,
         "aggregations":[
            "Header:User-Agent"
         ],
         "actions":[
            {
               "name":"block",
               "params":{
                  "message":"Rate limit exceeded"
               }
            }
         ]
      }
   ]
}]
