Hits ohne Spider zählen

MichaSBK

Mitglied
Hey Leuts

hab mal eine kleine Frage an euch, weiß jemand von euch wie man das Zählen der Hits+1 vom Suchmaschinen-Spider ausschließen kann, so das dieser dann nicht um 1 erhöht wird, wenn der Spider den Link verfolgt.
Wollte quasie damit ausschließen, dass man anhang der Hits vom Link auch die entsprechende Reale Besucherzahl entsprechend hat. Hoffe, dass mir von euch jemand nen Tip geben könnte bzw. nen Vorschlag wie man das realiesieren könnte.

MfG Micha
 
Hallo, über $ENV['HTTP_USER_AGENT'] bekommst Du die im Header mitgesendeten Informationen über das aufrufende Programm. Bei Browsern könnte das so aussehen:
Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)

Was nun die Spider übersenden, kann ich Dir nicht sagen. Aber logge doch einfach mal alle Aufrufe mit, dann wird man es wahrscheinlich erkennen können.

mfg, snuu
 
Suche in $_SERVER['HTTP_USER_AGENT'] nach
'googlebot'-->google
'inktomi'-->inktomi Slurp
'firefly'-->Fireball

usw.
Mehr weiss ich jetzt nicht aus'm Kopf, müsst ich mal mein Statistik-Tool konsultieren:-)
 
fertig konsultiert...
hab bei AwStats nachgeschaut.... sind nicht alle, die da aufgeführt sind, aber sollte eigentlich fürs Gröbste ausreichen.... könnte dann so aussehen:
PHP:
<?php
$bots=array('googlebot','ia_archiver','lycos_','myweb','netcraft','nomad','scooter','slurp','voila','wisenutbot','atomz','cyberspyder','deweb','fireball','firefly','infoseek','infoseeksidewinder','infospider','javabee','jbot','jcrawler','macworm','perlcrawler','phantom','python','road_runner','smartspider','metager','microsoft_url_control','msiecrawler','msnbot','ultraseek','zyborg','robot','crawl','spider');
$isBot=false;
foreach($bots as $bot)
	{
	if(eregi($bot,$_SERVER['HTTP_USER_AGENT']))
		{
		$isBot=true;
		break;
		}
	}
if(!$isBot)
	{
	//Counter hochschrauben
	}
?>
 
Naja, ich kenne mich mit den UAs der SE-Spiders nicht aus, aber wenn der UA vom Google-Spider googlebot ist, kann man das schon mit in_array checken.

PHP:
<?php
$bots = array(
    'googlebot',
    'ia_archiver'
    // ...
);

if (!in_array(strtolower($_SERVER['HTTP_USER_AGENT']), $bots, false)) {
    // hochzaehlen...
}
?>

Ansonsten würde ich das eregi mit einem strpos ersetzen, das ist nämlich auch schneller! :p
 
Nö.... das sind nicht die Browserkennungen.... das sind jeweils nur Strings, welche in den UA vorkommen.... also von mir aus auch mit strpos() oder preg_match()
 
hmm also die eine lösung scheint da nicht so hingehauen zu haben :/, da ich dies mal ausgetestet hatte mit der eigenen Browser-Erkennung.
Aber nach ner kleinen Abänderung mit der in_array hatte es schließlich dann doch geklappt :)

PHP:
<?php 
echo "Deine Browser-Kennung: ".$_SERVER['HTTP_USER_AGENT']."<br><br>";
$bots=array('googlebot','ia_archiver','lycos_','myweb','netcraft','nomad','scooter','slurp','voila',
'wisenutbot','atomz','cyberspyder','deweb','fireball','firefly','infoseek','infoseeksidewinder','inf
ospider','javabee','jbot','jcrawler','macworm','perlcrawler','phantom','python','road_runner','smart
spider','metager','microsoft_url_control','msiecrawler','msnbot','ultraseek','zyborg','robot','crawl
','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)','spider'); 

 if(in_array($_SERVER['HTTP_USER_AGENT'],$bots))
    {
    echo "Dein Brwoser wurde im Array gefunden";
    } else {echo "nicht gefunden";}

?>

MfG Micha
 
Zurück