tu pornesti de la premisa ca toti robotii preiau robots.txt , ceea ce nu e chiar asa de rau dar este falsa.
1. ai sa observi niste semnaturi de roboti care nu viziteaza niciodata robots.txt, mai sunt si robotii de spam
2. daca eu vizitez robots.txt si ma adaugi in lista nu mai imi calculezi traficul de la browserul X (cu care am vizitat atunci)
oricum, in orice caz ai nevoie de o oarecare validare manuala.
cea mai buna metoda la inceput este sa pornesti de la o lista de semnaturi de roboti existenta. uite un ex ft simplu si practic:
daca vrei sa opresti 4 roboti like google, yahoo, msn si ask faci asa:
Cod:if(preg_match("/googlebot|slurp|msnbot|ask[\s]+jeeves/im", $_SERVER['HTTP_USER_AGENT']) == true){
//nu executi scriptul de contorizare
}
Cod:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp)
Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en/docs/about/webmasters.shtml)
msnbot/0.9 (+http://search.msn.com/msnbot.htm)
si adaugi acolo in expresia regulata numele botilor, pe masura ce le descoperi numele.
poti face treaba asta si automat sa zicem, cu o lista de asteptare. faci cu mod_rewrite un robots.txt, loghezi user-agent care acceseaza si il pui intr-un array pe disk. validezi regulat daca sa excluda user-agentul respectiv din contorizare (nu cred ca merge automat ca risti sa faci cum am spus la inceput).
eu am 2 liste acolo, una cu roboti si niste semnaturi mai ciudate, care am presupus ca sunt de roboti, si una cu user-agents signature (adica de toate amestecate). eu nu consider orice semnatura de acolo ca si robot :)

