| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | 
							- [
 
-     {
 
- 	"name": "roboagent limit",
 
- 	"filters": [
 
- 	    "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client|Ruby|UniversalFeedParser)"
 
- 	],
 
- 	"limit": 0,
 
- 	"stop": true,
 
- 	"actions": [
 
- 	    { "name": "log"},
 
- 	    { "name": "block",
 
-               "params": {
 
- 		  "message": "Rate limit exceeded"
 
-               }
 
- 	    }
 
- 	]
 
-     },
 
-     {
 
- 	"name": "botlimit",
 
- 	"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)"
 
- 	],
 
- 	"limit": 0,
 
- 	"stop": true,
 
- 	"actions": [
 
- 	    { "name": "log"},
 
- 	    { "name": "block",
 
-               "params": {
 
- 		  "message": "Rate limit exceeded"
 
-               }
 
- 	    }
 
- 	]
 
-     },
 
-     { "name": "suspiciously frequent IP",
 
-       "filters": [],
 
-       "interval": 600,
 
-       "limit": 30,
 
-       "aggregations": [
 
- 	  "Header:X-Forwarded-For"
 
-       ],
 
-       "actions":[
 
- 	  {"name":"log"}
 
-       ]
 
-     },
 
-     { "name": "search request",
 
-       "filters": [
 
- 	  "Param:q",
 
- 	  "Path=^(/|/search)$"
 
-       ],
 
-       "interval": 61,
 
-       "limit": 999,
 
-       "subrules": [
 
- 	  {
 
- 	      "name": "missing Accept-Language",
 
- 	      "filters": ["!Header:Accept-Language"],
 
- 	      "limit": 0,
 
- 	      "stop": true,
 
- 	      "actions": [
 
- 		  {"name":"log"},
 
- 		  {"name": "block",
 
- 		   "params": {"message": "Rate limit exceeded"}}
 
- 	      ]
 
- 	  },
 
- 	  {
 
-               "name": "suspiciously Connection=close header",
 
-               "filters": ["Header:Connection=close"],
 
-               "limit": 0,
 
-               "stop": true,
 
-               "actions": [
 
- 		  {"name":"log"},
 
- 		  {"name": "block",
 
- 		   "params": {"message": "Rate limit exceeded"}}
 
-               ]
 
- 	  },
 
- 	  {
 
-               "name": "IP limit",
 
-               "interval": 61,
 
-               "limit": 9,
 
-               "stop": true,
 
-               "aggregations": [
 
- 		  "Header:X-Forwarded-For"
 
-               ],
 
-               "actions": [
 
- 		  { "name": "log"},
 
- 		  { "name": "block",
 
- 		    "params": {
 
- 			"message": "Rate limit exceeded"
 
- 		    }
 
- 		  }
 
-               ]
 
- 	  },
 
- 	  {
 
-               "name": "rss/json limit",
 
-               "filters": [
 
- 		  "Param:format=(csv|json|rss)"
 
-               ],
 
-               "interval": 121,
 
-               "limit": 2,
 
-               "stop": true,
 
-               "actions": [
 
- 		  { "name": "log"},
 
- 		  { "name": "block",
 
- 		    "params": {
 
- 			"message": "Rate limit exceeded"
 
- 		    }
 
- 		  }
 
-               ]
 
- 	  },
 
- 	  {
 
-               "name": "useragent limit",
 
-               "interval": 61,
 
-               "limit": 199,
 
-               "aggregations": [
 
- 		  "Header:User-Agent"
 
-               ],
 
-               "actions": [
 
- 		  { "name": "log"},
 
- 		  { "name": "block",
 
- 		    "params": {
 
- 			"message": "Rate limit exceeded"
 
- 		    }
 
- 		  }
 
-               ]
 
- 	  }
 
-       ]
 
-     }
 
- ]
 
 
  |