Un besoin récurrent pour tout SEO est de vérifier les codes retour et les temps de réponse d’un listing d’URLs.
Pour cela il faut nécessairement un crawler.
Xenu est régulièrement cité car il est gratuit, facile à utiliser, il possède même une interface graphique !
Xenu a cependant plein d’inconvénients, les principaux étant qu’il ne peut pas gérer un volume important, et que le nombre d’informations récupérées est assez faible (je ne crois pas par exemple qu’il récupère les temps de réponse).
Pour ce type de besoins, Linux est tout simplement magique, jugez plutôt :
cat listing_urls.txt | xargs -n1 -i curl -o /dev/null -w "%{url_effective}\t%{http_code}\t%{time_starttransfer}\t%{time_total}\t%{size_download} \n" -s {} |
listing_urls.txt, comme son nom l’indique, est votre listing d’URLs.
Et voici le résultat :
http://www.watussi.fr/ 200 2,519 2,935 36020
http://www.watussi.fr/page-speed 200 0,737 1,125 39588
http://www.watussi.fr/a-propos 200 0,966 1,088 14140
http://www.watussi.fr/contact 200 3,696 4,018 14875
http://www.watussi.fr/la-tribu-wikipedia 200 1,154 1,293 21310
http://www.watussi.fr/eliminez-les-soft-404 200 2,566 2,931 26574
http://www.watussi.fr/googlebot-est-en-greve 200 2,217 2,440 36108
http://www.watussi.fr/adresses-ips-et-referencement 200 2,125 2,512 80625
http://www.watussi.fr/adfsdfsdfsdfment 404 7,424 8,835 10217
Nous avons 5 colonnes pour chaque URLs spécifiées dans le fichier de départ :
- L’URL
- Le res_code HTTP
- Le temps d’exécution de la page (côté serveur)
- Le temps de chargement total
- La taille de la page
Magique non ?
Il est évidemment possible de rediriger le flux de sortie vers un fichier pour l’exploiter sous Excel ou autre.
Cette simple ligne est particulièrement robuste et peut faire l’affaire tant pour 5 URLs que pour 5 millions.
Pour ces volumes, il faudra cependant paralléliser le traitement pour aller plus vite ;-)
Petit clin d’oeil à Olivier Tassel dont ce tweet m’a inspiré.
Excellente suggestion, on n’a décidément jamais fini de découvrir des lignes de commandes extra puissantes sous Linux. M’en vais tout de même hacker cela pour lire depuis, et enregistrer vers, une base de données ;-)
> »Pour ces volumes, il faudra cependant paralléliser le traitement »
Vous pouvez élaborer ?
Merci du « truc » !
Actuellement il y a une seule requête en même temps, donc sur un lot de plusieurs millions d’URLs, ça va prendre beaucoup de temps…
L’idée serait de pouvoir multi-threader en lançant 5, 10, 15… requêtes en même temps.
N’hésites pas à partager les évolutions que tu comptes faire.
C’est vrai que Xenu est pas mal, mais à comparé de ce que peux faire Linux, ça ne soutient pas la comparaison, ce test en est d’ailleurs la preuve.
Excellent !
Bon, tu es un peu dur avec Xenu : jusqu’à 500 000 URLs ça marche quand même pas mal… même s’il est vrai que le temps de réponse indiqué est parfois un peu farfelu.
Tiens moi je fais ça dans mes outils perso en PHP et avec une boucle Ajax mais il est vrai qu’en ligne de commande ça permet de traiter un bien plus grand nombre d’URL.
Pour ma volumétrie ça suffit mais je garde ton article sous le coude.
Pour le multi threading, tu t’y prends comment ?
Comme je ne l’ai pas fait j’y ai pas trop réfléchi, mais j’aurai surement fait un truc de ce genre : http://www.watussi.fr/de-dupliquer-rapidement-50-millions-de-lignes-avec-linux
J’utilise souvent Xenu pour faire une analyse des urls, mais honnêtement je galère un peu car avec un lot de millions d’URLs c’est très très lent voir impossible de le traiter, surtout que mon objectif est de voir l’évolution dans le temps. Je rencontre ce souci avec l’analyse des fichiers logs aussi…