Quand crawler le web révèle des erreurs et des expirés.
Récemment, dans le cadre de recherches privées, j’ai demandé sur Twitter si quelqu’un aurait les compétences pour pouvoir réaliser un crawler et un scraper un peu spécifique en Python.
L’objectif pour moi était d’obtenir un programme permettant de crawler le web (et non un site) pour récupérer les liens externes/sites en redirection/erreurs (codes http 3xx/4xx/5xx) ainsi que les domaines avec des erreurs DNS (DNS Lookup Failed).
J’avais envie de sortir du cadre d’un ou quelques sites crawlés pour avoir une vision plus précise de « comment le web évolue ». Je souhaitais notamment connaître l’ampleur des dégâts d’une non-maintenance des liens, et je voulais également en savoir plus sur la problématique des domaines expirés.
Suite à mon appel, j’ai eu la chance d’avoir plusieurs réponses en MP sur Twitter, et les choses sont allés très vite puisque depuis 3 semaines, le programme a été développé et est maintenant fonctionnel grâce à Christian LeMoussel, connu dans notre secteur pour avoir développé une partie de Cocon.se.
J’aimerai donc vous exposer dans les grandes lignes le fonctionnement du programme et ce que j’en ai retiré pour le moment.
Conception du programme
Quand j’ai discuté avec Christian la première fois, l’idée était de lui faire un mini cahier des charges pour avoir une POC (Proof of concept) rapidement.
Le fonctionnement final demandé était le suivant :
- On entre une ou plusieurs URL de départ
- Le programme crawle et récupère les liens internes / externes sur le site
- Les liens externes en 3xx/4xx/5xx et DnsLookup Failed sont stockés dans un fichier
- On exclue au fur et à mesure les domaines explorés pour limiter la consommation de ressources
- On passe au site suivant.
Je m’arrête sur l’utilisation des ressources. On s’est vite rendu compte que la RAM et le stockage pouvaient poser problème, donc on a fait en sorte de récupérer seulement ce qui nous intéresse, pour supprimer/décharger au fur et à mesure la RAM après chaque site exploré.
C’est une sorte de crawler séquentiel / itératif (appelez cela comme vous le voulez). On fait un premier travail, on termine, puis on passe au site suivant, on termine et on redémarre sur un troisième site, etc.
Cela fait qu’aujourd’hui, on peut crawler des centaines de milliers d’URL, le programme consomme maximum 100 mo de RAM et très peu de processeur. C’est bien mieux qu’un Screaming Frog ou un Scrapebox ultra gourmand.
Voilà donc pour le fonctionnement général. On a eu des problématiques de priorisation à certains moments, mais aujourd’hui, le système est optimisé et je peux crawler n’importe quel site/thématique/ensemble de sites web. Je le laisse tourner et j’ai mes datas.
A noter que je souhaitai au départ récupérer les erreurs 5xx & DNS Failed. Peu de 5xx sortait donc j’ai rajouté les 3xx et 4xx pour observation.
Observations
Comme précisé en introduction, l’objectif de cet article est de vous expliquer le fonctionnement, mais surtout ce que j’ai pu observer sur les 4xx/5xx et domaines sans résolution dns. Prenons les deux points un à un.
Cas des erreurs 4xx/5xx et redirections 3xx
Au fur et à mesure des crawls, je me suis rendu vite compte que des erreurs 5xx, c’est quand même assez peu courant. On pourrait croire que sur des vieilles URL, des vieux annuaires c’est monnaie courante d’avoir des liens externes en erreur serveur, mais la vérité c’est que les sites sont soit offline, soit online. Quand on se prend des erreurs 5xx, c’est que les crawlers sont mal configurés ou détectables par des systèmes anti-ddos.
Là je peux crawler du Wikipédia, du Facebook, du Amazon, ça ne bronche pas… Tout charge sans aucun souci. Je ne donne juste pas cher de mon ip dans quelques semaines si j’intensifie (oui, je m’en fou du VPN) ^^
Bref, après ce constat, j’ai donc étendu aux erreurs 4xx, puis aux liens en redirection.
Là par contre : WTF.
Autant sur un site client, quand tu le crawles, tu vois des erreurs, des liens menant vers des redirections… Tu te dis « ouai, va falloir corriger ça, faire un plan de redirection, c’est rapide ». Autant là, c’était à chaque fois un massacre.
Je trouve ça hallucinant le nombre de liens obsolètes menant vers des pages pétées ou des redirections. En termes de ressources pour les bots, comme pour les sites, comme niveau UX c’est juste… Merdique.
Je pense que c’est vraiment à ce moment que j’ai réalisé qu’avoir un crawler à l’échelle du web est bien bien loin qu’un crawler à l’échelle d’un ou de quelques sites. Les volumes sont juste INCROYABLES.
J’ai pas de chiffres à vous donner, mais franchement, croyez-moi sur parole, vous laissez tourner des bots à travers le web, ça en récupère un max des erreurs et des redirections. Vous voulez faire des backlinks sur liens cassés ? Foncez faire ça ^^
Cas des domaines en DNS Lookup Failed
Viens maintenant le cas des sites qui ne répondent pas du tout. Soit parce que le serveur est mal configuré, soit parce que la zone DNS est pas configurée, soit parce qu’il est en total parking…
Là aussi, c’est les premiers gros volumes que j’ai récupéré et c’est là où on voit la dimension du web.
Le nombre de sites qui existent, mais aussi le nombre de sites décédés, ou inutilisés, ou récupéré par une marketplace, un registrar, un domain manager ou autre. C’est juste dingue comment les choses se distribuent.
Un petit coup de bulk chez Go Daddy et vous avez déjà une vue sur comment le business des domaines expirés / domaines aux enchères / domaine à acheter se matérialise.
Je trouve qu’on sort d’une recherche via un moteur de marketplace ou un système de filtrage. On est plus sur de la découverte par thématique ou par lieu chaud / lieu crawlé. C’est une autre vision mais qui est tout aussi intéressante.
Vous voulez trouver un domaine dans la thématique marketing ? Crawlez des sites marketing. Vous aurez tout un panel de sites proches, d’erreurs, de redirections et de domaines à acheter.
Après, comme d’habitude, ça va de 7€ à 15 000 balles ! Un petit coup de Babbar.tech et de Semrush et on voit le potentiel ou non.
Bref, je m’arrête là et je vais terminer sur une dernière partie « recos » et « opinion ».
Ce que nous devrions tous faire
Après avoir vue des milliers de domaines expirés, aux enchères, en achat immédiat. Après avoir vu des milliers d’erreurs 4xx et redirections 3xx… je me mets à la place des moteurs de recherche, des bots, des éditeurs, des internautes, des référenceurs (bah oui quand même). Je me suis dit : Il faut que ça change.
Voici mon opinion et quelques recos techniques :
- Monitorez vos liens internes et externes et corrigez les liens obsolètes
- Redirigez vos erreurs 4xx vers une page proche
- Evitez les chaines de redirections
- Mettez dans vos ancres les chemins les plus courts
- Ayez seulement des codes 2xx
- Faites gaffe au web ou plutôt à « la toile ». Nous devons la maintenir en bonne santé.
- Laissez mourir les domaines que vous n’utilisez plus
- Arrêtez de laisser en parking des domaines dont vous ne feriez jamais rien
Et pour ceux qui arnaquent les gens à vendre des domaines pourris à prix d’or en faisant un super emballage, et bien je vous souhaite de vous planter.