English (UK)
Français (France)
Brezhoneg (Breizh)

HTTPS la terreur de votre site web

January 10 2018

Bonjour à toutes et à tous,


On commence l'année, en douceur, avec un petit programme qui pourrait s'avérer vous être utile si vous avez un site internet :)
N'avez-vous pas remarqué, que depuis quelques mois, certains sites que vous visitez ont perdu de leur contenu ?

À vrai dire, cela n'est pas lié au contenu lui-même de vos sites favoris, mais aux politiques des navigateurs, qui mettent en garde les utilisateurs lorsqu'ils saisissent des données dans des formulaires non sécurisés, ou lorsque des ressources non sécurisées sont appelées depuis des contextes sécurisés.
Nos sites favoris, ou tout du moins, les plus gros d'entre eux ont été mis à jour et ont vu leur protocole http évoluer vers du https.
Nul doute, toutefois, que cette évolution s'est faite dans la douleur pour beaucoup de sites de plus petite taille et notamment les blogs personnels qui ont dû se mettre au goût du jour pour éviter des messages inoportuns à leurs visiteurs, les mettant en garde lors de leur saisie d'identifiants.
Il y a des sites pour lesquels le passage "général" s'est finalement fait dans la douceur, c'est le cas si votre site a des liens absolus basés sur une url en configuration ou si vos liens sont relatifs ; si ce n'est pas le cas, il y a un peu plus de travail, malheureusement, ... (ce site a une base url et des liens relatifs, ouf  :) ).
Vous, vous doutez bien qu'il y a toutefois bien un souci dans tout cela.
En effet, la mise à jour "générale", concerne les ressources que l'on va pouvoir visualiser rapidement.
Rien ne marchera correctement si vos fichiers javascript et css sont bloqués par le navigateur, le fix est donc très visuel et n'est qu'une question de temps.
Se pourraît-il que l'iceberg se cache sous la surface ?
À n'en pas douter !
Il se pourrait que du contenu soit masqué de l'affichage sans que cela ne se voit, ou que des encarts restent vides, ou qu'il s'agisse de contenu dans des pages un peu distantes de la page principale, comme des news ...
Rassurez-vous, vos liens divers, vos images, vos vidéos youtube ou vous présentez votre passion, etc, ne sont pas perdus pour autant !
En une simple commande, vous pouvez lister tout ce contenu qui a pourtant disparu de votre site  :)

Pour lancer cette application (notamment développée en scala/ akka), il vout suffit de java 8 sur votre pc et de lancer le programme avec une ligne telle que :
java -jar crawler-assembly-1.0.0.jar --url "https://votresite.fr"


Cet applicatif va récupérer la totalité des pages de votre site et lister les erreurs de liens morts ou inaccessibles. Pour la gestion des blocages https, pensez à mettre le lien de départ en https. Le programme va générer une page html de rapport dans le répertoire courant. Les sous-domaines ne sont pas visités, les liens externes, non plus.
Je prendrais peut-être le temps de mettre les sources sur github.


L'applicatif a de nombreuses options :
- sélectionner le nombre de pages max à crawler, idéal lors de la première utilisation (--max-pages 1)
- re-tenter le crawl d'une page en cas d'échec (--max-retries 3)
- proposer un mode pour afficher uniquement les erreurs, pratique si votre site a beaucoup de pages (--report-mode "errors-only")
- spécifer le user-agent (--user-agent "Crawler 1.0.0"
- limiter le nombre d'appel par seconde, pour éviter de spammer/ se faire bloquer (--scrap-interval-timeout "500 milliseconds")
- filtrer les résultats via un fichier contenant les URLs à ne pas afficher ou des regex (--exclude-results-file "myFile.txt")
- filtrer les URLs à ne pas crawler via un fichier contenant des regex (--black-list-file "blackList.txt")
- spécifer les balises et attributs à parser et crawler (--scraped-tags "a=href,img=src,link=css,script=src,object=data")
et d'autres...



Pour les visualiser :
java -jar crawler-assembly-1.0.0.jar --help

Par exemple :
Crawler 5 pages et conserver tous les autres paramètres, par défaut.
java -jar crawler-assembly-1.0.0.jar --url "https://mathieuprevel.fr" --max-pages 5

Crawler 500 pages max, n'afficher que les erreurs dans un fichier "crawler_report.html", en attendant 200 millisecondes entre chaque requête et spécifier le user-agent.
java -jar crawler-assembly-1.0.0.jar --url "https://mathieuprevel.fr" --max-pages 500 --report-mode "errors-only" --out "crawler_report.html" --scrap-interval-timeout "200 millis" --user-agent "Crawler 1.0.0"



Pour le jar, c'est ici

Il est un peu lourd car il embarque toutes ses dépendances, afin d'en faciliter le lancement.


Have fun !

avatar

Hiryu


Hiryu

2018-01-14 10:29:45

Je profite de re-faire un petit upload pour ajouter quelques informations supplémentaires  :)

SI votre site possède, par exemple, des liens pour changer la langue et que cela n'influe pas sur le contenu, vous pouvez mettre dans le fichier blackList.txt une ligne telle que :
PATTERN:^.*lang=[a-z]{2}-[A-Z]{2}.*$

Les URLs qui matcheront, ne seront pas crawlées.

Si vous avez un menu ou des images (toujours les mêmes) sur toutes vos pages, que vous souhaitez les crawler, mais ne pas les afficher dans le résultat, ajoutez-les au fichier excludeInResults.txt :

Exemple :
#
./
https://mathieuprevel.fr/index.php?module=Campagne
./index.php?module=News
PATTERN:^https://mathieuprevel.fr/index.php?.*lang=[a-z]{2}-[A-Z]{2}$

Voilou. Les options étaient déjà présentes dans la précédente version, mais un petit exemple fait toujours du bien.