Seite 1 von 1

Eigenen Spider-Log-Mod bauen

Verfasst: Do 11.Mai, 2006 07:22
von karstenkurt
Hallo,

ich hab mehrere Spider-Mods ausprobiert und keiner gefällt mir so richtig gut. Deshalb möchte ich meinen eigenen bauen. PHP-technisch bin ich nicht so die richtige Leuchte, deshalb mal hier die Bitte an die erfahrenen Coder vielleicht ein bisschen Unterstützung zu geben.

Was hab ich bislang gemacht.
Neue Tabellen

Code: Alles auswählen

CREATE TABLE `phpbb_bot_ips` (
  `ip_id` smallint(6) NOT NULL auto_increment,
  `ip_adresse` varchar(255) default NULL,
  `bot_agent` varchar(255) default NULL,
  `bot_name` varchar(255) default NULL,
  PRIMARY KEY  (`ip_id`),
  UNIQUE KEY `ip_adresse` (`ip_adresse`)
) TYPE=MyISAM;

CREATE TABLE `phpbb_spider_log` (
  `spider_log_id` int(8) NOT NULL auto_increment,
  `spider_URL` varchar(255) default '',
  `spider_IP` varchar(255) default '',
  `spider_visitdate` varchar(255) NOT NULL default '',
  `spider_agent` varchar(255) default '',
  `spider_id` int(8) default '0',
  PRIMARY KEY  (`spider_log_id`)
) TYPE=MyISAM;
angelegt.
In der page_header.php folgenden Code eingefügt

Code: Alles auswählen

if ($userdata['user_id'] == ANONYMOUS)
{
  $url = 'http://' .$_SERVER['SERVER_NAME'] .$_SERVER['PHP_SELF'] . (($_SERVER['QUERY_STRING'] != '') ? '?' .$_SERVER['QUERY_STRING'] : '');
  $now = time();
  $user_agent = $HTTP_SERVER_VARS['HTTP_USER_AGENT'];
  $servername = $HTTP_SERVER_VARS['REMOTE_HOST'];
  $bot_ip = $HTTP_SERVER_VARS['REMOTE_ADDR'];
  //$bot_ip = '66.249.72.81';
  $sql = "SELECT count(*) as anzahl,ip_id from " .BOT_IP_TABLE
    ." where ip_adresse='$bot_ip' group by ip_id";
  if (!($result = $db->sql_query($sql)))
  {
    message_die(GENERAL_ERROR, 'Could not detect bot-information', '', __LINE__, __FILE__, $sql);
  }
  if ($row = $db->sql_fetchrow($result))
  {
    if (!empty($row['anzahl']))
    {
      $bot_id=$row['ip_id'];
	    $sql = "INSERT INTO " .SPIDER_LOG_TABLE
    ."(spider_URL, spider_IP,spider_visitdate,spider_agent,spider_id) VALUES('$url', '$bot_ip',$now,'$user_agent',$bot_id)";
     if (!($result = $db->sql_query($sql)))
     {
       message_die(GENERAL_ERROR, 'Could not insert bot-information', '', __LINE__, __FILE__, $sql);
     }
	  }
	 }
	 else
	 {
    $sql = "INSERT INTO " .SPIDER_LOG_TABLE.
    "(spider_URL, spider_IP,spider_visitdate,spider_agent,spider_id) VALUES('$url', '$bot_ip',$now,'$user_agent',0)";
    if (!($result = $db->sql_query($sql)))
    {
      message_die(GENERAL_ERROR, 'Could not update detect information', '', __LINE__, __FILE__, $sql);
    }
   }
}
Fürs ACP die angehängten Dateien erstellt.
Was mir aber noch Kopfzerbrechen bereitet, ist folgendes: In der Übersicht möchte ich nun noch Buttons zum Löschen von Einträgen haben und wenn ein Spider dabei, soll dieser per Button in die Tabelle phpbb_bot_ips eingetragen werden (mit Abfrage des Namens) und in der Tabelle phpbb_spider_log soll die Spider_id des Eintrags entsprechend aktualisiert werden.

Wer kann mir da helfen?

Verfasst: Do 11.Mai, 2006 11:20
von AmigaLink
Sorry, aber ich hab keine Zeit mir das näher an zu sehen. Möchte aber dennoch etwas zu bedenken geben.

Die Suchmaschinen belasten ein Board eh schon recht heftig. Wofür also die Belastung noch erhöhen, indem ihre Tätigkeiten zusätzlich gelogt werden?
Eine Auswertung der eh bereits vorhandenen Serverlogs wäre da viel Sinnvoller! ;)

Verfasst: Do 11.Mai, 2006 11:29
von karstenkurt
Hm,
hast ja eigentlich recht. Zumal sich im Augenblick gerade der Google- und der MSN-Bot austoben (800 Zugriffe in 24 Stunden ^1 )

Gibt es den da vernünfitge Programme für?

Verfasst: Do 11.Mai, 2006 13:14
von oxpus
Nur Blocker, die eben die zusätzliche Last unterbinden.
Ansonsten würde ich hier nichts weiter ausführen, wenn sich ein Bot auf dem Forum tummelt. Ist wirklich zusätzlicher und eher unnötiger Stress für den Server...

Verfasst: Mo 15.Mai, 2006 21:13
von karstenkurt
Ist ausgebaut.

Danke für die Hinweise.