Блокировка ботов с помощью htaccess

Насущная проблема администратора какого-либо веб-проекта — нагрузка на сервер, которую этот проект создаёт. Одно, когда ресурсы потребляют скрипты самого проекта, тут можно поработать над кодом, оптимизировать процессы, другое, когда на сервер обрушивается волна далеко не самых полезных ботов, которые создают множество запросов, замедляя работу сервера. С этим надо работать! Сейчас мы не будем обсуждать различные способы борьбы с ботами, а рассмотрим один из них — блокировка ботов с помощью файла htaccess.

Как блокировать бота?

Используем модуль mod_rewrite сервера Apache (не забываем установить сам модуль):

<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_USER_AGENT} ^.*(Bot01|Bot02|Bot03).*$ [NC] RewriteRule . - [F,L] </IfModule>

Тут всё просто:

  • <IfModule mod_rewrite.c> — проверяем, загружен ли модуль
  • RewriteEngine On — включаем движок для перенаправлений
  • RewriteCond %{HTTP_USER_AGENT} ^.*(Bot01|Bot02|Bot03).*$ [NC] — описываем условия. Проверяем поле HTTP_USER_AGENT на наличие наименования бота. Варианты имён пишутся в скобках через символ «|», можно написать сколько угодно (можно скопировать то, что я выложил чуть ниже). Флаг NC избавляет нас от необходимости соблюдать регистр букв, имейте ввиду.
  • RewriteRule . — [F,L] — описываем правило, которое выдаёт ботам ответ с кодом 403 — доступ запрещён и прерывает обработку условий.

Желательно вставить эту обработку в начало htaccess, чтобы другие правила не срабатывали до этого.

Как проверить работу правила?

Работу правила можно проверить с помощью сервиса https://www.wannabrowser.net/, который позволяет получить нужную страницу, подставив нужный нам User-Agent.

Блокировка ботов с помощью htaccess

Список ботов

Нам потребуется для блокировки — значение поля Referrer из запроса. В нём можно найти «имя» бота, по которому уже можно его заблокировать. Далее я выложу список ботов, который я собрал как с ресурсов в сети, так и вылавливая мерзоту ручками в логах. Выложу их сразу в формате, подходящем для дальнейших манипуляций с htaccess.

Дата обновления списка ботов: 16 марта 2023 года

Abonti|aggregator|AhrefsBot|Aport|asterias|Baiduspider|bingbot|binance|BackupLand|Barkrowler|BDCbot|Birubot|BLEXBot|BUbiNG|BuiltBotTough|Bullseye|BunnySlippers|Butterfly|CamontSpider|CCBot|Cegbfeieh|CheeseBot|CherryPicker|coccoc|CopyRightCheck|cosmos|crawler|Crescent|CyotekWebCopy|CyotekHTTP|DataForSeoBot|DeuSu|discobot|DittoSpyder|DnyzBot|DomainCrawler|DotBot|DownloadNinja|dcrawl|EasouSpider|EmailCollector|EmailSiphon|EmailWolf|EroCrawler|Exabot|ExtractorPro|Ezooms|facebookexternalhit|FairShare|Fasterfox|FeedBooster|Feedspotbot|Foobot|Genieo|GetIntentCrawler|Gigabot|GrapeshotCrawler|Go-http-client|Harvest|hloader|HTTrack|humanlinks|HybridBot|ieautodiscovery|Incutio|InfoNaviRobot|InternetSeer|ips-agent|IstellaBot|JamesBOT|JennyBot|JS-Kit|Jooblebot|k2spider|Kenjin|kmSearchBot|larbin|LexiBot|Linguee|LinkExchanger|LinkextractorPro|linko|LinkWalker|LinkpadBot|lmspider|LNSpiderguy|ltx71|lwp-trivial|Mail.RU_Bot|magpie|MataHari|MaxPointCrawler|MegaIndex|memoryBot|MIIxpc|Mippin|MisterPiX|MJ12bot|MLBot|moget|MSIECrawler|msnbot|msnbot-media|NetAnts|NetcraftSurveyAgent|NICErsPRO|NjuiceBot|NPBot|Nutch|OfflineExplorer|OLEcrawler|Openfind|openstat.ru|panscient|PostRank|PetalBot|ProWebWalker|ptd-crawler|Purebot|PycURL|QueryNMetasearch|RepoMonkey|Riddler|RMA|Scrapy|SemrushBot|serf|SeznamBot|SISTRIX|SiteBot|SiteSnagger|Serpstat|Slurp|SnapPreviewBot|Sogou|Soup|SpankBot|spanner|spbot|Spinn3r|SpyFu|statdom.ru|SputnikBot|suggybot|SurveyBot|suzuran|Teleport|Telesoft|TheIntraformant|TheNomad|TightTwatBot|Titan|True_Robot|ttCrawler|turingos|TurnitinBot|TOBBOT|UbiCrawler|UnisterBot|URLyWarning|VCI|Vedma|Voyager|WBSearchBot|WebAuto|WebBandit|WebDataStats|WebCopier|WebEnhancer|WebmasterWorldForumBot|WebReaper|webprosbot|WebSauger|WebStripper|WebZip|Wotbox|YottosBot|Yeti|YandexFavicons|Zao|Zeus|ZyBORG|python\-requests|ALittle\ Client|Apache\-HttpClient

Обязательно проверьте доступность сайта после добавления правил! Если сайт вдруг стал недоступен, то, в первую очередь, проверьте корректность «списка» ботов! Там может затесаться сочетание двух символов «|» подряд, а это закроет доступ всем!

Больше всякого от меня тут быстрее, чем тут: https://t.me/inmysight

55
9 комментариев

Привет, статья из 2014 года. Именно тогда я в последний раз слышал про Apache HTTP Server)

3
Ответить

Да, причём проблема нагрузки скорее всего из-за этого (не считая прокладки между стулом и компьютером). А защита разве что от честных ботов, как забор на даче. И, возможно, от поисковых систем: если сайт никто не найдёт, то не будет и нагрузки!

Ответить

Теперь можете обновить дату - теперь в последний раз в 2024ом =))

Ответить

В чем проблема cloudflare использовать?

Ответить

тем что половина юзеров сразу же закрывают вкалдку

1
Ответить

Есть случаи, когда он избыточен, когда слишком дорого, когда ещё и нет возможности оплатить.

Ответить