• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Hacker ScreamingFrog pour crawler le web avec

16 November 2019 by Walid Gabteni 5 Comments

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 ?

Screamingfrog hack

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 !

FenĂȘtre de rĂ©glage de la profondeur de crawl sur ScreamingFrog

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 :

configuration de screamingfrog

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 !

Filed Under: blog Tagged With: domaines expirés

Reader Interactions

Comments

  1. Franklin says

    17 November 2019 at 10 h 57 min

    C’est une super astuce que tu partages lĂ . Avec les script PHP… Bravo

    Reply
    • Walid Gabteni says

      17 November 2019 at 17 h 32 min

      Hello ! Content que cela te plaise, merci pour ton retour !

      Reply
  2. L'agenceweb.com says

    18 November 2019 at 15 h 59 min

    joli tuto 😉 et merci pour le partage…
    On va tester ça de ce pas 🙂

    Reply
  3. nordine says

    30 June 2021 at 23 h 04 min

    merci walid

    Reply
  4. 44clics says

    8 October 2022 at 8 h 13 min

    Énorme merci pour cette astuce.

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Primary Sidebar

Walid Gabteni : Consultant SEO

Walid Gabteni

Consultant en référencement, dans le SEO depuis 15 ans.

Audit technique, planification stratégique, mots-clés, netlinking, suivi, formations SEO...
je vous accompagne sur tous les volets de votre référencement naturel.

  • Facebook
  • LinkedIn
  • Twitter
  • YouTube

Top newsletter dans votre mailbox

Pour recevoir par email nos contenus marketing vous avez besoin de nous accorder votre consentement.

Vous pouvez vous désabonner à tout moment ici. Vous acceptez le transfert de vos données à mailchimp pour le traitement.

Synergies fortes et autres projets

Koris : Web Agency Ă  Florence

SEO Hero : Topic Explorer and SEO Analysis

Sur la toile

  • Webladi
  • Qwanturank
  • Top 10 StratĂ©gie
  • Marco Pini
  • Koris : Web Agency Firenze
  • Search Datalogy
  • Aymen Loukil
  • Mickael Challet
  • Korleon Biz

© 2023 · Light On SEO : Consultant SEO, Formation et rĂ©fĂ©rencement e-commerce | Mentions lĂ©gales