2009-10-01 6 views
10

Loguję się przy każdej wizycie na mojej stronie i ustalam, czy gość jest człowiekiem. Przeszukałem internet i znalazłem wiele interesujących pomysłów, jak wykryć, czy odwiedzający jest człowiekiem.Jak wykryć, czy odwiedzający jest człowiekiem, a nie pająkiem?

  1. jeśli użytkownik jest zalogowany i przeszły CAPTCHA
  2. wykrywanie zdarzeń myszy
  3. wykrycie, czy użytkownik ma przeglądarkę [agenta użytkownika]
  4. wykrywające kliknięć myszką [jak pójdę na ten temat?]

Czy istnieją inne bezpieczne sposoby wykrywania, czy odwiedzający jest człowiekiem?

+34

Zapytaj, ile ma nóżek. –

+0

Niezły, Nick. Uwielbiam humor ... +1 – pixelbobby

+0

- Merci, amigos! –

Odpowiedz

10

Musisz rozróżnić dobrze trzymane w prawo roboty, a także, wstrętne, pirackie roboty.

Ładne roboty będą czytać metatag "Roboty" i będą zgodne z Twoimi zasadami. "brak indeksu" to grzeczny sposób na odmówienie którejkolwiek z ich usług.

Złośliwe roboty z drugiej strony będą fałszować dowolne "UserAgent" i podobne nagłówki.

Captchas to prawdopodobnie najlepsza metoda, ale mogą P * ss wyłączyć inne roboty, jeśli są używane.

Jedna z podstępnych metod, jaką widziałem, to posiadanie linku rekursywnego jako pierwszego linku na stronie, który wyśle ​​robota do pętli. Innym jest posiadanie linku do strony, której nie lubisz jako pierwszego linku na stronie, aby odwrócić uwagę robotów. Oba te powiązania można z łatwością uczynić "niewidocznymi" dla środków na bazie mięsa.

+5

+1 dla agentów mięsnych. –

0

Uczyń użytkownika niezadowolonym z pytania typu "Co to jest 3 + 5?"

+0

Lepiej zapytaj: kim jesteś? kto cię stworzył? ... lol – eglasius

+0

Nie zgadzam się z tym, ponieważ mogłoby to oczywiście zakłócić komfort użytkownika. to wystarczający ból, po prostu wypełnienie captcha. Jeśli jednak nie ma to dla ciebie znaczenia, to z pewnością będzie to rozwiązanie. – pixelbobby

+0

Zapytał, czy są jakieś inne sposoby, prawda? lol –

8

Najbardziej niezawodnym sposobem wykrywania pająków jest adres IP. Typowe pająki używają kilku powszechnie znanych adresów IP. http://www.iplists.com/nw/

+0

Szkoda, że ​​ta lista nie została zaktualizowana, na przykład nie wspomniano o BING! Jednak jest to dobry początek, chyba. – MyDaftQuestions

0

Pamiętaj, że cokolwiek robisz, utrudniasz zautomatyzowany proces, nie oznacza to, że całkowicie temu zapobiegasz.

Jeśli chodzi o zdarzenia myszy, są to rzeczy, które zdarzają się po stronie klienta, więc dodawałbyś tylko informacje do żądania.

2

Powinieneś sprawdzić właściwość użytkownika. Prawdopodobnie możesz to osiągnąć w języku C#.

Na przykład HttpContext.Current.Request..., a następnie zapytaj o klienta użytkownika. Może to dać ci coś w stylu crawler.google lub co masz, więc możesz zbudować własną listę, by sprawdzić i zwrócić wynik.

+1

Złośliwe lub niewłaściwie działające boty będą podszywać się pod Internet Explorera lub firefox, co spowoduje, że ta metoda będzie nieopłacalna. –

+5

dobrze węgla w hodowli dla nich! – pixelbobby

+1

@ Czas na to pytanie: http://stackoverflow.com/questions/233192/detecting-stealth-web-crawlers –

0

Za pomocą formularzy można użyć javascript zmienić działanie formularza, aby wskazać prawdziwy adres URL. To odfiltruje każdego bota, który nie renderuje stron z javascript. Możesz mieć wiele przycisków przesyłania, w których tylko jeden z nich naprawdę działa, a następnie ukrywasz całą resztę za pomocą css. Boty nie będą wiedzieć, które kliknąć pierwszy. Jeśli kiedykolwiek otrzymasz kliknięcie z jednego z fałszywych przycisków, to wiesz, że masz bota.

0

Albo użyj Captcha, albo użyj Javascript do sprawdzenia poprawności. Ogromny procent botów nie ocenia JavaScript.

2

Jeśli zajmujesz się głównie sprawdzaniem formularzy ... Sugeruję, aby Akismet - bezpłatna usługa wordpress do łapania spamu.Pracuje bardzo dobrze.

Jeśli próbujesz zaoszczędzić serwerowi trochę przepustowości ... to pytanie jest zupełnie inne i prawdopodobnie podjąłbym inną drogę, jak zapobieganie łączeniu na gorąco.

To powiedziawszy, żadne rozwiązanie nie jest idealne, ale powinieneś próbować trzymać się tego, który zapewnia minimalny poziom komfortu, a użytkownikom maksimum. Wszystko zależy od użytkowników.

1

Jeśli zjeżdżasz trasą Captcha, zawsze możesz użyć niewidzialnego Captcha.

Zasadniczo utwórz formant wejściowy z etykietą mówiącą 5 + 2, a następnie za pomocą javascript rozwiąż ten problem i wprowadź wartość w polu tekstowym, a następnie ukryj pole tekstowe. Prawie wszystkie pająki nie mogą uruchamiać Javascript, każdy normalny użytkownik nie będzie nawet wiedzieć, że tak się dzieje, a każdy użytkownik bez JavaScript widzi pole do wypełnienia.

Google Analytics działa również na JS, więc możesz go po prostu użyć?

1

Możesz zajrzeć do HttpCapabilitiesBase Class, gdzie znajdziesz pomoc dotyczącą pełnych właściwości, których możesz używać, a osoby przeglądające Twoją witrynę nie zauważą.

Na przykład: przeglądarka, robot indeksujący i może pliki cookie. Jest mnóstwo sposobów, ale wymaga to trochę pracy z twojej strony.

1

Ponieważ jest to pytanie dotyczące rejestrowania odwiedzin strony, myślę, że wykorzystanie captcha jest inwazyjne. Nie możesz kazać każdemu odwiedzającemu wypełnić captcha lub logowania przed korzystaniem z witryny.

Czy chcesz całkowicie zablokować pająki lub po prostu zignorować je w dziennikach?

Google Analytics to dobry przykład ignorowania botów dzięki obsłudze skryptów JavaScript.

To może być Twoje rozwiązanie. Aby wysłać żądanie do serwera, który zarejestrował trafienie strony, potrzebujesz zdarzenia związanego z ładowaniem.

Można nawet poczekać na ruchy myszy, zanim zarejestruje trafienie.

0

Możesz bardzo dobrze wykrywać znane roboty/roboty używając ciągów agenta użytkownika. "złe boty" wymagają rozwiązania typu honeypot lub podobnego rozwiązania. Oba opisane w moim odpowiedź tutaj:

Detecting honest web crawlers

IP mogą zostać zmienione i nie są wiarygodne.

Widzimy również, że boty (dobre i złe) nie obsługują javascript.

Powiązane problemy