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