stoecki 0 Report post Posted February 26, 2004 Hallo, der Inktomi-Bot wird bei mir trotz passendem Useragent nicht als Spider-Bot erkannt. woran kann das liegen? Hat jemand eine Idee? Share this post Link to post
Stefan 0 Report post Posted February 27, 2004 Ich glaube es liegt daran, das der Bot verschiedene IP Adressen verwendet. Hab den Bot nur auf einen 1.1.2 Board in Aktion erlebt und dort war er mit mindestens 10 IP Adressen unterwegs. Share this post Link to post
stoecki 0 Report post Posted February 27, 2004 ja, schon klar, aber soweit ich die funktion in der functions.php gecheckt hab, überprüft der keine IPS sondern nur den useragent, un den hab ich schon aktualisiert... Share this post Link to post
Stefan 0 Report post Posted February 27, 2004 Ja, das stimmt, war vorhin nur recht früh. Frage ist jetzt nur, gibt sich der Agent denn auch zu erkennen? Ich weiß also, das er es damals bei dem anderen Board nicht gemacht hat und auch in den Logs des Counters nichts darüber aufgetaucht ist. Ist aber schon recht lange her, deswegen kann es sich auch geändert haben. Share this post Link to post
stoecki 0 Report post Posted February 27, 2004 //------------------------------------------------- // Manage bots? (tee-hee) //------------------------------------------------- if ( $ibforums->vars['spider_sense'] == 1 ) { $remap_agents = array( 'googlebot' => 'google', 'slurp@inktomi' => 'inktomi', 'ask jeeves' => 'jeeves', 'lycos' => 'lycos', 'whatuseek' => 'wuseek', 'ia_archiver' => 'Archive_org', ); if ( preg_match( '/(googlebot|slurp@inktomi|ask jeeves|lycos|whatuseek|ia_archiver)/i', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $match ) ) { $DB->query("SELECT * from ibf_groups WHERE g_id=".$ibforums->vars['spider_group']); $group = $DB->fetch_row(); foreach ($group as $k => $v) { $this->member[ $k ] = $v; } $this->member['restrict_post'] = 1; $this->member['g_use_search'] = 0; $this->member['g_email_friend'] = 0; $this->member['g_edit_profile'] = 0; $this->member['g_use_pm'] = 0; $this->member['g_is_supmod'] = 0; $this->member['g_access_cp'] = 0; $this->member['g_access_offline'] = 0; $this->member['g_avoid_flood'] = 0; $this->member['id'] = 0; $ibforums->perm_id = $this->member['g_perm_id']; $ibforums->perm_id_array = explode( ",", $ibforums->perm_id ); $ibforums->session_type = 'cookie'; $ibforums->is_bot = 1; $this->session_id = ""; if ( ! $agent = $remap_agents[ $match[1] ] ) { $agent = 'google'; } if ( $ibforums->vars['spider_visit'] ) { $dba = $DB->compile_db_insert_string( array ( 'bot' => $agent, 'query_string' => str_replace( "'", "", $HTTP_SERVER_VARS['QUERY_STRING']), 'ip_address' => $_SERVER['REMOTE_ADDR'], 'entry_date' => time(), ) ); $DB->query("INSERT INTO ibf_spider_logs ({$dba['FIELD_NAMES']}) VALUES({$dba['FIELD_VALUES']})"); } if ( $ibforums->vars['spider_active'] ) { $DB->query("DELETE FROM ibf_sessions WHERE id='".$agent."_session'"); $this->create_bot_session($agent); } return $this->member; } } das ist der quelltext, den ich dafür verantwortlich halte der Spider-Bot gibt sich folgendermaßen aus (HTTP_USER_AGENT-Variablen-Inhalt lauf Logfiles) -> Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/slurp) Früher Stand da, wo jetzt im User-Agent Yahoo! Slurp steht "slurp@inktomi", was ja auch in der oben aufgeführten Funktion steht, hab das spaßenshalber mal auf "yahoo" und andere kombinationen umgestellt. Kein Erfolg. kann es sein, das genau hier: if ( ! $agent = $remap_agents[ $match[1] ] ) { $agent = 'google'; } was nicht stimmt? Das kommt mir nämlich spanisch vor... Share this post Link to post
AliCremerU333 0 Report post Posted February 27, 2004 (edited) Hallo, Inktomi ist nur ein Dienst, der seine Spider-Engine für Suchmaschinen zur Verfügung stellt. Etliche Suchmaschinen greifen auf diesen Dienst zurück. Im Prinzip brauchst du nur das Array $remap_agents um einen weiteren Eintrag ergänzen. Bsp.: 'yahoo' => 'Yahoo', oder 'Yahoo!' => 'Yahoo', oder 'yahoo.com' => 'Yahoo', usw. Dann noch if ( preg_match( '/(googlebot|slurp@inktomi|ask jeeves|lycos|whatuseek|ia_archiver)/i', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $match ) ) entsprechend ergänzen, z.B. if ( preg_match( '/(googlebot|slurp@inktomi|yahoo|ask jeeves|lycos|whatuseek|ia_archiver)/i', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $match ) ) Damit wird jeder Useragent, der die o.g. Zeichenkette enthält, als Yahoo-Bot identifiziert. Du mußt halt nur sicherstellen, daß die von dir angegebene Zeichenkette auch wirklich immer im Useragent so auftaucht. Deshalb nicht zuviel angegeben, dafür aber eindeutig. Um noch andere, vielleicht etwas exotischere Spider hinzuzufügen, einfach analog o.g. Bsp. verfahren ... Gruß, AC Edited February 27, 2004 by AliCremerU333 Share this post Link to post
stoecki 0 Report post Posted February 28, 2004 ne du, das, was du oben schreibst, funzt 100%ig nicht. hab ich ja schon probiert gehabt... if ( ! $agent = $remap_agents[ $match[1] ] ) { $agent = 'google'; } die if abfrage gibt mir zu denken... es gibt kein gegenstück dazu, was $agent zuweist, wenn es ein bekannter bot ist... da liegt glaube das haupt-problem... Share this post Link to post
AliCremerU333 0 Report post Posted February 28, 2004 (edited) Damit werden doch nur die Bots abgefangen, die nicht im Array $remap_agents enthalten sind (und als "Google" deklariert). Deshalb muß es dazu auch kein "Gegenstück" geben. Bei mir funktioniert es übrigens problemlos. Habe ca. ein halbes Dutzend Spider hinzugefügt, die auch alle erkannt werden. Es kommt hauptsächlich auf die richtige Zeichenkette an. Entweder stimmt die bei dir nicht (ist z.B. zu lang oder mehrdeutig) oder der Useragent z.B. ist etwas anders oder ... Gruß, AC Edited February 28, 2004 by AliCremerU333 Share this post Link to post
stoecki 0 Report post Posted February 28, 2004 Damit werden doch nur die Bots abgefangen, die nicht im Array $remap_agents enthalten sind (und als "Google" deklariert). schon klar. und wo werden die erkannten als z.b. inktomi deklariert? also inktomi wird bei mir egal wie ich den user-agent änder nicht erkannt... Share this post Link to post
stoecki 0 Report post Posted February 28, 2004 schreib doch am besten mal den teil deiner functions.php hier rein... Share this post Link to post
Helge 192 Report post Posted February 28, 2004 Notfalls gibts hier einen Mod dafür. Sollte auch mit 1.3 Funktionieren, einfach mal testen. Nebenbei: Wäre nett wenn du das nächste mal deinen Beitrag Editierst, wenn du kurz darauf noch etwas Hinzufügen möchtest, Danke =) Share this post Link to post
stoecki 0 Report post Posted February 28, 2004 (edited) Notfalls gibts hier einen Mod dafür. Sollte auch mit 1.3 Funktionieren, einfach mal testen. Funzt ohne Probs. Mal schauen ob ich den Inktomi irgendwie als Inktomi sichtbar machen kann ;-) Wäre trotdem cool, wenn AliCremerU333 mal seinen Teil aus der functions.php hier posten könnte. Danke. Edit: Ok, dank des Mods erkennt er jetzt auch den Inktomi / Yahoo Bot... Danke. Edited February 28, 2004 by stoecki Share this post Link to post
AliCremerU333 0 Report post Posted March 8, 2004 (edited) Hallo, wenn du unbedingt den entsprechenden Teil meiner functions.php sehen willst: //------------------------------------------------- // Manage bots? (tee-hee) //------------------------------------------------- if ( $ibforums->vars['spider_sense'] == 1 ) { $remap_agents = array( 'googlebot' => 'google', 'google' => 'google', 'inktomi' => 'inktomi', 'slurp' => 'inktomi', 'jeeves' => 'jeeves', 'lycos' => 'lycos', 'whatuseek' => 'wuseek', 'ia_archiver' => 'archive_org', 'Yahoo' => 'yahoo', 'Acoon' => 'acoon', 'Scooter' => 'altavista', 'Freecrawl' => 'euroseek', 'ArchitextSpider' => 'exite', 'Fireball' => 'fireball', ); if ( preg_match( '/(googlebot|google|inktomi|slurp|jeeves|lycos|whatuseek|ia_archiver|Yahoo|Acoo |Scooter|Freecrawl|ArchitextSpider|Fireball)/i', $HTTP_SERVER_VARS['HTTP_USER_AGENT'], $match ) ) { $DB->query("SELECT * from ibf_groups WHERE g_id=".$ibforums->vars['spider_group']); $group = $DB->fetch_row(); foreach ($group as $k => $v) { $this->member[ $k ] = $v; } $this->member['restrict_post'] = 1; $this->member['g_use_search'] = 0; $this->member['g_email_friend'] = 0; $this->member['g_edit_profile'] = 0; $this->member['g_use_pm'] = 0; $this->member['g_is_supmod'] = 0; $this->member['g_access_cp'] = 0; $this->member['g_access_offline'] = 0; $this->member['g_avoid_flood'] = 0; $this->member['id'] = 0; $ibforums->perm_id = $this->member['g_perm_id']; $ibforums->perm_id_array = explode( ",", $ibforums->perm_id ); $ibforums->session_type = 'cookie'; $ibforums->is_bot = 1; $this->session_id = ""; if ( ! $agent = $remap_agents[ $match[1] ] ) { $agent = 'unknown'; } Funktioniert wunderbar. Was mir aber im Nachhinein einfällt: Wenn du hier neue Spider einfügst, mußt du für eine korrekte Anzeige im ACP dafür sorgen, daß in der conf_global.php die Spider auch alle enthalten und korrekt benannt sind. Hier der entsprechende Teil meiner conf_global.php, der zu o.g. Teil meiner functions.php paßt: $INFO['sp_acoon'] = 'Acoon'; $INFO['sp_altavista'] = 'Altavista'; $INFO['sp_archive_org'] = 'Archive_org'; $INFO['sp_euroseek'] = 'EuroSeek'; $INFO['sp_exite'] = 'Exite'; $INFO['sp_fireball'] = 'Fireball'; $INFO['sp_google'] = 'Google'; $INFO['sp_inktomi'] = 'Inktomi'; $INFO['sp_jeeves'] = 'AskJeeves'; $INFO['sp_lycos'] = 'Lycos'; $INFO['sp_wuseek'] = 'WhatUSeek'; $INFO['sp_yahoo'] = 'Yahoo'; $INFO['sp_unknown'] = 'unbekannt'; Neben den "neuen" Spidern habe ich für unbekannte Spider nur die Zuordnung "google" in "unknown" geändert, damit wirklich nur der Googlebot als Google bezeichnet wird und nicht alle unbekannten anderen Spider auch als Google bezeichnet werden. Im ACP steht dann "unbekannt" als Bot ... Gruß, AC Edited March 8, 2004 by AliCremerU333 Share this post Link to post
Actron 0 Report post Posted June 26, 2005 Hallo! Bei mir erkennter getz alle Googlebots als unknown. Funzt also nicht ganz alles so.... Läufts bei euch richtig? cu Bernd Share this post Link to post
TomCrow 0 Report post Posted June 26, 2005 Also ich hab' das Teil von ibforen im Einsatz und es funktioniert - soweit ich weiß - einwandfrei.. mfg, Tom Share this post Link to post