@@ -57,100 +57,91 @@ of:
58.. code:: json
58.. code:: json
61− { "name": "search request",
62+ "name": "search request",
62− "filters": [
63+ "filters": [
63− "Param:q",
64+ "Param:q",
64− "Path=^(/|/search)$"
65+ "Path=^(/|/search)$"
66− "interval": "<time-interval-in-sec (int)>",
67+ "interval": "<time-interval-in-sec (int)>"
67− "limit": "<max-request-number-in-interval (int)>",
68+ "limit": "<max-request-number-in-interval (int)>",
68− "subrules": [
69+ "subrules": [
70− "name": "roboagent limit",
71+ "name": "missing Accept-Language",
71− "interval": "<time-interval-in-sec (int)>",
72− "limit": "<max-request-number-in-interval (int)>",
74− "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"
80− "message": "Rate limit exceeded"
89− "filters": [
72+ "filters": ["!Header:Accept-Language"],
90− "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)"
73+ "limit": "<max-request-number-in-interval (int)>",
92− "actions": [
75+ "actions": [
93− { "name": "log"},
76+ {"name":"log"},
94− { "name": "block",
77+ {"name": "block",
96− "message": "Rate limit exceeded"
78+ "params": {"message": "Rate limit exceeded"}}
82+ "name": "suspiciously Connection=close header",
83+ "filters": ["Header:Connection=close"],
84+ "limit": "<max-request-number-in-interval (int)>",
89+ "params": {"message": "Rate limit exceeded"}}
102− "name": "IP limit",
93+ "name": "IP limit",
103− "interval": "<time-interval-in-sec (int)>",
94+ "interval": "<time-interval-in-sec (int)>"
104− "limit": "<max-request-number-in-interval (int)>",
95+ "limit": "<max-request-number-in-interval (int)>",
105− "stop": true,
96+ "stop": true,
106− "aggregations": [
97+ "aggregations": [
107− "Header:X-Forwarded-For"
98+ "Header:X-Forwarded-For"
109− "actions": [
100+ "actions": [
110− { "name": "log"},
101+ { "name": "log"},
111− { "name": "block",
102+ { "name": "block",
112− "params": {
103+ "params": {
113− "message": "Rate limit exceeded"
104+ "message": "Rate limit exceeded"
119− "name": "rss/json limit",
110+ "name": "rss/json limit",
120− "interval": "<time-interval-in-sec (int)>",
121− "limit": "<max-request-number-in-interval (int)>",
123− "filters": [
111+ "filters": [
124− "Param:format=(csv|json|rss)"
112+ "Param:format=(csv|json|rss)"
114+ "interval": "<time-interval-in-sec (int)>"
115+ "limit": "<max-request-number-in-interval (int)>",
126− "actions": [
117+ "actions": [
127− { "name": "log"},
118+ { "name": "log"},
128− { "name": "block",
119+ { "name": "block",
129− "params": {
120+ "params": {
130− "message": "Rate limit exceeded"
121+ "message": "Rate limit exceeded"
136− "name": "useragent limit",
127+ "name": "useragent limit",
137− "interval": "<time-interval-in-sec (int)>",
128+ "interval": "<time-interval-in-sec (int)>"
138− "limit": "<max-request-number-in-interval (int)>",
129+ "limit": "<max-request-number-in-interval (int)>",
139− "aggregations": [
130+ "aggregations": [
140− "Header:User-Agent"
131+ "Header:User-Agent"
142− "actions": [
133+ "actions": [
143− { "name": "log"},
134+ { "name": "log"},
144− { "name": "block",
135+ { "name": "block",
145− "params": {
136+ "params": {
146− "message": "Rate limit exceeded"
137+ "message": "Rate limit exceeded"
156.. _filtron route request:
147.. _filtron route request: