filtron-rules.json 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. [{
  2. "name":"search request",
  3. "filters":[
  4. "Param:q",
  5. "Path=^(/|/search)$"
  6. ],
  7. "interval":60,
  8. "limit":10,
  9. "subrules":[
  10. {
  11. "name":"roboagent limit",
  12. "interval": 60,
  13. "limit": 0,
  14. "filters":[
  15. "Header:User-Agent=(curl|cURL|Wget|python-requests|Scrapy|FeedFetcher|Go-http-client)"
  16. ],
  17. "actions":[
  18. {
  19. "name":"block",
  20. "params":{
  21. "message":"Rate limit exceeded"
  22. }
  23. }
  24. ]
  25. },
  26. {
  27. "name":"botlimit",
  28. "limit":0,
  29. "stop":true,
  30. "filters":[
  31. "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)"
  32. ],
  33. "actions":[
  34. {
  35. "name":"block",
  36. "params":{
  37. "message":"Rate limit exceeded"
  38. }
  39. }
  40. ]
  41. },
  42. {
  43. "name":"IP limit",
  44. "interval": 300,
  45. "limit": 256,
  46. "stop":true,
  47. "aggregations":[
  48. "Header:X-Forwarded-For"
  49. ],
  50. "actions":[
  51. {
  52. "name":"block",
  53. "params":{
  54. "message":"Rate limit exceeded"
  55. }
  56. }
  57. ]
  58. },
  59. {
  60. "name":"rss/json limit",
  61. "interval": 600,
  62. "limit": 4,
  63. "stop":true,
  64. "filters":[
  65. "Param:format=(csv|json|rss)"
  66. ],
  67. "actions":[
  68. {
  69. "name":"block",
  70. "params":{
  71. "message":"Rate limit exceeded"
  72. }
  73. }
  74. ]
  75. },
  76. {
  77. "name":"useragent limit",
  78. "interval": 300,
  79. "limit": 128,
  80. "aggregations":[
  81. "Header:User-Agent"
  82. ],
  83. "actions":[
  84. {
  85. "name":"block",
  86. "params":{
  87. "message":"Rate limit exceeded"
  88. }
  89. }
  90. ]
  91. }
  92. ]
  93. }]