| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | [    {        "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"                      }                    }                ]            }        ]    }]
 |