linkchecker [Optionen]
[Datei-oder-URL]...
LinkChecker beinhaltet
- rekursives Prüfen und Multithreading
- Ausgabe als farbigen oder normalen Text, HTML, SQL, CSV, XML oder einen
Sitemap-Graphen in verschiedenen Formaten
- Unterstützung von HTTP/1.1, HTTPS, FTP, mailto:, news:, nntp:,
Telnet und Verknüpfungen auf lokale Dateien
- Einschränkung der Linküberprüfung mit
URL-Filter,
- Proxy-Unterstützung
- Benutzer/Passwort Authorisierung für HTTP, FTP und Telnet
- Unterstützung des robots.txt Protokolls
- Unterstützung für Cookies
- Unterstützung für HTML5
- HTML- und CSS-Syntaxprüfung
- Antivirusprüfung
- ein Kommandozeilenprogramm, GUI und web interface
Der häufigste Gebrauchsfall prüft die angegebene
Domäne rekursiv, inklusive aller einzelnen nach außen
zeigenden Verknüpfungen:
linkchecker http://www.example.net/
Beachten Sie dass dies die komplette Domäne überprüft,
welche aus mehreren tausend URLs bestehen kann. Benutzen Sie die Option
-r, um die Rekursionstiefe zu beschränken.
Prüfe keine mailto: URLs. Alle anderen Verknüpfungen
werden wie üblich geprüft:
linkchecker --ignore-url=^mailto: mysite.example.org
Überprüfung einer lokalen HTML Datei unter Unix:
linkchecker ../bla.html
Überprüfung einer lokalen HTML Datei unter Windows:
linkchecker c:\temp\test.html
Sie können den http:// URL Anteil weglassen wenn die
Domäne mit www. beginnt:
linkchecker www.example.com
Sie können den ftp:// URL Anteil weglassen wenn die
Domäne mit ftp. beginnt:
linkchecker -r0 ftp.example.org
Erzeuge einen Sitemap Graphen und konvertiere ihn mit dem graphviz dot
Programm:
linkchecker -odot -v www.example.com | dot -Tps > sitemap.ps
- -fDATEINAME,
--config=DATEINAME
- Benutze DATEINAME als Konfigurationsdatei.
Standardmäßig benutzt LinkChecker
~/.linkchecker/linkcheckerrc.
- -h, --help
- Hilfe! Gebe Gebrauchsanweisung für dieses Programm aus.
- --stdin
- Lese Liste von URLs zum Prüfen von der Standardeingabe, getrennt
durch Leerzeichen.
- -tNUMMER,
--threads=NUMMER
- Generiere nicht mehr als die angegebene Anzahl von Threads. Standard
Anzahl von Threads ist 100. Um Threads zu deaktivieren, geben Sie eine
nicht positive Nummer an.
- -V, --version
- Gebe die Version aus und beende das Programm.
- --check-css
- Prüfe Syntax von CSS URLs mit dem W3C Online Validator.
- --check-html
- Prüfe Syntax von HTML URLs mit dem W3C Online Validator.
- --complete
- Gebe alle geprüften URLs aus. Standard ist es, doppelte URLs nur
einmal auszugeben.
- -DNAME,
--debug=NAME
- Gebe Testmeldungen aus für den angegebenen Logger.
Verfügbare Logger sind cmdline,
checking,cache, gui, dns und all. Die
Angabe all ist ein Synonym für alle verfügbaren
Logger. Diese Option kann mehrmals angegeben werden, um mit mehr als einem
Logger zu testen. Um akkurate Ergebnisse zu erzielen, werden Threads
deaktiviert.
- -FTYP[/ENKODIERUNG][/DATEINAME],
--file-output=TYP[/ENKODIERUNG][/DATEINAME]
- Ausgabe in eine Datei namens linkchecker-out.TYP,
$HOME/.linkchecker/blacklist bei blacklist Ausgabe, oder
DATEINAME falls angegeben. Das ENCODING gibt die
Ausgabekodierung an. Der Standard ist das der lokalen Spracheinstellung.
Gültige Enkodierungen sind aufgelistet unter
http://docs.python.org/library/codecs.html#standard-encodings.
Der DATEINAME und ENKODIERUNG Teil wird beim Ausgabetyp
none ignoriert, ansonsten wird die Datei überschrieben falls
sie existiert. Sie können diese Option mehr als einmal verwenden.
Gültige Ausgabetypen sind text, html, sql,
csv, gml, dot, xml, sitemap,
none oder blacklist. Standard ist keine Dateiausgabe. Die
unterschiedlichen Ausgabetypen sind weiter unten dokumentiert. Beachten
Sie, dass Sie mit der Option -o none jegliche Ausgaben auf der
Konsole verhindern können.
- --no-status
- Gebe keine Statusmeldungen aus.
- --no-warnings
- Gebe keine Warnungen aus. Standard ist die Ausgabe von Warnungen.
- -oTYP[/ENKODIERUNG],
--output=TYP[/ENKODIERUNG]
- Gib Ausgabetyp als text, html, sql, csv,
gml, dot, xml, sitemap, none oder
blacklist an. Stadard Typ ist text. Die verschiedenen
Ausgabetypen sind unten dokumentiert.
Das ENCODING gibt die Ausgabekodierung an. Der Standard ist das der
lokalen Spracheinstellung. Gültige Enkodierungen sind aufgelistet
unter
http://docs.python.org/library/codecs.html#standard-encodings.
- -q, --quiet
- Keine Ausgabe, ein Alias für -o none. Dies ist nur in
Verbindung mit -F nützlich.
- --scan-virus
- Prüfe Inhalt von URLs auf Viren mit ClamAV.
- --trace
- Trace-Information ausgeben.
- -v, --verbose
- Gebe alle geprüften URLs aus. Standard ist es, nur fehlerhafte URLs
und Warnungen auszugeben.
- -WREGEX,
--warning-regex=REGEX
- Definieren Sie einen regulären Ausdruck der eine Warnung ausgibt
falls er auf den Inhalt einer geprüften URL zutrifft. Dies gilt nur
für gültige Seiten deren Inhalt wir bekommen können.
Benutzen Sie dies, um nach Seiten zu suchen, welche bestimmte Fehler
enthalten, zum Beispiel "Diese Seite ist umgezogen" oder
"Oracle Applikationsfehler".
Man beachte, dass mehrere Werte in dem regulären Ausdruck kombiniert
werden können, zum Beispiel "(Diese Seite ist umgezogen|Oracle
Applikationsfehler)".
Siehe Abschnitt REGULAR EXPRESSIONS für weitere Infos.
- --warning-size-bytes=NUMMER
- Gebe eine Warnung aus, wenn die Inhaltsgröße bekannt ist und
die angegebene Anzahl von Bytes übersteigt.
- -a, --anchors
- Prüfe HTTP Ankerverweise. Standard ist, Ankerverweise nicht zu
prüfen. Diese Option aktiviert die Ausgabe der Warnung
url-anchor-not-found.
- -C, --cookies
- Akzeptiere und sende HTTP Cookies nach der RFC 2109. Lediglich Cookies,
die zum ursprünglichen Server zurückgesendet werden, werden
akzeptiert. Gesendete und akzeptierte Cookies werden als
zusätzlicheLoginformation aufgeführt.
- --cookiefile=DATEINAME
- Lese eine Datei mit Cookie-Daten. Das Cookie Datenformat wird weiter unten
erklärt.
- --ignore-url=REGEX
- URLs welche dem angegebenen regulären Ausdruck entsprechen werden
ignoriert und nicht geprüft.
Diese Option kann mehrmals angegeben werden.
Siehe Abschnitt REGULAR EXPRESSIONS für weitere Infos.
- -NNAME,
--nntp-server=NAME
- Gibt ein NNTP Rechner für news: Links. Standard ist die
Umgebungsvariable NNTP_SERVER. Falls kein Rechner angegeben ist,
wird lediglich auf korrekte Syntax des Links geprüft.
- --no-follow-url=REGEX
- Prüfe URLs, welche dem angegebenen regulären Ausdruck
entsprechen, aber führe keine Rekursion durch.
Diese Option kann mehrmals angegeben werden.
Siehe Abschnitt REGULAR EXPRESSIONS für weitere Infos.
- -p,
--password
- Liest ein Passwort von der Kommandozeile und verwende es für HTTP
und FTP Autorisierung. Für FTP ist das Standardpasswort
anonymous@. Für HTTP gibt es kein Standardpasswort. Siehe
auch -u.
- -PNUMMER,
--pause=NUMMER
- Pausiere die angegebene Anzahl von Sekunden zwischen zwei aufeinander
folgenden Verbindungen zum demselben Rechner. Standard ist keine Pause
zwischen Verbindungen.
- -rNUMMER,
--recursion-level=NUMMER
- Prüfe rekursiv alle URLs bis zu der angegebenen Tiefe. Eine
negative Tiefe bewirkt unendliche Rekursion. Standard Tiefe ist
unendlich.
- --timeout=NUMMER
- Setze den Timeout für TCP-Verbindungen in Sekunden. Der Standard
Timeout ist 60 Sekunden.
- -uNAME,
--user=NAME
- Verwende den angegebenen Benutzernamen für HTTP und FTP
Autorisierung. Für FTP ist der Standardname anonymous.
Für HTTP gibt es keinen Standardnamen. Siehe auch -p.
- --user-agent=STRING
- Gibt den User-Agent an, der zu HTTP-Servern geschickt wird, z.B.
"Mozilla/4.0". Der Standard ist "LinkChecker/X.Y",
wobei X.Y die aktuelle Version von LinkChecker ist.
Konfigurationsdateien können alle obigen Optionen
enthalten. Sie können zudem Optionen enthalten, welche nicht auf der
Kommandozeile gesetzt werden können. Siehe linkcheckerrc(5)
für mehr Informationen.
Beachten Sie, dass standardmäßig nur Fehler und
Warnungen protokolliert werden. Sie sollten die --verbose Option
benutzen, um eine komplette URL Liste zu erhalten, besonders bei Ausgabe
eines Sitemap-Graphen.
- text
- Standard Textausgabe in "Schlüssel: Wert"-Form.
- html
- Gebe URLs in "Schlüssel: Wert"-Form als HTML formatiert
aus. Besitzt zudem Verknüpfungen auf die referenzierten Seiten.
Ungültige URLs haben Verknüpfungen zur HTML und CSS
Syntaxprüfung angehängt.
- csv
- Gebe Prüfresultat in CSV-Format aus mit einer URL pro Zeile.
- gml
- Gebe Vater-Kind Beziehungen zwischen verknüpften URLs als GML
Graphen aus.
- dot
- Gebe Vater-Kind Beziehungen zwischen verknüpften URLs als DOT
Graphen aus.
- gxml
- Gebe Prüfresultat als GraphXML-Datei aus.
- xml
- Gebe Prüfresultat als maschinenlesbare XML-Datei aus.
- sitemap
- Protokolliere Prüfergebnisse als XML Sitemap dessen Format unter
http://www.sitemaps.org/protocol.html dokumentiert ist.
- sql
- Gebe Prüfresultat als SQL Skript mit INSERT Befehlen aus. Ein
Beispielskript, um die initiale SQL Tabelle zu erstellen ist unter
create.sql zu finden.
- blacklist
- Für Cronjobs geeignet. Gibt das Prüfergebnis in eine Datei
~/.linkchecker/blacklist aus, welche nur Einträge mit
fehlerhaften URLs und die Anzahl der Fehlversuche enthält.
- none
- Gibt nichts aus. Für Debugging oder Prüfen des
Rückgabewerts geeignet.
LinkChecker akzeptiert Pythons reguläre Ausdrücke.
Siehe http://docs.python.org/howto/regex.html für eine
Einführung.
Eine Ergänzung ist, dass ein regulärer Ausdruck
negiert wird falls er mit einem Ausrufezeichen beginnt.
Eine Cookie-Datei enthält Standard HTTP-Header (RFC 2616)
mit den folgenden möglichen Namen:
- Scheme
(optional)
- Setzt das Schema für das die Cookies gültig sind;
Standardschema ist http.
- Host
(erforderlich)
- Setzt die Domäne für die die Cookies gültig
sind.
- Path
(optional)
- Gibt den Pfad für den die Cookies gültig sind; Standardpfad
ist /.
- Set-cookie
(optional)
- Setzt den Cookie Name/Wert. Kann mehrmals angegeben werden.
Mehrere Einträge sind durch eine Leerzeile zu trennen. Das
untige Beispiel sendet zwei Cookies zu allen URLs die mit
http://example.org/hello/ beginnen, und eins zu allen URLs die mit
https://example.org beginnen:
Host: example.com
Path: /hello
Set-cookie: ID="smee"
Set-cookie: spam="egg"
Scheme: https
Host: example.org
Set-cookie: baggage="elitist"; comment="hologram"
Um einen Proxy unter Unix oder Windows zu benutzen, setzen Sie die
$http_proxy, $https_proxy oder $ftp_proxy Umgebungsvariablen auf die Proxy
URL. Die URL sollte die Form
http://[user:pass@]host[:port]
besitzen. LinkChecker erkennt auch die Proxy-Einstellungen des Internet
Explorers auf einem Windows-System. Auf einem Mac benutzen Sie die Internet
Konfiguration. Sie können eine komma-separierte Liste von Domainnamen
in der $no_proxy Umgebungsvariable setzen, um alle Proxies für diese
Domainnamen zu ignorieren. Einen HTTP-Proxy unter Unix anzugeben sieht
beispielsweise so aus:
export http_proxy="http://proxy.example.com:8080"
Proxy-Authentifizierung wird ebenfalls unterstützt:
export http_proxy="http://user1:mypass@proxy.example.org:8081"
Setzen eines Proxies unter der Windows Befehlszeile:
set http_proxy=http://proxy.example.com:8080
Alle URLs müssen einen ersten Syntaxtest bestehen. Kleine
Kodierungsfehler ergeben eine Warnung, jede andere ungültige
Syntaxfehler sind Fehler. Nach dem Bestehen des Syntaxtests wird die URL in
die Schlange zum Verbindungstest gestellt. Alle Verbindungstests sind weiter
unten beschrieben.
- HTTP Verknüpfungen
(http:, https:)
- Nach Verbinden zu dem gegebenen HTTP-Server wird der eingegebene Pfad oder
Query angefordert. Alle Umleitungen werden verfolgt, und falls ein
Benutzer/Passwort angegeben wurde werden diese falls notwendig als
Authorisierung benutzt. Permanent umgezogene Webseiten werden als Warnung
ausgegeben. Alle finalen HTTP Statuscodes, die nicht dem Muster 2xx
entsprechen, werden als Fehler ausgegeben. Der Inhalt von HTML-Seiten wird
rekursiv geprüft.
- Lokale Dateien
(file:)
- Eine reguläre, lesbare Datei die geöffnet werden kann ist
gültig. Ein lesbares Verzeichnis ist ebenfalls gültig. Alle
anderen Dateien, zum Beispiel Gerätedateien, unlesbare oder nicht
existente Dateien ergeben einen Fehler. HTML- oder andere untersuchbare
Dateiinhalte werden rekursiv geprüft.
- Mail-Links
(mailto:)
- Ein mailto:-Link ergibt eine Liste von E-Mail-Adressen. Falls eine Adresse
fehlerhaft ist, wird die ganze Liste als fehlerhaft angesehen. Für
jede E-Mail-Adresse werden die folgenden Dinge geprüft:
1) Prüfe die Syntax der Adresse, sowohl den Teil vor als auch nach
dem @-Zeichen.
2) Schlage den MX DNS-Datensatz nach. Falls kein MX Datensatz gefunden
wurde, wird ein Fehler ausgegeben.
3) Prüfe, ob einer der Mail-Rechner eine SMTP-Verbindung akzeptiert.
Rechner mit höherer Priorität werden zuerst geprüft.
Fall kein Rechner SMTP-Verbindungen akzeptiert, wird eine Warnung
ausgegeben.
4) Versuche, die Adresse mit dem VRFY-Befehl zu verifizieren. Falls eine
Antwort kommt, wird die verifizierte Adresse als Information
ausgegeben.
- FTP-Links (ftp:)
-
Für FTP-Links wird Folgendes geprüft:
1) Eine Verbindung zum angegeben Rechner wird aufgebaut
2) Versuche, sich mit dem gegebenen Nutzer und Passwort anzumelden. Der
Standardbenutzer ist “anonymous“, das Standardpasswort ist
“anonymous@“.
3) Versuche, in das angegebene Verzeichnis zu wechseln
4) Liste die Dateien im Verzeichnis auf mit dem NLST-Befehl
- Telnet-Links
(“telnet:“)
-
Versuche, zu dem angegeben Telnetrechner zu verginden und falls
Benutzer/Passwort angegeben sind, wird versucht, sich anzumelden.
- NNTP-Links
(“news:“, “snews:“,
“nntp“)
-
Versuche, zu dem angegebenen NNTP-Rechner eine Verbindung aufzubaucne.
Falls eine Nachrichtengruppe oder ein bestimmter Artikel angegeben ist,
wird versucht, diese Gruppe oder diesen Artikel vom Rechner
anzufragen.
- Nicht unterstützte
Links (“javascript:“, etc.)
-
Ein nicht unterstützter Link wird nur eine Warnung ausgeben.
Weitere Prüfungen werden nicht durchgeführt.
Die komplette Liste von erkannten, aber nicht unterstützten Links
ist in der
Quelldatei linkcheck/checker/unknownurl.py. Die bekanntesten davon
dürften JavaScript-Links sein.
Bevor eine URL rekursiv geprüft wird, hat diese mehrere
Bedingungen zu erfüllen. Diese werden in folgender Reihenfolge
geprüft:
1. Eine URL muss gültig sein.
2. Der URL-Inhalt muss analysierbar sein. Dies beinhaltet zur Zeit
HTML-Dateien, Opera Lesezeichen, und Verzeichnisse. Falls ein Dateityp nicht
erkannt wird, (zum Beispiel weil er keine bekannte HTML-Dateierweiterung
besitzt, und der Inhalt nicht nach HTML aussieht), wird der Inhalt als nicht
analysierbar angesehen.
3. Der URL-Inhalt muss ladbar sein. Dies ist normalerweise der
Fall, mit Ausnahme von mailto: oder unbekannten URL-Typen.
4. Die maximale Rekursionstiefe darf nicht überschritten
werden. Diese wird mit der Option --recursion-level konfiguriert und
ist standardmäßig nicht limitiert.
5. Die URL darf nicht in der Liste von ignorierten URLs sein. Die
ignorierten URLs werden mit der Option --ignore-url konfiguriert.
6. Das Robots Exclusion Protocol muss es erlauben, dass
Verknüpfungen in der URL rekursiv verfolgt werden können. Dies
wird geprüft, indem in den HTML Kopfdaten nach der
"nofollow"-Direktive gesucht wird.
Beachten Sie, dass die Verzeichnisrekursion alle Dateien in diesem
Verzeichnis liest, nicht nur eine Untermenge wie bspw.
index.html*.
URLs von der Kommandozeile die mit ftp. beginnen werden wie
ftp://ftp. behandelt, URLs die mit www. beginnen wie
http://www.. Sie können auch lokale Dateien angeben.
Falls sich Ihr System automatisch mit dem Internet verbindet (z.B.
mit diald), wird es dies tun wenn Sie Links prüfen, die nicht auf
Ihren lokalen Rechner verweisen Benutzen Sie die Option --ignore-url,
um dies zu verhindern.
Javascript Links werden nicht unterstützt.
Wenn Ihr System keine Threads unterstützt, deaktiviert
diese LinkChecker automatisch.
Sie können mehrere Benutzer/Passwort Paare in einer
Konfigurationsdatei angeben.
Beim Prüfen von news: Links muß der
angegebene NNTP Rechner nicht unbedingt derselbe wie der des Benutzers
sein.
NNTP_SERVER - gibt Standard NNTP Server an
http_proxy - gibt Standard HTTP Proxy an
ftp_proxy - gibt Standard FTP Proxy an
no_proxy - kommaseparierte Liste von Domains, die nicht über
einen Proxy-Server kontaktiert werden
LC_MESSAGES, LANG, LANGUAGE - gibt Ausgabesprache an
Der Rückgabewert ist 2 falls
- ein Programmfehler aufgetreten ist.
Der Rückgabewert ist 1 falls
- ungültige Verknüpfungen gefunden wurden oder
- Warnungen gefunden wurden und Warnungen aktiviert sind
Sonst ist der Rückgabewert Null.
LinkChecker benutzt Hauptspeicher für jede zu
prüfende URL, die in der Warteschlange steht. Mit tausenden solcher
URLs kann die Menge des benutzten Hauptspeichers sehr groß werden.
Dies könnte das Programm oder sogar das gesamte System
verlangsamen.
~/.linkchecker/linkcheckerrc - Standardkonfigurationsdatei
~/.linkchecker/blacklist - Standard Dateiname der blacklist Logger
Ausgabe
linkchecker-out.TYP - Standard Dateiname der Logausgabe
http://docs.python.org/library/codecs.html#standard-encodings -
gültige Ausgabe Enkodierungen
http://docs.python.org/howto/regex.html - Dokumentation zu
regulären Ausdrücken
Bastian Kleineidam <bastian.kleineidam@web.de>
Copyright © 2000-2014 Bastian Kleineidam