Ограничаване на достъпа до сайта до ботове

Много уебмастъри (включително аз), за да ускорят индексирането на страниците от търсачките, добавят връзки към страниците на своите сайтове в Twitter и Facebook. Някои го правят ръчно, някои с помощта на програми и услуги, като добавят RSS емисии и т.н.

Резултатът е истински mini-DDoS, когато десетки и стотици страници са поискани от вашия сървър от тези ботове само за няколко секунди. Освен това, искам да отбележа, че тези ботове не дават никаква полза, освен натоварването на вашия сървър.

Но това е всичко, както се казва, "не е основното". Основното е, че по време на подробен мониторинг на регистрационните файлове беше разкрит фактът на голям брой заявки от "леви" ботове. Нямаше смисъл да ги забраняваме чрез IP, защото много от тях често го променяха. И тогава намерих решение, което все още е правилно и надеждно спасява сайтовете ми от много затъващи ботове и съответно значително намалява натоварването на сървъра.

Файлът Htaccess е създаден в основната папка на сайта със следното съдържание:


ред разрешават, отричат
позволи от всички

# Следва списък с потребителски агенти, до които отказваме достъп

SetEnvIfNoCase Потребителски агент JS-Kit bad_bot
SetEnvIfNoCase Потребителски агент PostRank bad_bot
SetEnvIfNoCase Потребителски агент Python-urllib bad_bot
SetEnvIfNoCase Потребителски агент UnwindFetchor bad_bot
SetEnvIfNoCase Потребителски агент facebookexternalhit bad_bot
SetEnvIfNoCase Потребителски агент TweetmemeBot bad_bot
SetEnvIfNoCase Потребителски агент Butterfly bad_bot
SetEnvIfNoCase Потребителски агент MFE_expand bad_bot
SetEnvIfNoCase Потребителски агент Java bad_bot
SetEnvIfNoCase Потребителски агент Summify bad_bot
SetEnvIfNoCase Потребителски агент MetaURI bad_bot
SetEnvIfNoCase Потребителски агент FlipboardProxy bad_bot
SetEnvIfNoCase Потребителски агент ScribdReader bad_bot
SetEnvIfNoCase Потребителски агент RockMelt bad_bot
SetEnvIfNoCase Потребителски агент InAGist bad_bot
SetEnvIfNoCase Потребителски агент NING bad_bot
SetEnvIfNoCase Потребителски агент TweetedTimes bad_bot
SetEnvIfNoCase Потребителски агент PaperLiBot bad_bot
SetEnvIfNoCase Библиотека на потребителски агент bad_bot
SetEnvIfNoCase Потребителски агент Ezooms bad_bot
SetEnvIfNoCase Потребителски агент strawberryj bad_bot
SetEnvIfNoCase Потребителски агент Scooper bad_bot
SetEnvIfNoCase Потребителски агент Ahrefs bad_bot
SetEnvIfNoCase Потребител-агент Spider bad_bot
SetEnvIfNoCase Потребителски агент Няма bad_bot
SetEnvIfNoCase Потребителски агент EventMachine bad_bot
Потребителски агент SetEnvIfNoCase aiHitBot bad_bot
SetEnvIfNoCase Потребителски агент SolomonoBot bad_bot
SetEnvIfNoCase Потребителски агент SearchBot bad_bot
SetEnvIfNoCase Потребителски агент Wget bad_bot
SetEnvIfNoCase Crawler на потребителски агент bad_bot

Поръчай Разреши, Откажи
Позволете от всички
Отричане от env = bad_bot

Ако някой вече има .htaccess файл, просто добавете тези данни в края на файла. Много е лесно да редактирате и добавяте други ботове. Ще ви покажа примера на бота на Bing - от търсачката на Microsoft. В дневниците виждаме извиквания към страниците на сайта от следния потребителски агент: Mozilla/5.0 (съвместим; bingbot/2.0; + http: //www.bing.com/bingbot.htm)

Просто вземаме парче от името на бота от тези данни, ще го имаме "bingbot" и добавяме следния ред към нашия списък във файла .htaccess:

Ако потребителският агент, за когото искате да откажете достъп до сайта, има име, което се състои от две думи, тогава просто трябва да ги поставите в кавички. Например сайт се пита от бот с потребителски агент:

Пишем следната комбинация в .htaccess:

Въпреки че по същество може просто да се напише:

Резултатът ще бъде същият. Но понякога случаят с двойно име може да ви бъде полезен. Също така искам да ви предупредя, че не трябва да правите записи като този в .htaccess:

Защото в първия случай роботите на Google и Yandex няма да имат достъп до сайта (в техния потребителски агент има думата „бот“ - Googlebot, YandexBot), а във втория случай хората, чийто браузър е даден от Потребителският агент "Mozilla" няма да има достъп до сайта и между другото роботите на Yandex и Google също имат "Mozilla" в потребителския агент.

Следователно, ако искате да забраните някакъв досаден бот, изберете от неговия потребителски агент част от името, което другите ботове нямат. И разбира се, експериментирайте. В интернет има достатъчно информация за този метод на защита.

Просто, ако мога така да кажа, реших да споделя моя опит. По този начин успях да премахна доста значителен товар от сайтовете си. Може би за някой ще бъде полезно.