Jakie są opcje wykrywania robotów internetowych, które nie chcą być wykrywane?
(Wiem, że techniki wykrywania aukcji pozwolą inteligentnemu programistowi stealth-crawlerów na stworzenie lepszego pająka, ale nie sądzę, żebyśmy kiedykolwiek byli w stanie zablokować inteligentne roboty, a tylko te, które popełniają błędy.)
Nie mówię o fajnych robotach, takich jak Googlebot i Yahoo! Slurp. Uważam bota za fajnego, jeśli:
- identyfikuje się jako bot w ciągu agenta użytkownika
- czyta plik robots.txt (i przestrzega go)
Mówię o złych robotach, chowających się za zwykłymi użytkownikami, wykorzystujących moją przepustowość i nigdy nie dając mi nic w zamian.
Istnieje kilka zapadni, które można zbudować zaktualizowaną listę (dzięki Chris, gs) :
- Dodanie katalogu tylko wymienionego (oznaczonego jako disallow) w pliku robots.txt,
- Dodanie niewidocznych linków (prawdopodobnie oznaczonych jako rel = "nofollow"?),
- style = "display: none;" na linku lub w kontenerze nadrzędnym
- umieszczony pod innym elementem o wyższym indeksie Z.
- wykryć, kto nie rozumie kapitalizacji,
- wykryć, kto próbuje wysyłać odpowiedzi, ale zawsze nie powiedzie się Captcha.
- wykrywa żądania GET do zasobów tylko POST
- wykryć odstęp między żądaniami
- wykryć kolejność żądanych stron
- wykryć, kto (konsekwentnie) żąda zasobów https przez http
- Wykryj, kto nie żąda pliku obrazu (w połączeniu z listą klientów użytkownika znanych przeglądarek obsługujących obrazy działa zaskakująco dobrze)
Niektóre pułapki byłyby uruchamiane zarówno przez „dobre”, jak i „złe” boty. możesz połączyć je z białą listą:
- To uruchamia pułapkę
- To żądanie
robots.txt
? - Nie uruchamia kolejnej pułapki, ponieważ był posłuszny
robots.txt
Jest jeszcze jedna ważna rzecz:
rozważ osoby niewidome korzystające z czytników ekranu: daj innym możliwość skontaktowania się z Tobą lub rozwiąż Captcha (bez obrazu), aby kontynuować przeglądanie.
Jakie istnieją metody automatycznego wykrywania robotów indeksujących, które próbują maskować się jako zwykli ludzie.
Aktualizacja
Pytanie nie brzmi: jak złapać każdego robota. Pytanie brzmi: jak zmaksymalizować szansę wykrycia robota.
Niektóre pająki są naprawdę dobre i właściwie analizują i rozumieją html, xhtml, css javascript, skrypt VB itp ...
Nie mam złudzeń: nie będę w stanie ich pokonać.
Zdziwiłbyś się jednak, jak głupie są niektóre roboty. Najlepszym przykładem głupoty (moim zdaniem) jest: rzutowanie wszystkich adresów URL na małe litery przed ich zażądaniem.
Jest też cała masa robotów, które po prostu „nie są wystarczająco dobre”, aby ominąć różne zapadnie.
źródło
Zobacz Project Honeypot - konfigurują pułapki na boty na dużą skalę (i mają DNSRBL ze swoimi adresami IP).
Używaj trudnych adresów URL i HTML:
W HTML możesz użyć wielu sztuczek z komentarzami, elementami CDATA, encjami itp:
źródło
Łatwym rozwiązaniem jest utworzenie linku i uczynienie go niewidocznym
Oczywiście powinieneś spodziewać się, że niektórzy ludzie, którzy patrzą na kod źródłowy, podążają za tym linkiem tylko po to, aby zobaczyć, dokąd prowadzi. Ale możesz przedstawić tym użytkownikom captcha ...
Oczywiście prawidłowe roboty również skorzystałyby z tego linku. Nie należy jednak implementować atrybutu rel = nofollow, ale poszukać znaku prawidłowego robota. (jak klient użytkownika)
źródło
Jedna rzecz, której nie wymieniłeś, a która jest powszechnie używana do wykrywania złych robotów.
Szybkość działania, dobre roboty sieciowe będą przerywać działania, aby nie zalewały witryny żądaniami. Złe zrobią jedną z trzech rzeczy:
Ponadto niektóre programy do przeglądania w trybie offline będą siorbać wiele stron, nie jestem pewien, jakiego rodzaju progu chcesz użyć, aby rozpocząć blokowanie według adresu IP.
Ta metoda będzie również przechwytywać programy lustrzane, takie jak fmirror czy wget.
Jeśli bot losuje przedział czasu, możesz sprawdzić, czy linki są przechodzone sekwencyjnie lub w pierwszej kolejności, lub możesz zobaczyć, czy bot przetwarza dużą ilość tekstu (jak w słowach do przeczytania) w zbyt krótki okres czasu. Niektóre witryny ograniczają również liczbę żądań na godzinę.
Właściwie to gdzieś usłyszałem pomysł, nie pamiętam gdzie, że jeśli użytkownik otrzyma za dużo danych w kilobajtach, może otrzymać captcha z prośbą o udowodnienie, że nie jest botem. Jednak nigdy nie widziałem tego zaimplementowanego.
Aktualizacja dotycząca ukrywania linkówJeśli chodzi o ukrywanie linków, możesz umieścić element div pod innym za pomocą CSS (umieszczając go na pierwszym miejscu w kolejności rysowania) i ewentualnie ustawiając kolejność z. Bot nie mógł tego zignorować bez przeanalizowania całego kodu javascript, aby sprawdzić, czy jest to menu. Do pewnego stopnia linki wewnątrz niewidocznych elementów DIV również nie mogą być ignorowane bez analizowania przez bot całego kodu javascript.
Doprowadzając ten pomysł do końca, niewywołany javascript, który mógłby potencjalnie pokazać ukryte elementy, mógłby oszukać podzbiór botów analizujących javascript. I nie jest to dużo pracy do wykonania.
źródło
Jedną z prostych metod wykrywania botów, o których słyszałem w przypadku formularzy, jest technika ukrytego wprowadzania danych. Jeśli próbujesz zabezpieczyć formularz, wprowadź dane wejściowe do formularza z identyfikatorem, który wygląda całkowicie legalnie. Następnie użyj css w zewnętrznym pliku, aby go ukryć. Lub jeśli jesteś naprawdę paranoikiem, skonfiguruj coś takiego jak jQuery, aby ukryć pole wprowadzania podczas ładowania strony. Jeśli zrobisz to dobrze, wyobrażam sobie, że robotowi byłoby bardzo trudno to rozgryźć. Wiesz, że te boty mają naturę wypełniania wszystkiego na stronie, zwłaszcza jeśli podasz swoje ukryte dane wejściowe identyfikator w stylu id = "fname" itp.
źródło
Właściwie nie jest łatwo nadążyć za dobrymi ciągami znaków agenta użytkownika. Wersje przeglądarek przychodzą i odchodzą. Wykonywanie statystyk dotyczących łańcuchów agentów użytkownika za pomocą różnych zachowań może ujawnić interesujące rzeczy.
Nie wiem, jak dalece można to zautomatyzować, ale przynajmniej jest to jedna rzecz różnicująca.
źródło
Nietestowane, ale tutaj jest ładna lista klientów użytkownika, z których można utworzyć wyrażenie regularne. Może cię tam dostać:
Zaczerpnięte z: http://perishablepress.com/press/2007/10/15/ultimate-htaccess-blacklist-2-compressed-version/
źródło
Możesz również sprawdzić skierowania. Żadne skierowanie nie mogło wzbudzić podejrzeń bota. Złe skierowanie oznacza, że z pewnością nie jest to przeglądarka.
Nie zrobiłbym tego. Możesz skończyć na czarnej liście Google dla black hat SEO :)
źródło
Obecnie pracuję dla firmy, która skanuje strony internetowe w celu ich klasyfikacji. Sprawdzamy również witryny pod kątem złośliwego oprogramowania.
Z mojego doświadczenia wynika, że najważniejszymi blokerami naszego robota sieciowego (który oczywiście korzysta z IE lub Firefox UA i nie przestrzega pliku robots.txt. Duh.) Są witryny celowo hostujące złośliwe oprogramowanie. Jest to uciążliwe, ponieważ witryna wraca następnie do człowieka, który musi ręcznie załadować witrynę, sklasyfikować ją i sprawdzić pod kątem złośliwego oprogramowania.
Mówię tylko, że blokując roboty sieciowe, stawiasz się w złym towarzystwie.
Oczywiście, jeśli są okropnie niegrzeczni i pochłaniają tony przepustowości, to inna historia, ponieważ masz dobry powód.
źródło
Ludzie zwracają się do szerokich robotów indeksujących, ale nie do robotów wyspecjalizowanych w Twojej witrynie.
Piszę „stealth crawlery” i jeśli są one budowane indywidualnie, żadna ilość pojemników z miodem lub ukrytych linków nie będzie miała żadnego wpływu - jedynym prawdziwym sposobem na wykrycie wyspecjalizowanych robotów jest sprawdzenie wzorców połączeń.
Najlepsze systemy wykorzystują AI (np. Linkedin), aby rozwiązać ten problem.
Najłatwiejszym rozwiązaniem jest zapisywanie parserów dziennika, które analizują połączenia IP i po prostu umieszczają je na czarnej liście lub obsługują captcha, przynajmniej tymczasowo.
np.
jeśli IP X pojawia się co 2 sekundy, łącząc się z
foo.com/cars/*.html
innymi stronami, ale nie z żadnymi innymi stronami - najprawdopodobniej jest to bot lub głodny użytkownik zaawansowany.Alternatywnie istnieją różne wyzwania javascript, które działają jako ochrona (np. System przeciwbotowy Cloudflare), ale są one łatwe do rozwiązania, możesz napisać coś niestandardowego i może to być wystarczająco odstraszające, aby nie było warte wysiłku dla robota.
Musisz jednak zadać pytanie, czy chcesz fałszywie pozytywnych użytkowników legalnych użytkowników i wprowadzić dla nich niedogodności, aby uniemożliwić ruch botów. Ochrona danych publicznych to niemożliwy paradoks.
źródło
Krótka odpowiedź: jeśli programista średniego poziomu wie, co robi, nie będziesz w stanie wykryć robota bez wpływu na prawdziwego użytkownika. Mając swoje informacje publicznie, nie będziesz w stanie obronić ich przed robotem ... to jak pierwsza poprawka :)
źródło