2008-12-04 11 views
15

Potrzebuję napisać kod, aby przeanalizować, czy dany użytkownik na naszej stronie jest bota. Jeśli to bot, podejmiemy określone działanie. Patrzenie na User Agent nie jest czymś, co odnosi sukcesy tylko dla przyjaznych botów, ponieważ możesz określić dowolnego agenta użytkownika w bocie. Jestem po zachowaniu nieprzyjaznych botów. Różne pomysły jaki miałem do tej pory są:Programowa detekcja botów

  • Jeśli nie masz identyfikatora przeglądarki
  • Jeśli nie masz identyfikatora sesji
  • stanie pisać cookie

Oczywiście, są przypadki, w których prawowity użytkownik będzie wyglądał jak bot, ale to jest w porządku. Czy istnieją inne programowe sposoby wykrywania bota lub wykrycia czegoś, co wygląda jak bot?

+1

Przyzwoity bot będzie prawdopodobnie w stanie mieć wszystkie te rzeczy, które zaproponowałeś. To system, który będzie wyglądał jak zwykła przeglądarka lub będzie miał unikalną nazwę. Będą mogli pisać pliki cookie, a także mieć sesję. –

+0

Napisałem bota, który oszukuje wszystkie trzy. Obsługa plików cookie i identyfikatorów przeglądarki nie jest trudna. – epochwolf

+0

Zrobić wydarzenie myszy? Boty nie mają myszy. – r4ge

Odpowiedz

2

Można powiedzieć, że to jest w porządku, że niektórzy użytkownicy pojawiają się jako boty zatem

Większość botów nie uruchomić JavaScript. Użyj javascript do wykonania połączenia typu Ajax, takiego jak na serwerze, który identyfikuje ten adres IP jako NonBot. Przechowuj go przez określony czas, aby zidentyfikować przyszłe połączenia z tego adresu IP jako dobrych klientów i zapobiec dalszym marnotrawnym wywołaniom JavaScript.

2

Prosty test jest javascript:

<script type="text/javascript"> 
document.write('<img src="/not-a-bot.' + 'php" style="display: none;">'); 
</script> 

nie-a-bot.php może dodać coś do sesji do flagi, że użytkownik nie jest bot, a następnie powrócić do pojedynczego piksela gif.

Adres URL jest podzielony w celu ukrycia go przed bota.

+1

Jedyną trudnością jest to, że wielu użytkowników teraz wyłącza javascript, biorąc pod uwagę kwestie bezpieczeństwa. To niemal żartobliwe, że jednym z najprostszych sposobów sprawdzenia autentyczności. –

+9

Naprawdę? Po wyłączeniu javascript jest mnóstwo serwisów, które obecnie nie działają. Myślałem, że więcej użytkowników pracuje z javascript ON w miarę upływu czasu. –

+3

Podczas korzystania z przeglądarki Firefox mam najwięcej aktywnych noscriptów. Więc przejście do strony z taką konfiguracją oznaczałoby mnie jako bota od samego początku. –

8

Wyjaśnij, dlaczego chcesz wykluczyć boty i jak tolerancyjny jest błąd w klasyfikacji.

To znaczy, czy musisz wykluczyć każdego pojedynczego bota kosztem traktowania prawdziwych użytkowników, takich jak boty? Czy jest to w porządku, jeśli roboty indeksują Twoją witrynę, o ile nie mają wpływu na wydajność?

Jedynym sposobem na wykluczenie wszystkich botów jest zamknięcie witryny. Złośliwy użytkownik może dystrybuować swojego bota na tyle komputerów, że nie będzie w stanie odróżnić ich ruchu od prawdziwych użytkowników. Sztuczki takie jak JavaScript i CSS nie powstrzymają określonego agresora.

Jeśli "szczęśliwe medium" jest zadowalające, jedną lewą, która może być pomocna, jest ukrycie łączy za pomocą CSS, tak aby nie były widoczne dla użytkowników w przeglądarce, ale nadal są w kodzie HTML. Każdy agent korzystający z jednego z tych "trucizn" to bot.

+7

Jeśli użytkownik miał zainstalowany jakiś akcelerator sieciowy, może nadal odwiedzać niewidoczne łącza, jeśli akcelerator sieciowy nie był wyjątkowo inteligentny. – Kibbee

8

Agenci użytkownika mogą zostać sfałszowani. Captchas zostały złamane. Prawidłowe pliki cookie mogą być wysyłane z powrotem do serwera za pomocą żądań strony. Autentyczne programy, takie jak Adobe Acrobat Pro, mogą wejść i pobrać twoją witrynę w jednej sesji. Użytkownicy mogą wyłączyć JavaScript. Ponieważ nie ma standardowej miary "normalnego" zachowania użytkownika, nie można go odróżnić od bota.

Innymi słowy: nie można zrobić nic, jak tylko wprowadzić użytkownika w interaktywną rozmowę i mieć nadzieję, że zda test Turinga, ale znowu może to być naprawdę dobry bot.

0

To naprawdę dotyczy konkretnej strony witryny. Nie chcemy, aby bot przesyłający formularz b/c pomija śledzenie. Szczerze mówiąc, przyjazne boty, Google, Yahoo itd. Nie stanowią problemu, ponieważ zazwyczaj nie wypełniają formularza na samym początku.Jeśli podejrzewamy, że ktoś jest botem, możemy pokazać im obraz captcha lub coś podobnego ... Jeśli minęli, nie są botami, a formularz przesyła ...

Słyszałem takie rzeczy jak umieszczanie formularza w pamięci flash lub wysyłanie javascript, ale wolę nie uniemożliwić prawdziwym użytkownikom korzystania z witryny, dopóki nie podejrzewam, że to bot ...

0

Myślę, że twój pomysł z sprawdzaniem identyfikatora sesji będzie już są całkiem przydatne.

Inny pomysł: Można sprawdzić, czy są również pobierane zasoby osadzone.

Bota, który nie ładuje obrazów (np. W celu zaoszczędzenia czasu i przepustowości), powinien być odróżniany od przeglądarki, która zazwyczaj ładuje obrazy osadzone na stronie.

Takie sprawdzenie może jednak nie być odpowiednie jako kontrola w czasie rzeczywistym, ponieważ trzeba by przeanalizować dziennik serwera, który może być czasochłonny.

+0

IE i Firefox przynajmniej mają możliwość nie pobierania obrazów. –

+0

Safari ma również opcję wyłączania obrazów. – epochwolf

+2

Lynx. Nie zapomnij o Lynx. Którego nikt nie używa. Ale które * może * przesłać formularze. Tak ... – Brian

1

Dla każdej sesji na serwerze można określić, czy użytkownik w dowolnym momencie kliknął lub pisał zbyt szybko. Po podanej liczbie powtórzeń ustaw flagę "isRobot" na wartość true i zachowaj zasoby w tej sesji. Zwykle nie mówisz użytkownikowi, że został wykryty przez robota, ponieważ właśnie rozpoczął nową sesję w tej sprawie.

+0

To nie byłoby niezawodne, ponieważ wiele legalnych rozwiązań programowych istnieje automatycznie wypełnij formularze internetowe w imieniu użytkownika. – sep332

+0

Cóż, nic nie jest niezawodne, ale z drugiej strony wystarczy nieznacznie obniżyć QOS do tej sesji. Zrobilibyśmy to tylko po kilku stronach nieludzko szybkiego zachowania – krosenvold

0

Hej, dziękuję za wszystkie odpowiedzi. Myślę, że kombinacja kilku sugestii zadziała dobrze. Głównie ukryty element formularza, który razy wypełniał formę, i prawdopodobnie pomysł "połączenia zatrutego". Myślę, że obejmie to większość podstaw. Kiedy mówisz o botach, nie znajdziesz ich wszystkich, więc nie ma sensu myśleć, że ... Głupie roboty.

+0

No cóż, "głupie boty" z wyjątkiem Google'a - bez którego wiele stron w ogóle nie otrzymywałoby ruchu :) – Conceptdev

2

Oto pomysł:

Większość botów nie pobieraj CSS, JavaScript i obrazy. Oni po prostu analizują zawartość html.

Jeśli możesz śledzić sesję użytkownika, czy pobrać wszystkie powyższe dane, czy też nie, poprzez przekierowanie wszystkich żądań pobierania za pomocą skryptu, który rejestruje próby, można szybko zidentyfikować użytkowników, którzy pobierają tylko surowy html (zrobi to niewielu zwykłych użytkowników).

Powiązane problemy