Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Waf фильтруем ботов до 1% по метрике

Discussion in 'Яндекс' started by konamin, Dec 11, 2024.

11.12.24 в 20:14
21.02.25 в 12:01
23
3,535
3
  1. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Здарова всем)
    Быстренький мануал как отфильтровать ботов по прямым заходам в метрике. Инфы в сети полно, но как-то она кусками, или я плохо искал..
    Когда на тебя сыпется пол ляма ботов, времени особо что-то выискивать просто нет.

    Необходимо создать 5 правил (фри тариф):
    2 запрет на разных известных пауков, вредных и не очень
    1 для белых ботов
    1 для блока сетей
    1 для сбора инфы
    Также блокирую перманентно некоторые мусорные ASN сети (хостинги, хуёстинги и тд , у каждого могут отличаться), с которых тоже много ботов.
    С этими правилами мои сайты только растут, и коеф ботов до 1% по метрике.

    Первое правило на запрет. Здесь список взят с паблика, он огромен и его естественно можно дополнять актуальными краулерами анализируя свой траф.
    (http.user_agent contains "Abonti") or (http.user_agent contains "AspiegelBot") or (http.user_agent contains "aggregator") or (http.user_agent contains "AhrefsBot") or (http.user_agent contains "Aport") or (http.user_agent contains "asterias") or (http.user_agent contains "Baiduspider") or (http.user_agent contains "BDCbot") or (http.user_agent contains "bidswitchbot") or (http.user_agent contains "Birubot") or (http.user_agent contains "BLEXBot") or (http.user_agent contains "BUbiNG") or (http.user_agent contains "BuiltBotTough") or (http.user_agent contains "Bullseye") or (http.user_agent contains "BunnySlippers") or (http.user_agent contains "Butterfly") or (http.user_agent contains "ca-crawler") or (http.user_agent contains "CamontSpider") or (http.user_agent contains "CCBot") or (http.user_agent contains "Cegbfeieh") or (http.user_agent contains "CheeseBot") or (http.user_agent contains "CherryPicker") or (http.user_agent contains "coccoc") or (http.user_agent contains "CopyRightCheck") or (http.user_agent contains "cosmos") or (http.user_agent contains "crawler") or (http.user_agent contains "Crescent") or (http.user_agent contains "CyotekWebCopy/1.7") or (http.user_agent contains "CyotekHTTP/2.0") or (http.user_agent contains "DataForSeoBot") or (http.user_agent contains "DeuSu") or (http.user_agent contains "discobot") or (http.user_agent contains "DittoSpyder") or (http.user_agent contains "DnyzBot") or (http.user_agent contains "DomainCrawler") or (http.user_agent contains "DotBot") or (http.user_agent contains "Download Ninja") or (http.user_agent contains "EasouSpider") or (http.user_agent contains "EmailCollector") or (http.user_agent contains "EmailSiphon") or (http.user_agent contains "EmailWolf") or (http.user_agent contains "EroCrawler") or (http.user_agent contains "Exabot") or (http.user_agent contains "ExtractorPro") or (http.user_agent contains "Ezooms") or (http.user_agent contains "FairShare") or (http.user_agent contains "Fasterfox") or (http.user_agent contains "FeedBooster") or (http.user_agent contains "Foobot") or (http.user_agent contains "Genieo") or (http.user_agent contains "GetIntent Crawler") or (http.user_agent contains "Gigabot") or (http.user_agent contains "gold crawler") or (http.user_agent contains "GrapeshotCrawler") or (http.user_agent contains "grub-client") or (http.user_agent contains "Harvest") or (http.user_agent contains "hloader") or (http.user_agent contains "httplib") or (http.user_agent contains "HTTrack") or (http.user_agent contains "humanlinks") or (http.user_agent contains "HybridBot") or (http.user_agent contains "ia_archiver") or (http.user_agent contains "ieautodiscovery") or (http.user_agent contains "Incutio") or (http.user_agent contains "InfoNaviRobot") or (http.user_agent contains "InternetSeer") or (http.user_agent contains "IstellaBot") or (http.user_agent contains "Java") or (http.user_agent contains "Java/1.") or (http.user_agent contains "JamesBOT") or (http.user_agent contains "JennyBot") or (http.user_agent contains "JS-Kit") or (http.user_agent contains "k2spider") or (http.user_agent contains "Kenjin Spider") or (http.user_agent contains "Keyword Density/0.9") or (http.user_agent contains "kmSearchBot") or (http.user_agent contains "larbin") or (http.user_agent contains "LexiBot") or (http.user_agent contains "libWeb") or (http.user_agent contains "libwww") or (http.user_agent contains "Linguee") or (http.user_agent contains "LinkExchanger") or (http.user_agent contains "LinkextractorPro") or (http.user_agent contains "linko") or (http.user_agent contains "LinkScan/8.1a Unix") or (http.user_agent contains "LinkWalker") or (http.user_agent contains "LinkpadBot") or (http.user_agent contains "lmspider") or (http.user_agent contains "LNSpiderguy") or (http.user_agent contains "ltx71") or (http.user_agent contains "lwp-trivial") or (http.user_agent contains "lwp-trivial") or (http.user_agent contains "magpie") or (http.user_agent contains "Mata Hari") or (http.user_agent contains "MaxPointCrawler") or (http.user_agent contains "MegaIndex")

    Второе правило, это продолжение первого (тк клауд дает на одно правило 100 полей), плюс дополняю своими.
    (http.user_agent contains "Go-http-client") or (http.user_agent contains "l9scan/2.0.0333e21343e2033313e25343") or (http.user_agent contains "ImagesiftBot") or (http.user_agent contains "Konturbot") or (http.user_agent contains "BlackWidow") or (http.user_agent contains "MBCrawler") or (http.user_agent contains "YaK") or (http.user_agent contains "niraiya.com") or (http.user_agent contains "Сloudfind") or (http.user_agent contains "CriteoBot") or (http.user_agent contains "SafeDNSBot") or (http.user_agent contains "SeopultContentAnalyzer") or (http.user_agent contains "Serpstatbot") or (http.user_agent contains "Rome Client") or (http.user_agent contains "Flipboard") or (http.user_agent contains "Seekport Crawler") or (http.user_agent contains "ALittle Client") or (http.user_agent contains "Bytespider") or (http.user_agent contains "SurdotlyBot") or (http.user_agent contains "Barkrowler") or (http.user_agent contains "BackupLand") or (http.user_agent contains "Iframely") or (http.host in {"api.pfbaza.website" "autoclickextreme.com" "pfbaza.website" "nicecrawler.com" "spidersoft.com" "grub.org" "anonymousfox.co" "seosking.xyz" "paloaltonetworks.com" "static.39.123.109.65.clients.your-server.de"}) or (http.user_agent contains "Keys-so-bot") or (http.user_agent contains "stagefright") or (ip.geoip.country eq "SC") or (ip.geoip.country eq "TH") or (ip.geoip.country eq "IR")

    Третее правило для белых ботов. Сюда пишем обязательно ботов: кф, вк, од, меил, гугл, яши и тд..
    Важно! Не нужно сувать белых ботов на первое место как советуют многие. Поддельный юзер-агент в легкую пройдет по правилу белого бота, если оно у тебя первое.
    (cf.client.bot) or (http.user_agent contains "Mail.RU_Bot") or (ip.src.asnum eq 208722) or (ip.src.asnum eq 13238) or (ip.src.asnum eq 47541) or (ip.src.asnum eq 47542) or (ip.src.asnum eq 47764) or (http.user_agent contains "vkShare") or (ip.src.asnum eq 13236) or (ip.src.asnum eq 15169) or (http.user_agent contains "OdklBot")

    Четвертое, ставим капчу ASN сетям, с которых льются боты. У меня на всех сайтах практически одни и те же сети, поэтому пользуюсь этим списком везде. У вас возможно нужно будет добавить какие-то, а возможно хватит и этого.
    (ip.src.asnum eq 29182) or (ip.src.asnum eq 204490) or (ip.src.asnum eq 211027) or (ip.src.asnum eq 34665) or (ip.src.asnum eq 49492) or (ip.src.asnum eq 213220) or (ip.src.asnum eq 60389) or (ip.src.asnum eq 45027) or (ip.src.asnum eq 50113) or (ip.src.asnum eq 44812) or (ip.src.asnum eq 204916) or (ip.src.asnum eq 49505) or (ip.src.asnum eq 50340) or (ip.src.asnum eq 207713) or (ip.src.asnum eq 3175)

    Пятое, собираем инфу по прямым заходам для дальнейшего анализа в КФ.
    (http.referer eq "") or (http.referer eq "-")

    Доп блок в tools
    AS35048
    Biterika

    AS16276
    OVH

    AS210644
    AEZA

    AS59504
    Hosting vpsville.ru

    AS24940
    Hetzner

    Это всё помогает даже без отключения IPv6, на http или https, пох. Если хотите заблокировать протокол полнотью, то, есть серисы, например у Mik Foxi на Работа с API CloudFlare, очень удобно на фри тарифе.
    Списки можно сократить если блочить через "is in" пачками, тут кто как хочет, кому как удобно.

     
    #1 konamin, Dec 11, 2024
    Last edited: Feb 15, 2025
    • Полезно Полезно x 9
    • Нравится Нравится x 3
    • Не нравится Не нравится x 1
  2. kinQ

    kinQ Бывалый

    Joined:
    Nov 30, 2016
    Messages:
    104
    Best Answers:
    0
    Ratings:
    +37 / 29 / -0
    а как отрезать ботов какого то региона от гугла? что бы залочить сайт в поиске для региона
     
  3. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    В поиске никак.
     
  4. Sardorbek

    Staff Member VIP Кинотрафик v2

    Joined:
    Apr 10, 2021
    Messages:
    136
    Best Answers:
    0
    Ratings:
    +43 / 3 / -0
    or (http.user_agent contains "CopyRightCheck")
     
    • Нравится Нравится x 2
  5. Sardorbek

    Staff Member VIP Кинотрафик v2

    Joined:
    Apr 10, 2021
    Messages:
    136
    Best Answers:
    0
    Ratings:
    +43 / 3 / -0
    Для белых ботов (skip):

    Code:
    (http.user_agent contains "Google") or (http.user_agent contains "Yandex") or (http.user_agent contains "Chrome-Lighthouse") or (ip.src eq тут.ip.вашего.сервера)
    Разрешающей правила обязательно поставить на первой очеред.
     
    #5 Sardorbek, Dec 13, 2024
    Last edited: Dec 13, 2024
  6. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Если ПСы прописаны через ASN, такое правило допустимо первым, его не подменить.

    Тут в край не согласен. Кто это сказал/придумал?

    Этот юзер-агент есть в первом правиле.
     
    #6 konamin, Dec 13, 2024
    Last edited: Dec 13, 2024
  7. Sardorbek

    Staff Member VIP Кинотрафик v2

    Joined:
    Apr 10, 2021
    Messages:
    136
    Best Answers:
    0
    Ratings:
    +43 / 3 / -0
    Я сейчас проверил через Яндекс с вашим правилам поставляя разрешающей правила на третий очередь, ответ 403. А при повторное проверке поставляя разрешающей правила на первый очередь ответ 200 OK.
     
  8. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Вы вообще понимаете как это работает, прежде чем писать такое? Как Яндекс может получать 403, если его нет в списке на запрет. Что за бред)
    Даже если я полностью снесу белый список, Яндекс спокойно будет попадать на сайт. Показать на видео?
    В моем WAF не используется фильтрация по HTTP 1 и HTTP 1.1, при котором нужно указывать белых ботов выше этого фильтра.
    Screenshot1.png

    Screenshot2.png

    Screenshot3.png

    Screenshot4.png

    Screenshot5.png

    Screenshot7.png

    Sardorbek изучите как это работает, пересмотрите свои правила и не вводите людей в заблуждение.
     
    #8 konamin, Dec 18, 2024
    Last edited: Dec 18, 2024
  9. evgfreeman

    VIP Кинотрафик v2

    Joined:
    Apr 26, 2016
    Messages:
    3,352
    Best Answers:
    7
    Ratings:
    +1,525 / 210 / -0
    Спасибо!
     
    • Нравится Нравится x 1
  10. Sardorbek

    Staff Member VIP Кинотрафик v2

    Joined:
    Apr 10, 2021
    Messages:
    136
    Best Answers:
    0
    Ratings:
    +43 / 3 / -0
    Хорошо перепроверю. Может я что-то пропустил.
     
  11. Sardorbek

    Staff Member VIP Кинотрафик v2

    Joined:
    Apr 10, 2021
    Messages:
    136
    Best Answers:
    0
    Ratings:
    +43 / 3 / -0
    Наверное при геоблокировке и включении js проверка на
    Code:
    (http.referer eq "") or (http.referer eq "-")
    поисковык получает ответ 403 запрет.
    Даже в этом случае пропускает поисковых боты правила белых ботов когда он поставлен в первой очеред. А если исполняют в следующем очереде правила пропуска белых ботов не работает!

    Ещё в вашем правил гео блок нет запрета к РФ и США. А у меня есть.
     
  12. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Вот и причина 403. Вы блокируете основных ботов Яндекса и Гугла. Разрешающее правило должно стоять выше этого блока ГЕО, как минимум.

    Это обычный сбор данных со skip'ом, он должен пропускать всех прямых и никого не блокировать вообще.

    Настройки WAF индивидуальны, здесь отвечаю только за свои. Если вы вносите какие-то коррективы, то должны понимать что делаете чтоб не натворить делов.
     
    • Нравится Нравится x 1
  13. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Еще несколько ботов, которые стоит добавить во второе правило:
    or (http.user_agent contains "PetalBot") or (http.user_agent contains "SemrushBot") or (http.user_agent contains "Serpstat") or (http.user_agent contains "Unknown")
     
  14. evgfreeman

    VIP Кинотрафик v2

    Joined:
    Apr 26, 2016
    Messages:
    3,352
    Best Answers:
    7
    Ratings:
    +1,525 / 210 / -0
    Мой старый был

    White Bots (Skip all) [ON]
    Code:
    (cf.client.bot and http.user_agent contains "google.com/bot") or (cf.client.bot and http.user_agent contains "yandex.com/bots") or (cf.client.bot and http.user_agent contains "Google")
    Block GEO (Interactive Challenge) [ON]
    Code:
    (not ip.geoip.country in {"AM" "AZ" "BY" "KZ" "KG" "MD" "RU" "TJ" "TM" "UZ" "UA"})
    Anti DDoS (JS Challenge) [OFF]
    Code:
    (http.request.method eq "POST" and http.request.uri contains "search")
    Anti Parser (JS Challenge) [ON]
    Code:
    (not http.request.version in {"HTTP/2" "HTTP/3" "SPDY/3.1"}) or (http.referer eq "" and not ip.geoip.country in {"RU"}) or (http.user_agent contains "TelegramBot" and not ip.geoip.country in {"RU"}) or (http.user_agent contains "Discordbot" and not ip.geoip.country in {"RU"}) or (ip.src in {::/0}) or (not ssl)
    Остальное в .htaccess блок UA.
     
    • Полезно Полезно x 2
  15. Lirok

    Lirok Зелёный

    Joined:
    Sep 5, 2024
    Messages:
    2
    Best Answers:
    0
    Ratings:
    +0 / 0 / -0
    konamin
    +100 к карме

    а список asn не пополнился у тебя?
     
  16. Черный Корсар

    Черный Корсар Бывалый

    Joined:
    May 22, 2019
    Messages:
    370
    Best Answers:
    2
    Ratings:
    +98 / 30 / -0
    Не дает вставить 3-е правило.
    upload_2025-2-15_12-35-10.png
     
  17. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Пока этого списка мне хватает. Будут новые попытки - буду отлавливать и обновлять здесь список.

    Проверь, может где-то режет выражение. Может какую-то скобку пропустил. Галка стоит на - All remaining custom rules?
     
  18. Черный Корсар

    Черный Корсар Бывалый

    Joined:
    May 22, 2019
    Messages:
    370
    Best Answers:
    2
    Ratings:
    +98 / 30 / -0
    Да, все делал по инструкции, коды твои из поста копировал.
    По итогу прописал руками, и получилось

    Code:
    (cf.client.bot) or (http.user_agent contains "Mail.RU_Bot") or (ip.src.asnum eq 208722) or (ip.src.asnum eq 47541) or (ip.src.asnum eq 47542) or (ip.src.asnum eq 47764) or (http.user_agent contains "vkShare") or (ip.src.asnum eq 13236) or (ip.src.asnum eq 15169) or (http.user_agent contains "OdklBot")
    А у тебя

    Code:
    (cf.client.bot) or (http.user_agent contains "Mail.RU_Bot") or (ip.geoip.asnum eq 208722) or (ip.geoip.asnum eq 13238) or (ip.geoip.asnum eq 47541) or (ip.geoip.asnum eq 47542) or (ip.geoip.asnum eq 47764) or (http.user_agent contains "vkShare") or (ip.geoip.asnum eq 13236) or (ip.geoip.asnum eq 15169) or (http.user_agent contains "OdklBot")
    Разница в ip.src.asnum и ip.geoip.asnum
    х\з правда, в чем именно отличие, и будет ли работать так, но, раз клауд сам это прописал, то так и должно быть

    upload_2025-2-15_15-28-53.png
     
    • Полезно Полезно x 2
  19. Modniy

    Modniy Новичок

    Joined:
    Feb 14, 2025
    Messages:
    43
    Best Answers:
    0
    Ratings:
    +28 / 7 / -0
    Вставь в поле и просто сохраняй, не надо нажимать кнопку "Use expression builder". Мне так помогло, хотя тоже ошибку долго искал.
     
    • Согласен Согласен x 1
  20. TopicStarter Overlay
    konamin

    Staff Member VIP Кинотрафик v2

    Joined:
    Feb 2, 2015
    Messages:
    640
    Best Answers:
    0
    Ratings:
    +457 / 1 / -0
    Проверил, у меня и руками и на автомате создается ip.geoip.asnum, никаких ошибок не вылетает. Этот формат устаревший и клауд должен прописывать правильный вариант, но этого не происходит. Возможно потому что я давно использовал именно такой формат. ХЗ.

    waf.png

    P.S. После того, как руками заменил и сохранил в правиле все geoip на src, то новые выражения уже создаются правильно с src. Обновил 3 и 4 правило в стартпосте.
    Рекомендую всем пересмотреть свои правила.
     
    #20 konamin, Feb 15, 2025
    Last edited: Feb 15, 2025
    • Нравится Нравится x 3
Яндекс.Метрика