Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Googlebot i inne roboty indeksujące - jak wykrywać
Forum PHP.pl > Forum > PHP
xPatryk
Witam,

w jaki sposób skutecznie sprawdzić, czy strone odwiedza bot indeksujący jakiejś wyszukiwarki czy normalny użytkownik?

Chodzi mi o to, że większość stron w naszym serwisie (artykuły, forum, etc) jest dostępnych tylko dla zarejestrowanych użytkowników (rejestracja jest darmowa, nimniej wymagana ze względu na konieczność utrzymania wysokiego poziomu merytorycznego serwisu), ale zalezaloby nam na ich normalnym indeksowaniu przez wyszukiwarki, zwlaszcza, ze zawieraja wiele materialow niedostepnych nigdzie indziej w Polskim Internecie...


Tylko jak najlepiej sprawdzić, kto odwiedza stronę?

Pozdrawiam i proszę o pomoc
Patryk
NoiseMc
Kod
$_SERVER['HTTP_USER_AGENT']

Zawiera informację o tym czym jest przeglądana Twoja strona.

W przypadku Googlebot jest to:
Kod
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)


IMHO nie wiem czy dobrym pomysłem jest wpuszczać na strony dostępne po zalogowaniu kogoś kto identyfikuje jako Googlebot bo można w prosty sposób podszyć się pod niego i zczytać całą zawartość strony czyli na przykład jeżeli ktoś "przedstawi się" jako Googlebot wysyłając w nagłówkach powyższy ciąg znaków może przeszukać całą stronę pod kątem na przykład plików do ściągania i ściągnąć je sobie bez logowania nie mówiąc już o wyciągnięciu całej treści strony.

Dodam, że odpada też sprawdzanie z jakiego IP pochodzi żądanie ponieważ Google wysyła swoje boty z różnych adresów.

Lepszym pomysłem byłoby wyciągnięcie słów kluczowych, które powinny zostać zaindeksowane przez Google i po rozpoznaniu, że odwiedza nas właśnie Google "zaserwować" mu stronę z czystym tekstem powrzucanym w <h1> i <p> nasyconym odpowiednimi słowami.
dtb
po co ktos mialby sie podszywac pod googlebota, skoro rejestracja jest darmowa. tylko sobie trud zadaje!

EDIT: tak btw, to jest dobry sposob na oszukanie robota. mozesz zrobic specialna strone nasycona slowami kluczowymy, tagami <hX> itd. jezeli jednak przegladarka wykryje taki przekret (choc nie wiem jak bo strona jest generowana po stronie serwera) to moze to uznac za spam.
xPatryk
Witam,

tak jak zauważył dtb, nie ma potrzeby podszywania się pod googlebota, gdyż my nie ograniczamy dostępu do stron tylko wymagamy od użytkowników rejestracji, aby możnabyło łatwo śledzić co robią, zarządzać komentarzami (można komentować wszystko, od zdjęć po artykuły) oraz by mieć możliwość kontaktu z użytkownikami (tudzież, przyznam szczerze, wysyłania im reklam (zgodnie z regulaminem), bo jednak z czegoś trzeba utrzymać serwis, w którym swoje artykuły prezentują wysokiej klasy specjaliści, weterynarze, hodowcy, zawodnicy, etc...)... A jeżeli wszystko byłoby dostępne bez rejestracji - nikt by się nie rejestrował...

Co do pozycjonowania słów kluczowych to chyba nie ma takiej potrzeby, bo dla 90% zapytań jesteśmy jedyną (jedną z kilku) stron zwracanych przez google...

A czy macie może wartości zwracane dla innych botów innych wyszukiwarek?

Pozdrawiam
Patryk
yavaho
Boty mozna wykryc np w ten sposob:
  1. <?php
  2. if(eregi('(googlebot)+|(msnbot)+|(altavista)+',$_SERVER["HTTP_USER_AGENT"])){
  3. // tresc lub linki tylko dla bota
  4. }
  5. ?>
Albo zupelnie odwrotnie. Mozna wykrywac przegladarki, a wszystko co nie zostanie zidentyfikowane traktowac jak bota.

Ale ja bylbym ostrozny z wpuszczaniem botow do zasobow dostepnych tylko po zalogowaniu. To tak jakby uzytkownik sie zalogowal i oddal myszke swojemu 2-letniemu dziecku, ktore by klikało we wszystko w co da sie kliknac na stronie biggrin.gif. A jezeli sa tam przyciski typu: usuń moj profil, kopiuj cos tam, wyslij poczta cos tam! I co wtedy?
xPatryk
No fakt,
bede musial dodac instrukcje blokujaca wszystkie akcje... Bo potem bede mial 200 raportów o błedach ;p

Pozdrawiam
Patryk
Sh4dow
jesli chodzi o podszywanie sie pod bota, albo generowanie specjalnej strony dla bota nie wiem czy zdaje zadanie. Podobno google potrafi podszywac sie pod przegladarki zeby sprawdzic czy nie roznia sie one od stron kiedy sa indeksowane przez bota.
Nie wiem na ile to prawda ale to slyszalem. Moze ktos moze to potwierdzic ?
yavaho
To juz jest cloaking. Ale jak sie uzywa tej techniki rozwaznie to nic takiego sie nie stanie. W przypadku stron ktore sa dostepne po zalogowaniu googiel nie bedzie mial mozliwosci porownania tych stron, bo nie dostanie sie na te strony jako przegladarka, ale i tak przeciez te strony nie zmienia tresci. Tresc zmieni sie na jednej stronie (jedna wystarczy aby zrobic wejscie) i ta strona bedzie sie roznila tylko tym ze dla bota wyswietli o jeden link wiecej - jezeli ta strona generowana jest dynamicznie i pojawiaja sie na tej stronie inne losowe linki to nawet nie bedzie mozliwosci porownania.

Problemy natomiast moga pojawic sie gdy to jakis dociekliwy gostek zauwazy. Np na stronie mamy zainstalowany system wymiany linków. Robot wtedy moze zainstalowac linki na stronie niedostepnej dla zwyklego uzytkownika. I wtedy administrator tego systemu wymiany linków lub inna dociekliwa osoba moze zauwazyc ze linki znajduja sie na stronach, ktore to strony wedlug niego nie istnieją.
I to moze byc odebrane jako generowanie duzych ilosci niepotrzebnych stron w celu jakby sztucznego "podwyzszenia wartosci" strony, gdy wartosc strony ocenia robot.
voytass
Jest taki modulik 'googleactivity', ktory bada czy dana strone, na korej on dziala odwiedzil robot indeksujacy. nie pamietam gdzie go znalalzem, chyba na Hotscripts - poszukaj.
xPatryk
A powiedzcie mi jeszcze, czy googlebot "ma w zwyczaju" używanie formularzy?

Tzn. większość funkcji na stronach oparta jest o pola typu select i przyciski typu button (submit, reset, renew, etc.)... Czy googlebot probuje w jakis sposob ich uzyc, czy tylko przechodzi po zwyklych linkach ?

Pozdrawiam
Patryk
yavaho
Mnie tez to interesowalo i tez do konca nie jesten pewien co tak naprawde robi boot. Byc moze podaza za linkiem, ktory jest w tagu <form> ale na pewno nie przekazuje zadnych zmiennych w $_POST[]. Nie powinien przekazywac - było by to niedopuszczalne, bo w ten sposób mógł by sie nawet zalogowac na stronie jako administrator.
Nie zauwazylem tez aby strony dostepne tylko za formularzem byly zaindeksowane w google. Jezeli zalezy na ich indeksacji takich stron, to trzeba zrobic jakies inne wejcie dla bota np w postaci sitemap.
Ozzy
Za cloaking w google dostaje się bana stałego:)
yavaho
Cytat(Ozzy @ 2005-12-21 01:27:06)
Za cloaking w google dostaje się bana stałego:)
Ale ktos to musi najpierw zgłosić. I napewno nie dostanie sie bana za cloaking jednego slowa czy linka. To juz trzeba sie komus narazic lub byc zbyt beszczelnym w stosowaniu tej techniki.
Nie dawno był sobie taki konkurs pozycjonowania stron, w ktorym były dozwolone wszystkie nawet te nieetyczne techniki pozycjonowania. Nikt sie nie przejmowal tym ze dostanie bana, bo raczej kazdego (kto brał ten konkururs jako zabawa) bardziej interesowalo gdzie lezy ta granica ktorej nie mozna przekroczyc niz dostanie bana na bezwartosciowa domene. Konkurs mial chyba bardziej charakter lepszego poznania google niz zdobycie pierwszej nagrody. Wiec niektorzy mocno przeginali z niektorymi technikami pozycjonowanie nic sie z tym nie kryjąc (wlacznie ze mna) i nie stwierdzilem aby kogos ukaral za to googlebot.
Radarek
Cytat(yavaho @ 2005-12-21 01:44:31)
Cytat(Ozzy @ 2005-12-21 01:27:06)
Za cloaking w google dostaje się bana stałego:)
Ale ktos to musi najpierw zgłosić.

Niekoniecznie. Google przeciez moze wejsc, podajac sie za dowolnego User-Agent'a i moze sprawdzic czy tresc bedzie generowana taka sama (podobna) czy zupelnie inna.
Ozzy
Ostatnio miałem podobny problem, bo mi boty statsy psuły i zrobiłem cos takiego:
  1. <?php
  2.  
  3. public function detectBot($host) {
  4.  
  5. $botHosts = array('googlebot', 'msnbot', 'crawl', 'robot', 'spider', 'search', 'w3.org', 'rootmode');
  6. $botAgents = array('bot', 'avant', 'java', 'findlinks');
  7.  
  8. foreach($botHosts As $bot) if(strpos($host, $bot) !== false) { $this->markAsBot(); break; }
  9. foreach($botAgents As $bot) if(strpos($this->registry['request']['ua'], $bot) !== false) { $this->markAsBot(); break; }
  10.  
  11. }
  12.  
  13. ?>


Uwzględnia to tylko te boty, które akurat w przypadku tej strony zawyżały statystyki.
Wpis z avantbrowser też uznałem jako bota, bo to co robi ta nakładka to szczyt głupoty;)

Uznanie za bota ma dalsze konsekwencje w markAsBot(), czyli nie przekazywanie SessID w adresie itd....
Termit_
O, dzięki @Ozzy, przyda się winksmiley.jpg.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.