Блокировка не нужных ботов через .htaccess

butik

Проверенные
Сообщения
98
Реакции
36
Баллы
5,515
Здравствуйте.
Форуму облегчить работу задумал через блокировку ненужных ботов, которые проходят постоянно по страницам ради сбора seo статистики (например semrush и т.д.)

На одном из своих блогов использую список правил для блокировки ненужных поисковиков:
Код:
RewriteCond %{REQUEST_URI} !^/403.php$
RewriteCond %{HTTP_USER_AGENT} .*Slurp.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Ask\sJeeves.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*HP\sWeb\sPrintSmart.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*HTTrack.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*IDBot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Indy\sLibrary.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ListChecker.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*MSIECrawler.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*NetCache.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Nutch.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*RPT-HTTPClient.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*rulinki\.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Twiceler.* [OR]
#RewriteCond %{HTTP_USER_AGENT} .*WebAlta.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Webster\sPro.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*www\.cys\.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Wysigot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Yeti.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Accoona.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CazoodleBot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*CFNetwork.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ConveraCrawler.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*DISCo.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Download\sMaster.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*FAST\sMetaWeb\sCrawler.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Flexum\sspider$ [OR]
RewriteCond %{HTTP_USER_AGENT} .*Gigabot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*HTMLParser.* [OR]
#RewriteCond %{HTTP_USER_AGENT} .*ia_archiver.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*ichiro.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*IRLbot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Java.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*km\.ru\sbot$ [OR]
RewriteCond %{HTTP_USER_AGENT} .*kmSearchBot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*libwww-perl.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Lupa\.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*LWP::Simple.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*lwp-trivial.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Missigua.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*MJ12bot.* [OR]
#RewriteCond %{HTTP_USER_AGENT} .*msnbot.* [OR]
#RewriteCond %{HTTP_USER_AGENT} .*msnbot-media.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Offline\sExplorer.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*OmniExplorer_Bot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*PEAR.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*psbot.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Python.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*rulinki\.ru.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*SMILE.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Speedy.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Teleport\sPro.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*TurtleScanner.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*voyager.* [OR]
#RewriteCond %{HTTP_USER_AGENT} .*Webalta.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebCopier.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebData.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*WebZIP.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Wget.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Yanga.* [OR]
RewriteCond %{HTTP_USER_AGENT} .*Yeti.*
RewriteRule .* /403.php [F]

# BAN ненужным поисковым ботам
RewriteCond %{HTTP_USER_AGENT} ^.*Wget
RewriteCond %{HTTP_USER_AGENT} ^.*HTMLParser [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*psbot [OR]
#RewriteCond %{HTTP_USER_AGENT} ^.*msn [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*liveinternet [OR]
#RewriteCond %{HTTP_USER_AGENT} ^.*WebAlta [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Yanga [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Twiceler [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Flexum [OR]
#RewriteCond %{HTTP_USER_AGENT} ^.*Aport [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Slurp [OR]
#RewriteCond %{HTTP_USER_AGENT} ^.*msnbot [OR]
#RewriteCond %{HTTP_USER_AGENT} ^.*ia_archiver [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*libwww-perl
RewriteRule ^(.*)$ - [F,L]
Правила скопированы на какомто ресурсе давно, некоторые строки закоментированы #

Как думаете, целесообразно применить список для xemforo движка (в начало .htaccess) ?

Поискал, оказывается по соседству есть еще тема защита через htaccess
 
Последнее редактирование:
Список не маленький))
Интересная часть блока по юзерагентам
Код:
(80legs|360Spider|Aboundex|Abonti|Acunetix|^AIBOT|^Alexibot|Alligator|AllSubmitter|Apexoo|^asterias|^attach|^BackDoorBot|^BackStreet|^BackWeb|Badass|Bandit|Baid|Baiduspider|^BatchFTP|^Bigfoot|^Black.Hole|^BlackWidow|BlackWidow|^BlowFish|Blow|^BotALot|Buddy|^BuiltBotTough|^Bullseye|^BunnySlippers|BBBike|^Cegbfeieh|^CheeseBot|^CherryPicker|^ChinaClaw|^Cogentbot|CPython|Collector|Copier|^CopyRightCheck|^cosmos|^Crescent|CSHttp|^Custo|^Demon|^Devil|^DISCo|^DIIbot|discobot|^DittoSpyder|Download.Demon|Download.Devil|Download.Wonder|^dragonfly|^Drip|^eCatch|^EasyDL|^ebingbong|^EirGrabber|^EmailCollector|^EmailSiphon|^EmailWolf|^EroCrawler|^Exabot|^Express|Extractor|^EyeNetIE|FHscan|^FHscan|^flunky|^Foobot|^FrontPage|GalaxyBot|^gotit|Grabber|^GrabNet|^Grafula|^Harvest|^hloader|^HMView|^HTTrack|httrack|HTTrack|htmlparser|^humanlinks|^IlseBot|Image.Stripper|Image.Sucker|imagefetch|^InfoNaviRobot|^InfoTekies|^Intelliseek|^InterGET|^Iria|^Java|Java|^Jakarta|^JennyBot|^JetCar|JikeSpider|^JOC|^JustView|^Jyxobot|^Kenjin.Spider|^Keyword.Density|libwww|^larbin|LeechFTP|LeechGet|^LexiBot|^lftp|^libWeb|^likse|^LinkextractorPro|^LinkScan|^LNSpiderguy|^LinkWalker|msnbot|MSIECrawler|MJ12bot|MegaIndex|^Magnet|^Mag-Net|^MarkWatch|Mass.Downloader|masscan|^Mata.Hari|^Memo|^MIIxpc|^NAMEPROTECT|^Navroad|^NearSite|^NetAnts|^Netcraft|^NetMechanic|^NetSpider|^NetZIP|^NextGenSearchBot|^NG|^NICErsPRO|^niki-bot|^NimbleCrawler|^Ninja|^Nmap|nmap|^NPbot|Offline.Explorer|Offline.Navigator|OpenLinkProfiler|^Octopus|^Openfind|^OutfoxBot|Pixray|probethenet|proximic|^PageGrabber|^pavuk|^pcBrowser|^Pockey|^ProPowerBot|^ProWebWalker|^psbot|^Pump|python-requests|^QueryN.Metasearch|^RealDownload|Reaper|^Reaper|^Ripper|Ripper|Recorder|^ReGet|^RepoMonkey|^RMA|scanbot|^Stripper|^Sucker|Siphon|Siteimprove|^SiteSnagger|SiteSucker|^SlySearch|^SmartDownload|^Snake|^Snapbot|^Snoopy|Sosospider|^sogou|spbot|^SpaceBison|^spanner|^SpankBot|Spinn3r|^Sqworm|Sqworm|Stripper|Sucker|^SuperBot|SuperHTTP|^SuperHTTP|^Surfbot|^suzuran|^Szukacz|^tAkeOut|^Teleport|^Telesoft|^TurnitinBot|^The.Intraformant|^TheNomad|^TightTwatBot|^Titan|^True_Robot|^turingos|^TurnitinBot|^URLy.Warning|^Vacuum|^VCI|^VoidEYE|^WebAuto|^WebBandit|^WebCopier|^WebEnhancer|^WebFetch|^Web.Image.Collector|^WebLeacher|^WebmasterWorldForumBot|WebPix|^WebReaper|^WebSauger|Website.eXtractor|^Webster|^WebStripper|^WebWhacker|^WebZIP|Whack|Whacker|^Widow|Widow|WinHTTrack|^WISENutbot|WWWOFFLE|^WWWOFFLE|^WWW-Collector-E|^Xaldon|^Xenu|Zade|^Zeus|ZmEu|^Zyborg|SemrushBot|WebFuck^)
 
Не в списке дело (он далеко не актуален под наши ресурсы), дело в реализации - на map и однострочное правило для виртсервера в nginx.conf
 
  • Мне нравится
Реакции: Hope
Пример блокировки, как через nginx - можно?
Пример написан по ссылке из поста #2 - map в главном конфиге + один if в виртуальном. Вариант
if ($http_user_agent ~* "^WebCopier"){ return 403; }
более костылен:
  1. map работает быстрее, чем if, и чем больше будет список и трафик, тем больше это будет заметно. На каждый if nginx будет строить две ветки конфига, где if true и где if false. Если это будет 100 ботов, то получится 200 веток, хоть описывать каждый бот отдельным ифом или объединять их через | (nginx будет раскрывать условия в линейный вид).
  2. регулярки сами по себе тяжелые операции. Нефиг плодить сущности без необходимости.
  3. а если это не единичный конфиг, а таких конфигов десяток? Появляются сложности с поддержкой всего этого дела.
Поэтому, через map определяем переменную
Код:
map $http_user_agent $bad_bot {
        default         0;
        ~*malicious     1;
        ~*backdoor      1;
        ~*netcrawler    1;
        ~Antivirx       1;
        ~Arian          1;
        ~webbandit      1;
}
, а через один единственный if в конфиге баним бота.
Код:
if ($bad_bot) { return 444; }

Оставлю это здесь но вообще на map можно расписать много чего полезного, например строить условия по трем-четырем переменным без нагромождения костылей из ифов.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу