<?php
/* (C) 2005 Dominique Sandoz, jeko@gmx.ch */
// Aufruf: spider.php?site=http://www.example.com/datei.php
//DB-Connect
include("datas.php");
$connection=mysql_connect($host,$user,$pw) or die("Verbindung konnte nicht hergestellt werden");
$dbco=mysql_select_db($db, $connection) or die("Datenbank konnte nicht ausgewählt werden");
// zuweisen von wichtigen Variablen
$start_site = $_REQUEST['start'];
$host = explode("/",$start_site);
$host = $host[2];
// File lesen und inhalt $content zuweisen
ob_start();
readfile($start_site);
$content = ob_get_clean();
ob_start();
echo '<pre>';
echo "Location: $start_site \n Gelesen...\n\n";
//Auslesen von Informationen
$info = get_meta_tags($start_site);
foreach ($info as $key => $value) {
echo $key.": <b>".$value."</b>\n";
}
// Suche nach links starten
$suchstring = '/<a .*href="(.*)".*>.*<\/a>/U';
preg_match_all($suchstring,$content,$treffer);
unset($treffer[0]); // Gesamte Suchstrings löschen, nur den gematchten ausdruck
ob_end_flush(); // Outputbuffer leeren und ausgeben
$treffer[1] = array_unique($treffer[1]);
foreach ($treffer[1] as $value) {
if (preg_match('/^(http:|javascript:|mailto:|\#).*/i',$value)) {
unset($treffer[1][array_search($value,$treffer[1])]);
}
}
$tokenlinks = array();
$tokencontent = array();
foreach ($treffer[1] as $link) {
$oldlink = $link;
if ($link{0} == "?") { // absolute URL generieren
$link = $start_site.$link;
}
else {
$link = "http://".$host."/".$link;
}
ob_start();
readfile($link);
$content = ob_get_clean();
ob_start();
echo "\nLocation: $link \n Gelesen...\n";
$suchstring = '/<a.*href="(.*)".*>.*<\/a>/U';
preg_match_all($suchstring,$content,$treffer2);
foreach ($treffer2[1] as $value) {
if ($value{0} == "?") { // absolute URL generieren
$tokenlinks[] = $start_site.$value;
}
else {
$tokenlinks[] = "http://".$host."/".$value;
}
}
$tokencontents[] = $content;
unset($treffer2);
ob_end_flush();
}
$tokenlinks = array_unique($tokenlinks);
$tokencontents = array_unique($tokencontents);
foreach ($tokenlinks as $value) {
if (preg_match('/^(http:|javascript:|mailto:|\#).*/i',$value)) {
unset($tokenlinks[array_search($value,$tokenlinks)]);
}
}
$sql = "DELETE FROM search";
$erg = mysql_query($sql);
if ($erg) {
echo "\nAlle Daten gelöscht...\n";
}
else {
die("\nKonnte Datensätze nicht löschen!\n");
}
foreach ($tokencontents as $key => $value) {
if ($treffer[1][$key]{0} == "?") { // absolute URL generieren
$url = $start_site.$treffer[1][$key];
}
else {
$url = "http://".$host."/".$treffer[1][$key];
}
preg_match('|<title>(.*)</title>|iU',$value,$title);
$title = $title[1];
$suche = array ("'<script[^>]*?>.*?</script>'si", // JavaScript entfernen
"'<[\/\!]*?[^<>]*?>'si", // HTML-Tags entfernen
"'([\r\n])[\s]+'", // Leerräume entfernen
"'&(quot|#34);'i", // HTML-Entitäten ersetzen
"'&(amp|#38);'i",
"'&(lt|#60);'i",
"'&(gt|#62);'i",
"'&(nbsp|#160);'i",
"'&(iexcl|#161);'i",
"'&(cent|#162);'i",
"'&(pound|#163);'i",
"'&(copy|#169);'i",
"'&#(\d+);'e"); // als PHP auswerten
$ersetze = array ("",
"",
"\\1",
"\"",
"&",
"<",
">",
" ",
chr(161),
chr(162),
chr(163),
chr(169),
"chr(\\1)");
$text = preg_replace($suche, $ersetze, $value);
$sql = "INSERT INTO search (url,title,content) VALUES ('$url','$title','$text')";
$erg = mysql_query($sql);
if ($erg) {
echo $url." erfolgreich gespeichert...\n";
}
else {
echo $url." konnte nicht gespeichert werden!\n";
}
echo '<textarea>'.$text.'</textarea>';
}
echo "\nRefresh abgeschlossen";
echo '</pre>';
?>