Jak można wykryć boty wyszukiwarek za pomocą PHP?
php
web-crawler
bots
przerażający
źródło
źródło
strpos
wracaFALSE
po porażce. Jest jednak szybszy i bardziej wydajny (bez przetwarzania wstępnego i przechowywania O (m)).Używam następującego kodu, który wydaje się działać dobrze:
aktualizacja 16-06-2017 https://support.google.com/webmasters/answer/1061943?hl=en
dodano mediapartners
źródło
Sprawdź
$_SERVER['HTTP_USER_AGENT']
niektóre z wymienionych tutaj ciągów:http://www.useragentstring.com/pages/useragentstring.php
A dokładniej dla robotów:
http://www.useragentstring.com/pages/useragentstring.php?typ=Crawler
Jeśli chcesz -powiedzieć- rejestrować liczbę odwiedzin najpopularniejszych robotów wyszukiwarek, możesz użyć
źródło
Możesz sprawdzić, czy jest to wyszukiwarka z tą funkcją:
Następnie możesz go używać tak:
źródło
Używam tego do wykrywania botów:
Dodatkowo używam białej listy do blokowania niechcianych botów:
Niechciany bot (= użytkownik fałszywie dodatni) jest następnie w stanie rozwiązać captcha, aby odblokować się na 24 godziny. Ponieważ nikt nie rozwiązuje tej captcha, wiem, że nie generuje ona fałszywych alarmów. Więc wykrywanie bota wydaje się działać idealnie.
Uwaga: moja biała lista jest oparta na pliku robots.txt Facebooka .
źródło
)
w pierwszym fragmencie kodu.Ponieważ każdy klient może ustawić klienta użytkownika tak, jak chce, szukanie „Googlebota”, „bingbota” itp. To tylko połowa pracy.
Druga część to weryfikacja adresu IP klienta. W dawnych czasach wymagało to prowadzenia list adresów IP. Wszystkie listy znalezione w Internecie są nieaktualne. Najlepsze wyszukiwarki oficjalnie obsługują weryfikację przez DNS, jak wyjaśniono w Google https://support.google.com/webmasters/answer/80553 i Bing http://www.bing.com/webmaster/help/how-to-verify -bingbot-3905dc26
Najpierw wykonaj odwrotne wyszukiwanie DNS adresu IP klienta. W przypadku Google oznacza to nazwę hosta pod googlebot.com, w przypadku Bing pod search.msn.com. Następnie, ponieważ ktoś mógłby ustawić taki zwrotny DNS na swoim IP, musisz zweryfikować to za pomocą wyszukiwania DNS do przodu na tej nazwie hosta. Jeśli wynikowy adres IP jest taki sam jak adres IP odwiedzającego witrynę, na pewno jest to robot z tej wyszukiwarki.
Napisałem bibliotekę w Javie, która wykonuje te testy za Ciebie. Zapraszam do przeniesienia go do PHP. Jest na GitHub: https://github.com/optimaize/webcrawler-verifier
źródło
Używam tej funkcji ... część wyrażenia regularnego pochodzi z prestashop, ale dodałem do niego więcej bota.
W każdym razie uważaj, aby niektóre boty używały przeglądarki, takiej jak agent użytkownika, do fałszowania swojej tożsamości
(mam wiele rosyjskich adresów IP, które mają takie zachowanie na mojej stronie)
Charakterystyczną cechą większości botów jest to, że nie zawierają one żadnych plików cookie, więc nie są do nich dołączone żadne sesje.
(Nie wiem jak, ale to z pewnością najlepszy sposób na ich śledzenie)
źródło
Możesz przeanalizować
$_SERVER['HTTP_USER_AGENT']
klienta użytkownika ( ) lub porównać adres IP klienta ($_SERVER['REMOTE_ADDR']
) z listą adresów IP robotów wyszukiwarek .źródło
Użyj biblioteki open source Device Detector, która oferuje funkcję isBot (): https://github.com/piwik/device-detector
źródło
To byłby idealny sposób na osłonięcie się przed pająkami. Pochodzi ze skryptu open source o nazwie [YACG] - http://getyacg.com
Potrzebuje trochę pracy, ale zdecydowanie droga do zrobienia.
źródło
Zrobiłem do tego jedną dobrą i szybką funkcję
Obejmuje to 99% wszystkich możliwych botów, wyszukiwarek itp.
źródło
Używam tego kodu, całkiem nieźle. Będziesz bardzo łatwo wiedzieć, że agenci użytkownika odwiedzili Twoją witrynę. Ten kod otwiera plik i zapisuje user_agent w pliku. Możesz codziennie sprawdzać ten plik, przechodząc do
yourdomain.com/useragent.txt
i wiedząc o nowych user_agents i umieszczając je w klauzuli warunku if.To jest zawartość useragent.txt
źródło
W 100% działający wykrywacz botów. Działa pomyślnie na mojej stronie internetowej.
źródło
Jeśli naprawdę potrzebujesz wykryć boty wyszukiwarki GOOGLE, nigdy nie powinieneś polegać na adresie „user_agent” lub „IP”, ponieważ „user_agent” można zmienić i zgodnie z tym, co powiedział Google: Weryfikacja Googlebota
Oto mój przetestowany kod:
W tym kodzie sprawdzamy „hostname”, który powinien zawierać „googlebot.com” lub „google.com” na końcu „hostname”, co jest bardzo ważne, aby sprawdzić dokładną domenę, a nie subdomenę. Mam nadzieję, że Ci się podoba ;)
źródło
W przypadku Google używam tej metody.
Kredyty: https://support.google.com/webmasters/answer/80553
źródło
źródło