Lista adresów IP robotów Google
Poza zwykłymi użytkownikami, którzy odwiedzają nasze strony istnieją jeszcze roboty, które w większości przypadków analizują naszą stronę pod względem utworzenia
danych do wyszukiwarek. Czasem chcemy wiedzieć czy wchodząca osoba to żywa istota czy też jakiś automat.
Przedstawię w jaki sposób zrobić wykrywanie robotów google (googlebot) i zebrać listę ich adresów IP.
Pod zmienną $_SERVER['HTTP_USER_AGENT'] znajduje się informacja o oprogramowaniu, z którego ktoś ogląda naszą stronę i na tej podstawie określamy wstępnie czy to jest robot google. Zmienną tą można jednak spreparować, dlatego najlepiej sprawdzić za pomocą w whois czy adres, z którego przychodzi żądanie należy na pewno do google. W ten sposób zbadane adresy IP zapamiętujemy w plikach co dodatkowo przyspiesza działanie skryptu przy kolejnym wejściu robota.
Do czego ten kod może służyć? Poza śledzeniem robotów do kombinowania ;) Ukrywania linków przed google w systemach wymiany linków czy też przy wymianie / kupnie linków. Oczywiście takie ukrywanie danych nie do końca ujdzie płazem jeśli ktoś się zna. Dlatego niech każdy ma to na uwadze by nie było potem płaczu ;)
Ulepszony skrypt w postaci klasy, z przykładem użycia, można ściągnąć stąd : crawlshunter.tgz.
Słowa kluczowe: PHP, Techblog, adresy ip, crawl, google, googlebot, robot, wykrywanie, artykuł, blog

Komentarze i opinie
Niezły pomysł z tym whoisem, ale prościej weryfikować revdns-em.
Rzeczywiście, masz rację. Można użyć wbudowanej funkcji gethostbyaddr() ;)
Nawiązując do kombinowania, to Google ma boty, które nie przedstawiają się jako Googlebot i nie przychodzą z ich domeny. Wykrycie dużych różnic w ilości linków między wersji dla wszystkich i wersji dla bota to przykre konsekwencje... Nie polecam takich kombinacji ;)
O tym słyszałem, chociaż bardziej bym się skłaniał do wyciągania konsekwencji wobec stron, które dają linki / treści specjalne dla botów, a nie te, które ukrywa się przed botami ;) Pożyjemy, zobaczymy.
czemu explode("\n",file_get_contents($fn)), a nie file($fn)?
Może dlatego, że przy użyciu file() zostawia na końcu znaki nowej linii ;) Ale z tego co widzę to można temu zaradzić ustawiając flagę FILE_IGNORE_NEW_LINES.
Po pierwsze nie pisze się: "Do czego ten kod można używać?" bo to nie po polsku. Są dwie lepsze alternatywy: "Do czego ten kod może służyć?" albo "Do czego tego kodu można używać?".
Po drugie nie ma potrzeby kombinować skryptami co pokazywać Googlowi a co nie, chyba że mamy na prawdę niesamowite tajności ale takich w ogóle nie powinniśmy kłaść na www. Roboty z wyszukiwarek najczęściej bardzo grzecznie stosują się do zaleceń z pliku robots.txt (http://www.robotstxt.org). Dodatkowo Google stosuje jeszcze "Robots Exclusion Protocol" (http://googleblog.blogspot.com/2007/02/robots-exclusion-protocol.html). Wart lektury jest też poradnik "Strona przyjazna Google" (http://www.google.com/support/webmasters/bin/topic.py?topic=8522).
@steelman: przecież wyraźnie napisałem do czego to można używać, do oszukiwania systemów wymiany linków, chyba, że chcesz mi powiedzieć, że w pliku robots.txt mogę określić dokładnie, które linki ma traktować tak jakby ich nie było, wykluczam także użycie nofollow przy linkach
natomiast jak najbardziej gratuluje wiedzy z języka polskiego ;) już poprawiam
@sf:
A czemu nie chcesz używać "nofollow" przy linkach? Poza tym możesz jeszcze wstawić "noindex".
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
Bo to jest zabronione w SWL, dostajesz bana ;) Łatwo wykryć, że ktoś daje nofollow. Natomiast trudniej jeśli ktoś ukrywa linki tylko przed google. Wtedy jedyny sposób wykrycia takiego oszusta to sprawdzenie cache w wynikach wyszukiwania ( o ile nie da noarchive ). Chociaż ciekawi mnie czy robot, który tworzy cache przedstawia się identycznie jak googlebot.
Robot, który tworzy cache przedastawia się takżę jako 'Google AdSense' -- pare lat temu przyznali się do tego, że adsensowa infrastruktura pomaga tworzyć cache dla głównej wyszukiwarki.
StormFly, oczywiście piszesz debilizmy, których lepiej nie czytać, bo szkoda na to czasu. Nie wiem po co pisałeś 92 linijki kodu skoro można to było zrobić w 10 http://phpfi.com/325448 z antyspoofem w 12.
<blockquote>Oczywiście takie ukrywanie danych nie do końca ujdzie płazem jeśli ktoś się zna. Dlatego niech każdy ma to na uwadze by nie było potem płaczu ;)</blockquote>
lol, szkoda gadać. Widać, że wiesz bardzo dużo o tworzeniu doorwayów.
Co do SWL to admin weblinka żąda wyłączenia noarchive, bo jego boty sprawdzają meta tagi.
Piotr Konieczny, mylisz się ten bot nazywa się GoogleBot wbrew pozorom. Pewnie zrobili to tak dla zmyły, żeby nikt nie mógł się domyślić.
@sokol: gdzie widzisz pisanie debilizmu? to, że coś można napisać na kilka sposobów nie upoważnia Cię do takich głupich tekstów, zobacz sobie tytuł najpierw tego postu "lista adresów... " gdzie w Twoim kodzie jest ta lista? ukrywanie linków w SWL to był jeden z przykładów do czego możemy tego używać, zresztą w komentarzach było ujęte, że można to zrobić za pomocą gethostbyaddr(), więc sorry, ale trochę się ośmieszasz takim dziecinnym atakowaniem mojego tematu
to, że xann żąda noarchive to żadna nowość jak ktoś się tym interesuje, poza tym e-weblink to nie jedyny system na świecie więc nie generalizuj
Twoja lista będzie szybciej nieaktualna niż Ci się wydaje, więc nie ma sensu tworzyć czegoś co będzie za kilka tygodni nieaktualne. Aktualizowane listy są tutaj: http://labs.getyacg.com/spiders/google.txt
http://labs.getyacg.com/spiders/inktomi.txt
http://labs.getyacg.com/spiders/lycos.txt
http://labs.getyacg.com/spiders/msn.txt
http://labs.getyacg.com/spiders/altavista.txt
http://labs.getyacg.com/spiders/askjeeves.txt
http://labs.getyacg.com/spiders/wisenut.txt
Sprawdzanie co odświeżenie strony whois jest na pewno "super" pomysłem.
@sokol: rozumiesz ten kod, który napisałem? umiesz w ogóle programować? poczytaj trochę, poucz się, przeanalizuj, potem będziemy dalej rozmawiać
Google często zmienia ip rozumiesz? Będziesz miał pełno nieaktualnych ip na liście, to chciałem powiedzieć.
@sokol:
Nie tak znowu często bo tych adresów nie ma tyle żeby je zmieniać jak rękawiczki. Google ma wykupionych kilka bloków i co najwyżej od czasu do czasu z innych korzysta. Jakie to są bloki? Wystarczy pogrzebać... nie, nie w google tylko we whois.
http://ziaja.name/2008/03/27/i-ty-mozesz-zostac-googlebot/
...
robota google identyfikuje się po revdns. Google tak zaleca i co kombinujecie?
Nowy komentarz