rules.json 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. [{
  2. "name":"suspiciously frequent queries",
  3. "filters":[
  4. "Param:q",
  5. "Path=^(/|/search)$"
  6. ],
  7. "interval":120,
  8. "limit":9,
  9. "actions":[
  10. {"name":"log"}
  11. ]
  12. },
  13. {
  14. "name":"search request",
  15. "filters":[
  16. "Param:q",
  17. "Path=^(/|/search)$"
  18. ],
  19. "interval":120,
  20. "limit":19,
  21. "actions":[
  22. {
  23. "name":"block",
  24. "params":{
  25. "message":"common rate limit exceeded"
  26. }
  27. }
  28. ],
  29. "subrules":[
  30. {
  31. "name":"roboagent limit",
  32. "interval":60,
  33. "limit":3,
  34. "filters":[
  35. "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client|Ruby)"
  36. ],
  37. "actions":[
  38. {"name":"log"},
  39. {
  40. "name":"block",
  41. "params":{
  42. "message":"rate limit exceeded"
  43. }
  44. }
  45. ]
  46. },
  47. {
  48. "name":"botlimit",
  49. "interval":60,
  50. "limit":0,
  51. "stop":true,
  52. "filters":[
  53. "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)"
  54. ],
  55. "actions":[
  56. {"name":"log"},
  57. {
  58. "name":"block",
  59. "params":{
  60. "message":"rate limit exceeded"
  61. }
  62. }
  63. ]
  64. },
  65. {
  66. "name":"IP limit",
  67. "interval":60,
  68. "limit":13,
  69. "stop":true,
  70. "aggregations":[
  71. "Header:X-Forwarded-For"
  72. ],
  73. "actions":[
  74. {"name":"log"},
  75. {
  76. "name":"block",
  77. "params":{
  78. "message":"rate limit exceeded"
  79. }
  80. }
  81. ]
  82. },
  83. {
  84. "name":"rss/json limit",
  85. "interval":60,
  86. "limit":13,
  87. "stop":true,
  88. "filters":[
  89. "Param:format=(csv|json|rss)"
  90. ],
  91. "actions":[
  92. {"name":"log"},
  93. {
  94. "name":"block",
  95. "params":{
  96. "message":"rate limit exceeded"
  97. }
  98. }
  99. ]
  100. },
  101. {
  102. "name":"useragent limit",
  103. "interval":60,
  104. "limit":13,
  105. "aggregations":[
  106. "Header:User-Agent"
  107. ],
  108. "actions":[
  109. {"name":"log"},
  110. {
  111. "name":"block",
  112. "params":{
  113. "message":"rate limit exceeded"
  114. }
  115. }
  116. ]
  117. }
  118. ]
  119. }]