Webcrawling – Die Erschließung des Webs

Transcription

Webcrawling – Die Erschließung des Webs
Webcrawling – Die Erschließung des
Webs
Ronny Harbich
12. Januar 2008
Zusammenfassung
Die Notwendigkeit Informationen aus dem Web zu sammeln, sei es für Web-Suchmaschinen oder sonstige Dienste, bedingt ein Traversieren des Webs. Webcrawler ermöglichen
dies, indem sie den Verweisen in Webseiten nach gewissen Strategien folgen.
Wir werden zu Beginn die Struktur des Webs und Webcrawler einführend betrachten.
Anschließend erörtern wir den Aufbau und die einzelnen Komponenten eines Webcrawlers
genauer. Wir enden mit einer Sicherheitsbetrachtung und einem Ausblick.
Inhaltsverzeichnis
1 Einführung
3
2 Entwurf eines Webcrawlers
2.1 Die Frontier . . . . . . . . . . .
2.1.1 Eigenschaften des Webs
2.1.2 URL-Auswahlverfahren .
2.2 Der Downloader . . . . . . . . .
2.2.1 Arbeitsweise . . . . . . .
2.2.2 Beschränkungen . . . . .
2.3 Der Parser . . . . . . . . . . . .
2.3.1 URL-Extraktion . . . . .
2.3.2 URL-Normalisierung . .
2.3.3 Bereinigung . . . . . . .
2.4 Das Repository . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
3
4
4
5
5
5
6
6
6
7
8
8
3 Techniken zur Effizienzsteigerung
3.1 Parallelisierte Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Fokussierte Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8
9
4 Sicherheit
4.1 Schädliche Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Schädliche Webcrawler . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
9
10
5 Ausblick
10
Literatur
10
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 Einführung
1 Einführung
Das World Wide Web, kurz Web, ist ein System von HTML-Dokumenten – den so
genannten Webseiten –, die in beliebiger Weise mittels URLs [Net05] untereinander
referenziert sind. Abstrakter gesehen, handelt es sich hierbei um einen nicht-zusammenhängenden gerichteten Graphen, dessen Knoten die einzelnen Dokumente repräsentieren
und dessen gerichtete Kanten einen Verweis eines Dokuments auf ein anderes darstellen.
Es existiert also genau dann eine gerichtete Kante (a, b) von Knoten (Dokument) a nach
Knoten b, wenn Dokument a auf Dokument b verweist.
Ein Webcrawler (to crawl – kriechen), auch Webspider oder Webrobot, ist ein Programm,
das Webseiten des Webs analysiert, den ihnen enthaltenen Referenzen folgt und diesen
Prozess – er wird Webcrawling genannt – auf den verwiesenen Webseiten fortsetzt. Der
obigen Abstraktion des Webs entsprechend, ist ein Webcrawler ein Algorithmus, der den
gerichteten Graphen des Webs in einer zu definierenden Art und Weise traversiert.
Insbesondere Web-Suchmaschinen benötigen für die Indizierung von Webseiten einen
Webcrawler. Dort werden die beim Webcrawling gefundenen Webseiten weiteren Verarbeitungsschritten unterzogen und schließlich in einem lokalen Datenspeicher, etwa
einer Datenbank, eingefügt. Dieser lokale Datenspeicher kann dann effizient und schnell
nach gewünschten Informationen durchsucht werden und den Ort der Informationen
im Web angeben. Weitere Beispiele für Anwendungen von Webcrawlern sind das Sammeln von E-Mail-Adresse (meist zu Spam-Zwecken) oder von Bildern auf Webseiten,
Verweis- und HTML-Validierung, Datenschürfung (data mining) und Messungen des
Webs (webometrics).
Wie wir im Folgenden sehen werden, ist der Entwurf eines Webcrawlers nicht unbedingt
trivial.
2 Entwurf eines Webcrawlers
Überreicht nächste URL
WWW
Downloader
Lädt Webseiten
herunter
Parser
Übergibt
Webseite
Frontier
Übergibt URLs
Seed
Repository
Abbildung 1: Aufbau eines Webcrawlers. Inspiriert durch [PSM03] und [Wik07f].
Die Abbildung 1 veranschaulicht den Aufbau eines Webcrawlers. Die im rechten Teil des
Bildes zu erkennende Frontier (the frontier – die Grenze) ist ein System, welches eine
Sammlung von nicht besuchten Verweisen enthält. Bevor das eigentliche Webcrawling
3
2 Entwurf eines Webcrawlers
beginnen kann, werden ihr durch den Benutzer oder durch ein anderes Programm eine
gewissen Menge von Start-URLs (seed ) hinzugefügt. Anschließend wird das Webcrawling
gestartet, indem die Frontier eine dieser Verweise an den Downloader übergibt. Dieser
lädt die durch die URL bestimmte Webseite aus dem Web herunter und überreicht dem
Repository eine Kopie der Seite. Außerdem übergibt der Downloader dem Parser eine
weitere Kopie der Webseite, die dann von ihm nach Verweisen, also URLs, durchsucht
wird. Anschließend erhält die Frontier sämtliche vom Parser gefundenen Verweise. Sie
verarbeitet danach die URLs und der Webcrawling-Prozess beginnt mit der Übergabe
einer neuen URL an den Downloader durch die Frontier von Neuem. Stellt die Frontier
keinen Verweis mehr zur Verfügung, ist das Webcrawling beendet.
Hier lässt sich bereits erkennen, dass die Frontier die Navigation“ – das Traversieren –
”
durch den Graphen des Webs übernimmt.
Im Folgenden werden wir die einzelnen Komponenten Frontier, Downloader, Parser
und Repository genauer betrachten und sehen, mit welchen Problemen diese konfrontiert
werden und mit welchen Strategien sie gelöst werden können.
2.1 Die Frontier
Die Frontier übergibt dem Downloader die nach besonderen Kriterien ausgewählten URLs
der herunterzuladenden Webseiten. Bevor wir uns einige URL-Auswahlverfahren ansehen,
betrachten wir einigen Größen und Eigenschaften des Webs.
2.1.1 Eigenschaften des Webs
Betrachten wir das Web, so stellen wir schnell fest, dass es eine enorm große Anzahl von
Webseiten beinhaltet. Ende Januar 2005 wurden mehr als 11, 5 Milliarden Webseiten
durch Web-Suchmaschinen indiziert [GS05]. Wir müssen daher annehmen, dass wir für
einen Webcrawler nicht annähernd genügend Ressourcen (z. B. Speicherplatz, Rechenzeit)
zur Verfügung haben, um alle Webseiten durchsuchen zu können.
Als weiterhin problematisch ist die dynamische Erstellung von Webseiten zu sehen.
Hierbei werden diese von Web-Technologien wie PHP, Java Server Pages oder Active
Server Pages automatisch, meist aufgrund der Verwendung von Query-Variablen in
den URLs, erzeugt. Unterschiedliche Wertebelegungen dieser Variablen führen dann
zu unterschiedlichen durch ein Programm generierte Webseiten. Außerdem impliziert
allein die beliebige Kombination der Query-Variablen eine große Anzahl an URLs, die
auf dieselbe Webseite verweisen. Seien n ∈ N Query-Variablen gegeben. Dann gibt es
bereits n! verschiedene URLs, die auf eine Webseite zeigen. Außerdem ist es durchaus
möglich, dass, obwohl eine Query-Variable unterschiedliche Werte annimmt, die daraus
resultierenden Verweise auf Webseiten gleichen Inhalts verweisen. Ein Beispiel hiefür ist
die Angabe unterschiedlicher Sortierungen eines Datensatzes über eine Query-Variable.
All dies impliziert in natürlicher Weise, dass der Webcrawler nicht alle Webseiten
besuchen kann und nicht beliebig oft. Folglich muss die Frontier als URL-gebende
Komponente eine Auswahl an zu besuchende URLs treffen. Im Nachstehenden werden
wir einige Strategien zur URL-Selektion angeben.
4
2 Entwurf eines Webcrawlers
2.1.2 URL-Auswahlverfahren
Normalerweise arbeiten Webcrawler zum Finden neuer URLs nur mit Webseiten und
nicht mit anderen Ressourcen wie Bildern oder reinen Textdateien. Daher erscheint es
sinnvoll nur Webseiten aus dem Web herunterzuladen. Mittels des MIME types in der
Content-Type-Eigenschaft einer HTTP-HEAD request oder anhand einer möglicherweise
vorhandenen Dateiendung (z. B. bar.html in der URL http://foo.de/bar.html) im
Pfad-Teil einer URL kann noch vor dem Herunterladen bestimmt werden, um was für eine
Ressource es sich hierbei handelt [Net99]. Außerdem kann die Query der URL eventuell
entfernt werden, um die Anzahl dynamisch erstellter Webseiten einzuschränken (z. B.
http://foo.de/bar.html?sort_id=1 zu http://foo.de/bar.html konvertieren).
Ein sicherlich ebenso naiver Ansatz, die Anzahl der zu besuchenden URLs zu verringern,
ist das Entfernen bereits besuchter Verweise aus der Frontier. Dies lässt sich beispielsweise
mit einer Hash-Table, deren Schlüssel die einzelnen URLs bilden, effizient bewerkstelligen.
So wird beim Einfügen eines Verweises in die Frontier stets getestet, ob diese bereits in
der Hash-Table vorhanden ist. Ist die URL enthalten, wird sie verworfen, sonst wird sie
in die Hash-Table aufgenommen.
Ebenfalls einfach ist die Implementierung der Frontier als Warteschlange (queue).
Hierbei wird eine vom Parser übergebene URL, die sich nicht in der Hash-Table befindet,
also noch nicht besucht wurde, in die Warteschlange aufgenommen. Wie man sich leicht
überlegt, ist dies eine Realisierung der Breitensuche (breadth-first search) im Graphen
des Webs. Da bei alleiniger Verwendung dieser Methode potentiell sehr viele Verweise in
die Warteschlange aufgenommen werden könnten, erweist es sich als sinnvoll, die Anzahl
der URLs schlicht zu begrenzen.
Eine durchaus interessante Möglichkeit, weitere URLs zu erhalten, ist das Genieren
neuer URLs aus bereits vorhandenen – das so genannte path-ascending crawling. Beispielsweise kann man den Pfad-Teil einer URL in Unterpfade zergliedern. So kann etwa
http://foo.de/tier/hund/ zu http://foo.de/tier/ konvertiert werden.
2.2 Der Downloader
Der Downloader lädt die Webseite unter der von der Frontier übergebenen URL herunter
und gibt diese an den Parser und an das Repository weiter. Im Folgenden betrachten wir
die Arbeitsweise eines Webcrawlers und anschließend einige sinnvolle Beschränkungen
beim Herunterladen.
2.2.1 Arbeitsweise
Der Downloader, welcher im Grunde ein einfacher HTTP-Client ist, erhält eine URL von
der Frontier mit deren Hilfe er den entsprechenden HTTP request an den in der URL
angegebenen Server erstellt und sendet. Antwortet der Server, so erhält der Downloader
die HTTP response, die neben einigen Metadaten die eigentliche angeforderte Ressource,
nämlich die Webseite, beinhaltet.
Die Metadaten können für eine nachträgliche Analyse benutzt werden, weshalb die
5
2 Entwurf eines Webcrawlers
Speicherung dieser zweckmäßig ist. So enthält der HTTP response header etwa Fehlerinformationen, z. B. ob die Webseite überhaupt verfügbar ist und Zeitinformationen, z. B.
wann die Webseite zuletzt geändert wurde.
2.2.2 Beschränkungen
Natürlich sollten auch hier wieder einige Beschränkungen vorgenommen werden. So ist
es sinnvoll, den timeout, die Wartezeit des Downloaders auf Antwort des Servers, eher
niedrig zu wählen, um das Webcrawling nicht unnötig zu verzögern. Weiterhin sollte die
Größe der herunterzuladenden Webseite begrenzt werden, um die verfügbare Bandbreite
der Internetverbindung besser zu nutzen und Zeit zu sparen. Dies geschieht, indem einfach
nur die ersten n Bytes der HTTP response vom Downloader gelesen werden (vergleiche
streaming).
Beschränkungen für den Downloader können auch server-seitig vorgenommen werden.
Nicht offiziell standardisiert aber dennoch weit verbreitet ist der Robots Exclusion Standard
[SEL07]. Dabei wird im Wurzelverzeichnis des Servers eine Datei namens robots.txt
abgelegt – z. B. http://foo.de/robots.txt. Diese Datei enthält Regeln über Bereiche
des Server, die nicht vom Webcrawler durchsucht werden sollen. Beispielsweise erlaubt es
User-agent: FooCrawler
Disallow: /private/
dem Webcrawler namens FooCrawler, nicht auf http://foo.de/private/ zuzugreifen.
Wie man leicht erkennt, muss ein Webcrawler diese Angaben nicht unbedingt beachten,
weshalb der Robots Exclusion Standard nur als zusätzliche Maßnahme zur server-seitigen
Beschränkung einzusetzen ist.
2.3 Der Parser
Der Parser durchsucht die vom Downloader überreichte Webseite nach URLs und gibt die
gefundenen URLs danach an die Frontier weiter. Hierzu schauen wir uns nun Verfahren
zur Extraktion der URLs aus Webseiten an. Anschließend zeigen wir Techniken zur URLNormalisierung und zur Normalisierung beziehungsweise Bereinigung von Webseiten.
2.3.1 URL-Extraktion
Die grundlegende Aufgabe des Parsers ist das Finden von URLs in den vom Downloader
heruntergeladenen Webseiten. Diese sind in (X)HTML verfasst, weshalb die enthaltenen
Verweise mit a-Tags 1 , z. B.
<a href="http://foo.de/">Zur Foo-Webseite</a>
1
Allgemein ist ein Tag eine Auszeichnung eines Datums mit zusätzlicher Information. In (X)HTML
gibt es öffnende Tags (z. B.<name>) und schließende Tags (durch Schrägstrich gekennzeichnet,
z. B.</name>).
6
2 Entwurf eines Webcrawlers
definiert sind [W3C02], [W3C99]. Daher ergibt sich die einfache Möglichkeit, die URLs
mittels eines regulären Ausdrucks 2 zu extrahieren [Mic07]. Der reguläre Ausdruck
(?<=href=").+?(?=")
erkennt die im Attribut href in Anführungszeichen stehende URL – aus dem obigen
Beispiel also http://foo.de/.
Mittels eines (X)HTML- beziehungsweise XML-Parsers ergibt sich eine weitere Methode, Verweise in HTML-Dokumenten zu erkennen. Beim Parsen werden die einzelnen Tags
und deren Attribute sequentiell gelesen und ausgewertet. Man beachte, dass ein solcher
Parser nicht nur mit regulären Ausdrücken arbeiten kann, da (X)HTML beziehungsweise
XML keine reguläre Sprachen sind 3 .
Zu beachten ist, dass URLs auch relativ zu einer Basis-URL angeben werden dürfen.
Die Webseite unter http://foo.de/bar.html könnte den relativen Verweis
<a href="xyz.html">Zur XYZ-Webseite</a>
enthalten. Die vollständige, absolute URL heißt in diesem Falle http://foo.de/xyz.
html. Die Basis-URL http://foo.de/ und die relative URL xyz.html werden also
zusammengefügt.
2.3.2 URL-Normalisierung
Wie schon in Abschnitt 2.1.2 erwähnt, ist es wichtig den mehrfachen Besuch einer Webseite
zu vermeiden. Daher ist es von großer Bedeutung, dass der Parser die gewonnenen URLs
für den Vergleich zweier Verweise normalisiert (URL normalization) [Wik07e], [PSM03].
Hierbei werden URLs, die auf dieselbe Webseite verweisen in eine einzige URL konvertiert,
also etwa http://Foo.de/ und http://foo.de:80/ zu http://foo.de/. Fiele hier eine
Normalisierung weg, würde der Downloader die Webseite unter http://foo.de/ zweimal
herunterladen, was natürlich unsinnig wäre.
Im Folgenden sind einige Regeln zur Normalisierung von Verweisen aufgestellt:
• Kleinschreibung des Schema- und des Host-Namens, z. B. HTTP://Foo.de/ wird
konvertiert zu http://foo.de/
• Abschließen eines Verzeichnisses mit einem Schrägstrich (/) im Pfad-Teil der URL,
z. B. http://foo.de wird konvertiert zu http://foo.de/
• Entfernung des Ankers aus der URL, z. B. http://foo.de/bar.html#anchor wird
konvertiert zu http://foo.de/bar.html
2
Ein regulärer Ausdruck ist ein Ausdruck, der eine Menge von Wörtern beschreibt (reguläre Sprache).
Reguläre Ausdrücke können zum Filtern von durch ihn definierten Wörtern aus einem Text benutzt
werden.
3
Formal gesehen sind in XML Wörter der Form an bn mit a = <tag>, b = </tag> und n ∈ N zulässig.
Die Sprache {an bn |n ∈ N} ist keine reguläre Sprache [Pro05]. Hieraus folgt das XML keine reguläre
Sprache ist.
7
3 Techniken zur Effizienzsteigerung
• Sortierung von Query-Variablen, z. B. http://foo.de/bar.html?b=0&a=0&c=0
wird konvertiert zu http://foo.de/bar.html?a=0&b=0&c=0
• Entfernen der Port-Nummer, wenn es sich um den HTTP-Standard-Port 80 handelt,
z. B. http://foo.de:80/ wird konvertiert zu http://foo.de/
2.3.3 Bereinigung
Das Parsen von Webseiten kann zu Problemen führen, wenn die HTML-Dokumente nicht
standard-konform erstellt wurden. Zum Beispiel könnten Tags nicht geschlossen und
Werte von Attributen nicht in Anführungszeichen gesetzt worden sein. Außerdem muss
der Parser mit den verschiedenen (X)HTML-Standards zurechtkommen.
Durch eine genau Analyse könnte der Parser Fehler im HTML-Dokument finden und
beseitigen, also eine gewisse Normalform der Webseite erreichen.
2.4 Das Repository
Der Downloader überträgt eine Kopie der heruntergeladenen Webseite an das Repository,
welches diese im einfachsten Falle nur speichert. Allerdings können im Repository auch
weitere, komplexere Verarbeitungsschritte unternommen werden. So könnte etwa bei
einer Web-Suchmaschine vor der eigentlichen Speicherung die Filterung bedeutender
Informationen aus den Webseiten dort stattfinden.
3 Techniken zur Effizienzsteigerung
Als nächstes betrachten wir zwei Strategien zur Leistungssteigerung von Webcrawlern.
Hierbei gehen wir zunächst auf parallelisierte Webcrawler ein, die die Komponenten
Downloader und Parser gleichzeitig“, also parallel ausführen und anschließend auf
”
fokussierte Webcrawler, die Webseiten inhalts-selektiv herunterladen.
3.1 Parallelisierte Webcrawler
Während der Downloader über das Netzwerk auf einen Server zugreift, ein Dokument
herunterlädt und dabei eine gewisse Zeit bis zur Bedienung warten muss, wird die
Ressource CPU nicht genutzt. Andererseits wird die Ressource Netzwerk nicht verwendet,
wenn etwa das heruntergeladene Dokument vom Parser durchsucht wird. Die Vermeidung
der ineffizienten Nutzung der Ressourcen durch multithreading liegt daher nahe [Wik07d].
Parallel ausgeführt werden im Grunde nur der Downloader und der Parser. Die Frontier
wird nicht parallelisiert, da sie überwacht, welche Webseiten bereits besucht worden
sind und dies anderenfalls nicht mehr gewährleistet werden könnte, beziehungsweise
dies unnötige Komplikationen hervorriefe. Bei der Verwendung einer einzelnen Frontier
müssen, so wie bei allen gemeinsam genutzten Ressourcen, die Zugriffe der einzelnen
Threads auf die Frontier, beziehungsweise auf die Ressourcen synchronisiert werden. Ein
Parser-Thread muss folglich beim Hinzufügen einer URL in die Frontier einen Lock setzen,
8
4 Sicherheit
um den alleinigen Zugriff auf die Frontier zu erhalten. Ein Downloader hingegen muss
einen Lock setzen, wenn er eine URL in die Frontier einfügen will. Wie oben bereits
erwähnt, müssen die einzelnen Threads exklusiven Zugriff auf sämtliche gemeinsam
genutzten Ressourcen bekommen, so auch auf die Komponente Repository.
Stellt die Frontier im Falle eines nicht-parallelisierten Webcrawlers keine URL mehr
bereit, so ist das Webcrawling abgeschlossen. Im Falle parallelisierter Webcrawler ist diese
Situation nicht unbedingt gegeben: Bekommt ein Downloader-Thread von der Frontier
keine weitere URL, bedeutet dies nicht zwangsweise das Ende des Webcrawlings, da
ein Parser-Thread kurz darauf neue URLs an die Frontier übergeben könnte und somit
Verweise für einen Downloader-Thread verfügbar wären. Erst wenn die Frontier keinen
Verweis bereitstellen kann und keine Parser- und Downloader-Threads mehr aktiv sind,
ist das Webcrawling beendet. Dies impliziert, dass eine zusätzliche Instanz benötigt wird,
die die Threads und die Frontier überwacht und synchronisiert.
3.2 Fokussierte Webcrawler
Ein fokussierter Webcrawler, focused crawler oder topical crawler ist ein Webcrawler, der
nur Webseiten gewisser vorgegebener Themen herunterlädt und durchsucht. Er ignoriert
also im Idealfall alle Webseiten, die nicht den vorgegebenen Themen entsprechen. Topical
crawler wurden zuerst von Menczer [Men97] vorgeschlagen und focused crawlers von
Chakrabarti [CBD99].
Die größte Schwierigkeit fokussierter Webcrawler besteht darin, zu bestimmen, welche
Webseiten zu den Vorgaben gehören, noch bevor sie heruntergeladen werden. Ein Ansatz
ist, den Beschreibungstext der URLs in einem HTML-Dokument auf Zugehörigkeit zu
den vorgegebenen Themen zu prüfen und bei positiver Auswertung herunterzuladen.
4 Sicherheit
In diesem Abschnitt betrachten wir Sicherheitsaspekte bezüglich Webcrawler aus der
Sicht von Servern und aus der Sicht von Webcrawlern.
4.1 Schädliche Server
Es existieren server-seitige Möglichkeiten, einen Webcrawler zu schädigen. Beispielsweise
sind Webcrawler-Fallen – so genannte spider traps oder crawler traps – Webseiten, die
Verweisstrukturen realisieren, welche einen Webcrawler veranlassen, sich gewissermaßen
von unbrauchbarer Webseite zu unbrauchbarer Webseite theoretisch unendlich weit fortzubewegen [Wik07c]. Folglich verschwendet der Webcrawler dann seine eigenen Ressourcen.
Normalerweise erkennt der Webcrawler bereits besuchte Webseiten, allerdings ist dies, wie
im folgenden Beispiel dargestellt, nicht immer trivial möglich: Auf dem Webserver steht
uns eine Web-Skriptsprache, etwa PHP, zur Verfügung. Weiterhin sei ϕ ∈ N. Wir erstellen
nun eine Webseite unter http://foo.de/trap.html?x=ϕ. Das Skript ließt den Wert der
Query-Variable x in die Skript-Variable $x ein. Folglich gilt $x = ϕ. Anschließend wird
9
5 Ausblick
$x durch $x := $x + 1 um 1 erhöht. Daraufhin erstellt das Skript in der trap.html den
Verweis http://foo.de/trap.html?x=$x, also http://foo.de/trap.html?x=ϕ + 1. So
wird der Webcrawler immer wieder auf die trap.html weitergeleitet und bleibt dort,
bildlich gesprochen, stecken.
4.2 Schädliche Webcrawler
Normalerweise sendet ein HTTP-Client, so auch der Webcrawler, bei einer HTTPAnfrage eine ihn identifizierende Zeichenkette in der User-Agent-Eigenschaft mit. Ein
Server hätte somit die Möglichkeit, einen bekannten Webcrawler nicht zu bedienen.
Da ein Webcrawler diese Zeichenkette beliebig festlegen kann, ist er in der Lage, sich
als einen bekannten HTTP-Client, z. B. als Web-Browser, auszugeben und sich somit
des eventuellen Ausschlusses des Servers zu entziehen. Dieses Verschleiern seitens des
Webcrawlers ist insbesondere für folgende Betrachtung wichtig.
Webcrawler können zum Sammeln von Daten zweckentfremdet werden. Besonders
schädlich sind Webcrawler, die E-Mail-Adressen aus Webseiten extrahieren und diese
dann für Spam verwenden (E-Mail-Harvester ). Mit Hilfe des regulären Ausdrucks
[A-Z0-9._%+-]+?@[A-Z0-9.-]+?\.[A-Z]{2,4}
können E-Mail-Adressen in einem HTML-Dokument erkannt werden.
Abschließend sei noch erwähnt, dass der Einsatz einer Webcrawler-Falle auf betroffenen
Servern im Falle schädlicher Webcrawler durchaus gerechtfertigt ist.
5 Ausblick
Wie wir gesehen haben, ist Webcrawling ein wichtiges Mittel zur Informationsbeschaffung aus dem Web. Insbesondere Web-Suchmaschinen benötigen diese, um das Web zu
indizieren.
Problematisch ist die Erschließung des so genannten deep webs [Wik07a]. Dazu gehören etwa dynamische Webseiten, nicht-verwiesene Webseiten und Webseiten, die durch
Authentifizierung geschützt sind. Diese Ressourcen können von einem Webcrawler nicht
durchsucht oder erst gar nicht gefunden werden.
Webcrawler werden in Zukunft wahrscheinlich genauere Analysen der HTML-Dokumente vornehmen und enger mit Wissensdatenbanken zusammenarbeiten, um effizienter
und zielgerichteter durch das Web navigieren zu können.
Webcrawling bleibt Gegenstand aktueller Forschung.
Literatur
[CBD99]
Chakrabarti, Soumen ; Berg, Martin van d. ; Dom, Byron: Focused
crawling: a new approach to topic-specific Web resource discovery. In: WWW
’99: Proceeding of the eighth international conference on World Wide Web.
New York, NY, USA : Elsevier North-Holland, Inc., 1999, S. 1623–1640
10
Literatur
[GS05]
Gulli, Antonio ; Signorini, Alessio: The Indexable Web is More than 11.5
billion pages. (2005). http://www.cs.uiowa.edu/~asignori/web-size/
size-indexable-web.pdf
[LWZD03] Lother, Mathias ; Wille, Cornelius ; Zbrog, Fritz ; Dumke, Reiner: Web
Engineering. Pearson Studium, Addison Wesley, 2003
[Men97]
Menczer, Filippo: ARACHNID: Adaptive Retrieval Agents Choosing Heuristic Neighborhoods for Information Discovery. In: Machine Learning: Proceedings of the Fourteenth International Conference, 1997, S. 227–235
[Mic07]
Microsoft Corporation:
.NET Framework Regular Expressihttp://msdn2.microsoft.com/en-us/library/hs600312(VS.71)
ons.
.aspx. Version: 2007
[Net99]
Network Working Group: Hypertext Transfer Protocol – HTTP/1.1.
http://tools.ietf.org/html/rfc2616. Version: 1999
[Net05]
Network Working Group: Uniform Resource Identifier (URI): Generic
Syntax. http://tools.ietf.org/html/rfc3986. Version: 2005
[Pro05]
Prof. Dr. Jürgen Dassow: Theoretische Informatik – Vorlesungsmanuskript. (2005), Seite 88. http://theo.cs.uni-magdeburg.de/lehre06s/
ti2_if/ti_if04_s03.pdf
[PSM03]
Pant, G. ; Srinivasan, P. ; Menczer, F.: Crawling the Web. (2003).
http://dollar.biz.uiowa.edu/~pant/Papers/crawling.pdf
[SEL07]
SELFHTML e.V.: robots.txt – Robots kontrollieren. http://de.selfhtml.
org/diverses/robots.htm. Version: 2007
[W3C99]
W3C:
HTML 4.01 Specification.
Version: 1999
[W3C02]
W3C: XHTML 1.0 The Extensible HyperText Markup Language (Second
Edition). http://www.w3.org/TR/xhtml1/. Version: 2002
[Wik07a]
Wikipedia: Deep Web — Wikipedia, The Free Encyclopedia. http:
//en.wikipedia.org/w/index.php?title=Deep_Web&oldid=171212481.
Version: 2007. – [Online; accessed 25-November-2007]
[Wik07b]
Wikipedia:
Focused crawler — Wikipedia, The Free Encyclopedia.
http://en.wikipedia.org/w/index.php?title=Focused_
crawler&oldid=171623416.
Version: 2007. –
[Online; accessed 25November-2007]
[Wik07c]
Wikipedia: Spider trap — Wikipedia, The Free Encyclopedia. http://
en.wikipedia.org/w/index.php?title=Spider_trap&oldid=157589993.
Version: 2007. – [Online; accessed 25-November-2007]
11
http://www.w3.org/TR/html4/.
Literatur
[Wik07d]
Wikipedia:
Thread (computer science) — Wikipedia, The Free
Encyclopedia.
http://en.wikipedia.org/w/index.php?title=Thread_
%28computer_science%29&oldid=173164036. Version: 2007. – [Online; accessed 26-November-2007]
[Wik07e]
Wikipedia:
URL normalization — Wikipedia, The Free Enhttp://en.wikipedia.org/w/index.php?title=URL_
cyclopedia.
normalization&oldid=172409602. Version: 2007. – [Online; accessed
25-November-2007]
[Wik07f]
Wikipedia: Web crawler — Wikipedia, The Free Encyclopedia. http://
en.wikipedia.org/w/index.php?title=Web_crawler&oldid=173326480.
Version: 2007. – [Online; accessed 25-November-2007]
12