Salut Ă toutes et Ă tous ! Que vous soyez SEO confirmĂ©s, rĂ©fĂ©renceurs en herbe, simple curieux et pas SEO du tout d’ailleurs, j’aimerai vous montrer quelque chose qui peut s’avĂ©rer trĂšs utile. Voici une mĂ©thode pour transformer ScreamingFrog (qui est dĂ©jĂ un excellent crawler) en un spider digne de Googlebot, MJ12, etc. Augmentons ScreamingFrog.
ScreamingFrog serait-il donc un crawler indigne ?
Loin de moi cette pensée, ScreamingFrog est un excellent outil, il fait trÚs bien ce pourquoi il a été pensé : crawler des sites web et récupérer de la data.
Repousser la limite de ScreamingFrog
La limite de ScreamingFrog que l’on sâapprĂȘte Ă repousser est qu’il n’est pas fait pour crawler le web. Imaginez tout ce que l’on pourrait faire avec s’il pouvait se balader sur internet. Trouver des tonnes de domaines expirĂ©s est peut ĂȘtre le premier avantage qui vous vient Ă l’esprit, mais on pourrait faire beaucoup plus…
De base, lorsque ScreamingFrog trouve un lien externe, il tente de s’y connecter, puis vous renvoie un code de rĂ©ponse vous permettant d’identifier les liens cassĂ©s, mais il sâarrĂȘte lĂ , il ne va pas plus loin, c’est lĂ la limite que l’on va essayer de repousser en dĂ©bridant ScreamingFrog.
Nous allons donc le forcer Ă ressembler Ă des spiders comme Googlebot, Bingbot, MJ12 (le spider de majestic) qui suivent inlassablement les liens externes.
Est-ce que l’on va vraiment crawler internet avec ScreamingFrog ? ThĂ©oriquement il en sera capable, mais en pratique il ne faudra pas trop s’enflammer et je vous invite Ă paramĂ©trer une profondeur de crawl maximale… je dis ça pour les fougeux.
Pour paramétrer une limite de crawl ouvrez ScreamingFrog et rendez-vous dans
Configuration > Spider.
Dans la fenĂȘtre qui s’affiche, cliquez sur le deuxiĂšme onglet “Limits” et cocher la case “Limit Crawl Depth” avant d’indiquer la profondeur de votre choix (voir figure ci-dessous). Rappelez-vous bien… qu’il ne faut pas vous enflammer. Si vous paramĂ©trez le niveau maximal de profondeur Ă 5 c’est dĂ©jĂ balaise. ĂĂ dĂ©pend aussi du type de sites que vous crawlez et de leur habitude de faire ou non des liens externes. Ce qu’il faut savoir c’est que c’est exponentiel, la diffĂ©rence entre une profondeur de crawl paramĂ©trĂ©e Ă 3 et une paramĂ©trĂ©e Ă 4 est juste… Ă©norme !
On est obligĂ© d’utiliser ScreamingFrog pour faire ça ?
On pourrait parfaitement utilisez Xenu me direz-vous… c’est juste ! Retenons juste que ScreamingFrog rĂ©cupĂšre pas mal de donnĂ©es intĂ©ressantes, or Xenu ne sait pas faire. Aussi, au delĂ de “hacker ScreamingFrog” l’astuce ouvre des portes trĂšs intĂ©ressantes Ă explorer mais sur lesquelles je ne m’attarderai pas ici. Si des idĂ©es vous passent par l’esprit, on peut en parler dans les commentaires.
Bref, comment transformer ScreamingFrog en un outil qui va crawler le net ?
On ne va pas bidouiller dans le code source de l’outil, on va plutĂŽt utiliser un combo, ScreamingFrog + un script PHP qu’on peut appeler infinite-crawl.php. Je vous offre les bouts de code qui vont bien mais en soi ce n’est pas ce qu’il y a de plus important, c’est le principe qu’il faut comprendre.
Comme je vous le disais ScreamingFrog ne suit pas les liens externes, mais seulement les liens internes. Il faut donc s’arranger pour lui montrer les liens externes comme si c’Ă©taient des liens internes ! Hein ? Pas de panique.
Supposez que l’on veuille crawler le web en partant du site lemonde.fr. On ne demande pas Ă ScreamingFrog de crawler le monde.fr mais plutĂŽt notre script Ă cette URL par exemple : http://localhost/infinite-crawl.php?uxx=https://www.lemonde.fr.
Lorsque ScreamingFrog va tenter d’accĂ©der Ă cette URL, notre script va rĂ©cupĂ©rer tous les liens (internes & externes) situĂ©s sur la page d’accueil du site lemonde.fr, et va les réécrire avant de les prĂ©senter Ă ScreamingFrog pour que ce dernier ne voit que des liens internes comme ceci.
?uxx=https://www.lemonde.fr/idees/article/2019/11/16/jean-pisani-ferry-n-attendons-plus-notre-salut-de-francfort_6019395_3232.html ?uxx=https://codespromo.lemonde.fr/ ?uxx=https://formation-professionnelle.lemonde.fr/ ?uxx=https://secure.lemonde.fr/sfuser/newsletters ?uxx=https://www.lemonde.fr/societe/article/2019/11/16/les-gilets-jaunes-veulent-rallumer-la-flamme-un-an-apres-leurs-debuts_6019430_3224.html ?uxx=https://dicocitations.lemonde.fr/ ?uxx=https://paroles2chansons.lemonde.fr/top-video ?uxx=http://jeux.lemonde.fr/ ?uxx=https://www.courrierinternational.com/ ?uxx=http://www.sdllemonde.fr/ ?uxx=http://www.lavie.fr/ ?uxx=https://www.huffingtonpost.fr/ ?uxx=https://www.nouvelobs.com/ ?uxx=https://www.monde-diplomatique.fr/ ?uxx=https://www.telerama.fr/
Adapter un Script PHP pour un crawl infini
Dans les grandes lignes, avant de vous prĂ©senter les bouts de code voici comment le script doit fonctionner si on appelle l’url infinite-crawl.php?uxx=https://www.lemonde.fr
PremiĂšre chose, le script vĂ©rifie qu’il existe bien une variable $_GET[“uxx”] et va rĂ©cupĂ©rer sa valeur (elle se trouve dans l’URL vous voyez ?)
Donc dans ?uxx=https://www.lemonde.fr, on a deux infos. Le nom d’une variable (uxx) et sa valeur (une url)
Une fois que le script connait l’url, sa mission est d’accĂ©der Ă l’url en question et de rĂ©cupĂ©rer tout le contenu de la page.
Une fois que le script a rĂ©cupĂ©rĂ© le contenu HTML de la page, il doit exĂ©cuter un petit travail de transformation sur l’attribut href des liens prĂ©sents sur la page (liens internes, et liens sortants).
DĂšs que c’est fait, notre script prĂ©sente Ă Screamingfrog le contenu HTML de la page, avec comme seule diffĂ©rence la transformation des attributs hrefs. Pratique !
ConcrÚtement, tous les liens qui pointent vers quelque chose comme https://quelquechose.com sont transformés pour pointer désormais vers infinite-crawl.php?uxx=https://quelquechose.com.
Maintenant Screamingfrog pourra suivre ces liens internes, euhhh externes, bon bref vous avez compris đ
Voici les fichiers dont vous avez besoin
simple_html_dom.php : Cette classe est un parser php qui va nous aider à trouver facilement les liens pour les manipuler, vous pouvez la télécharger ici
crawlme.php : C’est le fichier qui va se charger d’instancier les classes, vous pouvez le nommer index.php ou comme vous voulez, aucun problĂšme. Ce qui compte c’est le code source que voici. Ces quelques lignes se chargent simplement d’appeler notre script, Ă part ça elles ne font rien d’autres.
<?php include ('infiniteCrawl.php'); include ('simple_html_dom.php'); $crawl = new infiniteCrawl(); if(isset($_GET["uxx"])){ echo $crawl->getCont($_GET["uxx"]); } ?>
infiniteCrawl.php : ça c’est le fichier qui fait tout. Il casse pas des briques mais il fait le job. Par contre Ă©vitez de modifier son nom pour ne pas devoir modifier l’autre fichier
<?php class infiniteCrawl { function __construct(){ } private function getIt($tURL){ $ch = curl_init(); curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_URL, $tURL); curl_setopt($ch, CURLOPT_REFERER, $tURL); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $resp = array(); $resp["html"] = curl_exec($ch); $resp["info"] = curl_getinfo($ch); curl_close($ch); return $resp; } public function getCont($url){ $urlComp = parse_url($url); $resp = $this->getIt($url); if($resp["info"]["http_code"]!==0){ $html = $this->updateHref($resp["html"],$urlComp["scheme"],$urlComp["host"]); } else { $html = "<title>Pas de Résolution DNS</title>"; } return $html; } public function updateHref($html,$scheme,$host){ $html = str_get_html($html); foreach ($html->find('a') as $link){ if(preg_match("#^/#",$link->href)){ $link->href =preg_replace("#^/#",$scheme."://".$host."/",$link->href); } if(preg_match("#^https?://#i",$link->href) && !preg_match("#^https?://(www\.)?(facebook|twitter|linkedin|pinterest|youtube)#i",$link->href)){ $link->href = "?uxx=".$link->href; } } $html->save(); return $html; } }?>
Installation / Utilisation du script infiniteCrawl. Facile !
1- Si ce n’est dĂ©jĂ fait, installez un serveur web local (donc sur votre machine). Wamp, Mamp ou Lamp selon votre systĂšme…
2- Dans le dossier /www/ de votre serveur local, créez un nouveau sous-dossier. Appelez le comme vous le désirez, appelons le desiree tiens !
3- Dans ce dossier fraĂźchement créé, (C:\wamp\www\desiree\ si vous ĂȘtes sur Windows) crĂ©ez les 3 fichiers php dont on a parlĂ© juste avant (simple_html_dom.php, crawlme.php, et infiniteCrawl.php)
4- Démarrez votre serveur local
5- Ouvrez ScreamingFrog
6- Configurez Screaming frog pour qu’il ne sorte jamais du dossier /desiree/. Il suffit d’aller dans configuration > include et d’ajouter ceci http://localhost/desiree/.* exactement comme dans l’image ci-dessous :
7- dĂ©marrez un crawl sur l’URL http://localhost/desiree/crawlme.php?uxx=http://www.sitedetonchoix.com
8- Pour aller plus loin vous pouvez aussi :
- Offrir un beau backlink Ă cet article
- Laisser un commentaire ici
- Partager, Liker,
- bref surtout amusez-vous !
C’est une super astuce que tu partages lĂ . Avec les script PHP… Bravo
Hello ! Content que cela te plaise, merci pour ton retour !
joli tuto đ et merci pour le partage…
On va tester ça de ce pas đ
merci walid
Ănorme merci pour cette astuce.
Le . Une vraie dinguerie l’astuce et toujours cet esprit de partage. Big Merci Walid.