Walka z bot-wiatrakami…
Kategoria: php/db
Pierwszy poważny serwis (nawet ten blog dotychczas nie był przeze mnie traktowany poważnie) pokazał dziwne przypadłości niektórych botów-spiderów. Co prawda są pewne standardy, którymi powinien kierować się każdy programista bota, ale wiadomo - standardy są po to, żeby każdy tworzył swoje. Taki homenet na przykład… 10 wywołań serwisu na sekundę - minuta w minutę! robots.txt - nawet nie sprawdził czy jest… rel=”nofollow” - to do mnie?
W związku z w/w problemem postanowiłem powalczyć z botami - wiatrakami. Przede wszystkim duża liczba odsłon - ze względu na ograniczone możliwości kontroli (tylko IP + przeglądarka), ograniczenie dotyczy albo połączenia (max połączeń na minutę), albo samego IP (więcej połączeń oczywiście). Takie rozwiązanie ma sens tylko dla małych i średnich serwisów - google/youtube nie może blokować zbyt wielu wejść z jednego IP (akademiki, dzielone łącza itp).
Oczywiście serwis reaguje “sensownie” na podejrzenie o bota - dla bota zwraca 503 (więc i tak wróci na stronę), wraz z linkiem do potwierdzenia “człowieczeństwa”. Które odblokowuje na kilka minut sprawdzanie, czy odwiedzający jest botem (ale to już na sesji - skoro potwierdził że nie jest botem, z sesją nie będzie problemów).
Jakie macie rozwiązania na boty które podbierają wam dane z serwisu?


2008-05-15 11:55
Ja prawdę mówiąc nie walczyłem nigdy z botami z takiego powodu, iż uważam ich bardziej za przyjaciół, niż wrogów.
Jednak co do rozwiązań to poszukałbym w Internecie list IP, jakie posiadają popularne boty (są gdzieś takie) i dla tych IP stosował mocniejsze kryteria (np. mniejsza dozwolona liczba połączeń na minutę).
Część botów nie robi sobie niczego z robots.txt i rel=”nofollow”, ale mimo wszystkie przedstawia się jako robot. Dlatego kontrolę User-agent też bym zrobił. W frameworku KohanaPHP jest gotowa funkcja is_robot(), nie trzeba więc pisać samemu tylko zaadaptować sobie stamtąd.
2008-05-15 12:10
Hm.. innego rodzaju boty mam na myśli - ja nie mam nic przeciwko botom google, msn, yahoo i innych - ale są “content stealery”, które pobierają treść strony i później uruchamiają kopię - dodatkowo robią to metodą “brute” (czyli np 30 pobrań strony na sekundę) - chodzi o blokowanie tego typu zachowań. Większość tego typu rzeczy jednocześnie podaje się za IE lub FF. A rel=”nofollow” można w ich przypadku wstawić między bajki