====== Contrôler les liens hypertexte d'un site ======
===== Problématiques =====
==== Authentification http ====
On utilise cette technique pour filtrer l'accès à des ressources. Elle utilise des mécanismes de base du protocole http. On la rencontre souvent à travers l'authentification par [[http://www.securiteinfo.com/conseils/htaccess.shtml|htaccess]]. Cette technique est souvent utilisée pour filtrer l'accès à un site de développement ou de préproduction. On l'applique alors au site, dans sa totalité.
En imposant l'authentification aux internautes, on l'impose aussi au robots d'analyse. Il faudra donc, selon les cas, configurer les robots pour qu'il puissent accéder au site ou renoncer à certains outils qui ne savent pas traiter ce type de situation.
==== Résultats d'analyse ====
==== Répétition de contrôle ====
==== Site Map ====
===== Validité des liens =====
==== Linkchecker ====
L'outil open source [[http://wummel.github.io/linkchecker/|linkchecker]] propose trois interfaces : ligne de commande, graphique, web.
L'interface graphique permet une prise en main et une exploitation immédiate des résultats. Elle permet très peu de réglages mais intègre un éditeur graphique permettant d'attaquer directement le fichier de configuration (//~/.linkchecker/linkcheckerrc//).
L'outil est très configurable et permet notamment :
* l'authenfication http,
* l'enrichissement des résultats (détection d'expressions régulières dans les pages),
* l'exclusion de certaines pages (expression régulières),
* de nombreux formats de sortie (html, xml, csv, txt, site map…).
Installation facile :
# apt-get install w3c-linkchecker
=== Insallation ===
Pour une utilisation simple, à traver l'interface graphique :
# apt-get install linkchecker-gui
Si on veut la dernière version //all.deb// : http://ftp.debian.org/debian/pool/main/l/linkchecker/
=== Authentification http ===
Il faut éditer le fichier de configuration. Dans la section //[authentication]//, le paramètre //entry// est une succession de ligne de triplets : url login passwd. L'url est définie par une expression régulière. Exemple :
entry= ^http://monsite\.org/ moi secret
^https://autresite\.org/ elle secrete
=== Envoi des résultats ===
sources : [[http://backreference.org/2013/05/22/send-email-with-attachments-from-script-or-command-line/|Send email with attachment(s) from script or command line]] (en)
En ligne de commande, il est facile de coupler //linkchecker// à un envoi de mail. Par exemple :
linkchecker -r1 -o html --file-output=html/liencasses.html http://hotline.asdrad.com | mail -a "Mime-Version: 1.0" -a "Content-Type: text/html" -s "Liens casses" me@mydom.tld
Ce type de commande peut être lancé périodiquement…
Il faut toutefois faire attention à la version de la commande mail installée sur votre système. Dans l'exemple précédent, le format de sortie étant html, il faut ajouter des entêtes de mail pour que le message soit correctement affiché à la destinaire. La version standard de la commande //mail// installée sous Debian accepte ce type de paramètre. La version de //mail// installée comme dépendance de certaines applications, peut être heirloom-mailx, qui n'accepte pas ce paramétrage((Il lui associe une autre signification (pièce-jointe). Cela impose d'intervenir sur la sortie de //linkchecker// pour y ajouter les entêtes manquants.)). Un //man mail// sur votre système devrais vous indiquer comment sera interprété le paramètre //-a//.
==== Checkbot ====
[[http://sourceforge.net/projects/checkbot/|Checkbot]] est un outil en ligne de commande bien pratique pour une vérification périodique.
Installation super simple :
# apt-get install checkbot
Utilisation basique :
$ checkbot http://mon-truc.org/
L'un de ses défaut est de ne pas distinguer, par défaut, les liens au sens du code html de la page des segments de texte ayant une allure d'URL. En gros, l'outil effectue une auto-détection des liens implicites.
Ça peut sûrement se paramétrer. À étudier…
==== gURLChecker ====
gURLChecker offre une interface graphique sans prétention mais bien pratique pour faire des contrôles pas si basiques que ça.
Pour l'exploration, on peut filtrer certains motifs, limiter les extensions de fichiers à analyser, autoriser l'authentification (en interactif uniquement), contrôler la présence de virus !
Elle permet un affichage sélectif des résultats par statut, type de document ou protocole (toutes combinaisons possible par cases à cocher).
Tous ces réglages sont sauvegardés sous forme de projet.
Le point faible est l'export des résultats : aucun ! On enregistre les résultats au format de l'application.
//Version testée : 0.13.1//
# apt-get install
==== linklint ====
Linklint est un outil en ligne de commande doté de puissantes capacités de paramétrage du protocole (port, headers http, authentification…) en plus des filtrages classiques.
Il s'applique aussi bien à un site local qu'à un site distant.
Les résultats sont structurés en fichiers texte et/ou html. Certes, il sont directement exploitables en l'état mais leur export sous d'autres formats nécessite un peu d'ingénierie documentaire puisque rien n'est fourni par l'outil.
# apt-get install linklint