Suchmaschinen bots erkennen (wbblite)

will sone anzeige für die useronlineliste mit suchmaschinen bots basteln (so wie beim phpbb)

versteh das auch soweit dass der useragentsring auf sachen wie googlebot msnbot und slurp überprüft wird und dann dem user der name zugeordnet wird

wbblite ist aber vom aufbau her so angelegt dass die useronlineliste aus der sessionstabelle in der datenbank ausliest und die vermerkt keine namen sondern nur IDs
0 für alles an gästen und die jeweiligen user mit ihrer ID will aber nicht extra für jede suchmaschine n extra user anlegen weil ich dann wieder in zig files sortieren muss dass die dann nicht für die userliste/profile/pm und so abrufbar sind

wie ist das ganze bei den Foren angelegt die sowas schon von vornherein drinhaben?

ok ich muss es an jeder stelle wo die useronlineabfrage is mitn paar if abfragen aufteilen.

gibts noch iwelche gängigen suchmaschinen außer Google, Yahoo und MSN von denen sich schnell die bots breitmachen (die 3 genannten ziehen sich iwi gegenseitig an ^^ und der MSN bot hat noch nen 2. versetzt mit dabei der n paar minuten später die verlinkung testet, zumidnest hatte der immer nochn freund mit dabei der ihm alles nachgemacht hat)

Schäuble-Bot :ps:
Hmm mir fällt grad nicht der Name ein… Ich glaub aber den gibt es mittlerweile nichtmehr.
Denke die Drei sind die größten

wenns den gibt isser bestimmt schon in der robots.txt geparkt ^^

so also iwas läuft an meinem script noch nicht ganz rund
google bot wird erkannt nur msn und yahoo nicht

[code] $useragent = $row[‘useragent’];
$google = strpos($useragent,‘google’);
$msn = strpos($useragent,‘msn’);
$yahoo = strpos($useragent,‘slurp’);
if ($google == FALSE && $msn == FALSE && $yahoo == FALSE) $bot = 0;
else $bot = 1;

if($row[‘userid’]==0 && $bot==0) {

$guestcount++;

continue;

}

$membercount++;

if ($msn != FALSE && $row[‘userid’]==0) $row[‘username’] = ‘MSN-Bot’;
if ($yahoo != FALSE && $row[‘userid’]==0) $row[‘username’] = ‘Yahoo-Bot’;
if ($google != FALSE && $row[‘userid’]==0) $row[‘username’] = ‘Google-Bot’;

	if(isset($useronlinebit) && $useronlinebit != '') $useronlinebit .= ', ';

             if ($bot==1)
             eval ("\$useronlinebit .= \"".$tpl->get("index_botonline")."\";");
             else
             eval ("\$useronlinebit .= \"".$tpl->get("index_useronline")."\";");

[/code]

so ei ich das erkenne führt die datei das ganze für jede zeile in der session spalte der datenbank durch, zählt die bei denen userid 0 ist (gäste) und schreibt die namen hin, trennt mit komma wenns mehr als 1er sind und die gäste werden namentlich nicht erwähnt weil der die variable für den usernamen bei ihnen leer ist.

was meine modifikation machen soll ist den useragentstring auf vorkommen von google, msn oder slurp zu überprüfen, wird nix von den 3en gefunden ist es keiner der 3 bots und wird als gast gezählt. wird eine der zeichenketten im useragentstring gefunden wird der nicht als gast gezählt und es wird zugeordnet ob nun google msn oder yahoo und der name unverlinkt angezeigt.

der google bot wird auch in der weise angezeigt aber yahoo und msn sind nach wie vor gäste auch wenn außer ihnen kein anderer bot on ist.

wenn in “msnbot/1.1 (+http://search.msn.com/msnbot.htm)” nach msn gesucht wird dürfte das doch aber eigentlich nicht zu FALSE führen.
hab ich da iwas übersehen oder bin falsch rangegangen weil mim googlebot funzt es doch auch

vielleicht probleme mit der Groß- und Kleinschreibung?

Edit:// achne klar, ich weiß.
“msnbot” steht an erster stelle im userstring
und strpos würde dann als erste stelle die position 0 zurückgeben, was php intern aber auch als FALSE interpretiert.
damit es passt musst du diese Zeile ändern:

if ($google == FALSE && $msn == FALSE && $yahoo == FALSE) $bot = 0;

zu:

if ($google === FALSE && $msn === FALSE && $yahoo === FALSE) $bot = 0;

der === macht auch eine Überprüfung auf den Datentyp, FALSE ist ein Boolean Datentyp, und die position 0 ist ein Integer, erst wenn strpos auch FALSE zurückgibt (nicht gefunden) dann ist die bedingung erfüllt.

ah thx ^^ den yahoo bot hab ich auch schon mal online angezeigt gesehen hatte nur vorhin beim testen weil der msn nicht zu sehen war mein useragent nur in slurp geändert weshalb das ganze auch an erster stelle stand.

auf das mit der 0 muss man erstmal kommen !haue

de2.php.net/manual/en/function.strpos.php
Da steht ne Warnung im roten Kasten :wink:

damn ich hab sone angewohnheit beim lesen rote kästen zu ignorieren ^^

wieder mal ein beweis dafür dass weniger (lesen) manchmal mehr (arbeit) ist

Wenn es bei manchen bots auch mal eine großschreibung gibt kannst du es ja mit den machen: stripos, dabei wird groß- und kleinschreibung nicht berücksichtigt.