Walka z bot-wiatrakami…
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?
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.