Deny bad_bot czyli blokowanie botów
Najlepiej znane boty (także: spiders, roboty) to te od Google czy Bing oraz innych wyszukiwarek. Skanują one serwisy internetowe i indeksują, aby potem w wynikach wyszukiwania dany serwis mógł się pojawić.
Wykluczenie dostępu botów dla danego serwisu (sklepu internetowego czy strony WWW) oznacza więc, że nie istnieje się w wyszukiwarkach.
Są oczywiście sytuacje, kiedy chcemy udostępnić treść tylko ludziom, a robotom i wyszukiwarkom nie. Ale blokowanie botów może się okazać nieskuteczne, bo nagle pojawi się nowy bot, którego nie blokujemy… Lepiej zastosować inne rozwiązania (jak choćby założyć hasło)
Boty mogą powodować szkody
Jedną z nich może być mocne obciążenie serwera, a zmasowany atak botów może wyglądać jak atak DDoS.
Pierwsza myśl, jaka przychodzi do głowy i często się sprawdza w nagłych przypadkach, gdy sprawa dotyczy jednego lub kilku botów to przeczesanie plików logów (access log), wyciągnięcie „atakujących” botów i zablokowanie ich po stronie serwera (np. w pliku .htaccess).
awk -F'"' '/GET/ {print $6}' /path_to_webserver_log/file_name.log | cut -d' ' -f1 | sort | uniq -c | sort -rn
The output provides all the USER_AGENTS that crawl your website and for how many times. Add in the .htaccess file any of them and in a month the bandwidth will decrease a lot.
Ale gdy dopadnie nas horda złych botów to z pomocą przychodzi internet i GitHub, na którym ktoś pieczołowicie opracował listę złych botów. Wystarczy przenieść do swojego pliku htaccess i pozbywamy się problemu od blisko 2 tysięcy botów. Szkoda, że lista nie była ostatnio aktualizowana…
https://gist.github.com/dvlop/fca36213ad6237891609e1e038a3bbc1
Lista została też powielona (fork) ale nie sprawdzałem, czy ktoś aktualizuje…
https://gist.github.com/dvlop/fca36213ad6237891609e1e038a3bbc1/forks
Zła wiadomość, że lista chyba obecnie ma dwa lata… Jej przydatność jest więc watpliwa, bo przez ten czas złych botów na pewno przybyło.
Co do zasady to w pliku htaccess definiujemy blokowanie tak:
# Start Bad Bot Prevention
<IfModule mod_setenvif.c>
# SetEnvIfNoCase User-Agent ^$ bad_bot
SetEnvIfNoCase User-Agent "^12soso.*" bad_bot
SetEnvIfNoCase User-Agent "^192.comAgent.*" bad_bot
...
SetEnvIfNoCase User-Agent "^Zyte.*" bad_bot
<Limit GET POST PUT>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>
</IfModule>
# End Bad Bot Prevention
Deny bad_bots
Prawdopodobnie twój dostawca serwera zna się lepiej na rzeczy i mają swoje gotowe listy. Być może są używane, wtedy (czasem) można je samodzielnie wyłączyć (jeśli jest taka potrzeba) przez kasowanie zmiennej, w której są przechowywane (trzeba ją znać z nazwy), np:
UnsetEnv bot_deny
Źródło: https://hostido.pl/baza-wiedzy/wpis/154/jak-odblokowac-nietypowe-boty-na-stronie
Jakie rozwiązanie wybrać?
Nie ma złotej odpowiedzi. Polecam w pierwszej kolejności skontaktować się z administratorem serwera (hostingu) – zwykle mają już gotowe rozwiązania a pomogą też przy nietypowym problemie.