Je suis actuellement en pleine écriture d'un prochain livre sur le référencement technique et le suivi-audit SEO avec Alexandra Martin, notre Miss SEO Girl nationale. Pour cet ouvrage, je code beaucoup en PHP (mais aussi en Javascript, jQuery voire en VBScript pour ASP parfois... :D) afin de vous fournir un maximum d'informations techniques qui nous manquent souvent lorsque nous travaillons.
L'objectif n'est pas de réinventer la roue mais de montrer que le savoir-faire technique et la programmation peuvent vraiment être des armes pour réussir sur le web et dans le référencement naturel. Nous avons trop tendance à nous accrocher à la théorie (Ô combien intéressante mais pas toujours suffisante) et à délaisser les complications causées par la lourdeur de la programmation. Bizarrement, j'ai été formé pour travailler dans la communication, l'écrit web et la gestion de projet et au final, je me retrouve les mains dans le cambouis à longueur de temps pour vous pondre des codes, à croire que cette "lourdeur" me passionne ! :D
Il est vrai que de nombreux outils existent sur le marché en termes de SEO (et certains sont de très grande qualité), mais cela ne remplace pas le "code en dur" à l'ancienne. En effet, n'existe-t-il rien de plus gratifiant que de comprendre ce qui se cache derrière la machine pour au final coder la machine ? Je vous présente ici uniquement l'un des codes prévus dans le prochain livre à sortir mais je vous garantis qu'il regorgera de bien d'autres surprises plus intéressantes (c'est le moment "teasing" de l'article, ne vous ai-je pas dit que j'étais formé dans la communication ? :D).
Principe d'un simulateur de robot en PHP
Le simulateur de robot est un outil qui permet de voir le code source d'un site comme le ferait un moteur de recherche afin de contrôler les éventuels problèmes de crawl, de code ou même dans les en-têtes HTTP.L'intérêt est de mieux connaître ses pages web et de pouvoir déceler les éventuels blocages ou freins au référencement naturel.
De nombreux outils existent sur la Toile pour répondre à ce besoin mais la plupart posent problème ou ne font pas les choses comme il se doit. À contrario, certains services en ligne sont d'une très bonne qualité et peuvent vous donner satisfaction sans problème...
Comme je l'ai dis précédemment, l'idée n'est pas de faire un meilleur outil que les autres ni de jouer à celui qui a la plus longue, mais bien de montrer comment fonctionne un simulateur de spider (robot, crawler, ou autre nom que vous aimez...) par la technique. Sachez que vous pourrez tester le simulateur par un lien fournit en bas de page ou télécharger le script PHP entièrement commenté, vous pourrez donc personnaliser le code et le faire évoluer pour obtenir un résultat encore meilleur.
Le simulateur de robot codé ici présente plusieurs fonctionnalités dont certaines peuvent paraître négligeables mais sont plutôt agréables :
- Récupération des URL des pages à crawler avec "http://", "https://" ou non. Nativement, les URL avec le protocole sécurisé ne fonctionne pas, il faut ajouter une ligne de code supplémentaire pour autoriser la lecture de ces pages, c'est chose faite... :D
- Récupération des en-têtes HTTP (lues par les robots, il ne faut pas l'oublier !) et du code source à l'aide de l'extension cURL en PHP (vérifiez que le module est bien installé sur votre hébergeur ou sur votre serveur local dans Wamp Server par exemple).
- Lecture du code ligne par ligne avec une boucle foreach afin d'assurer un résultat convenable. Il existe également d'autres alternatives si vous voulez mettre la main à la pâte en utilisant les fonctions highlight_file() ou son équivalent show_source() en PHP (avec ces fonctions, il faut mettre en paramètre l'URL de la page pour récupérer le code source bien présenté voire coloré selon les serveurs).
- Numérotation ou non des lignes du code source afin de se repérer plus facilement.
- Colorisation ou non du code source (je me suis fait plaisir là dessus, c'était juste pour le fun mais c'est devenu le point fort du simulateur en fait... :D).
- Réadaptation automatique de l'encodage en UTF-8 quelle que soit l'URL (pour que l'affichage corresponde à l'encodage de l'outil). Il s'agit du plus gros défaut rencontré sur les services en ligne disponibles sur le marché, la plupart affiche des résultats indignes ou avec un mauvais encodage, ce qui nuit à la lecture et s'éloigne de la réalité, à savoir lire réellement comme un robot d'indexation. Les pages qui affichent des caractères mal accentués sont des pages qui n'ont pas précisé leur encodage, cela permet de voir ce manque par exemple...
Avant de vous passer le code et les liens de tests et téléchargement, voici un exemple de rendu dans la capture ci-dessous.
Code du simulateur de robot PHP
Rentrons dans le vif du sujet avec le code complet du simulateur de spider PHP. Il suffit de copier à la suite les bouts de code présentés dans un fichier pour créer le simulateur. Ensuite, vous pouvez personnaliser l'interface et le style, je n'ai mis que des exemples ici...
La fonction PHP du spider simulator
<?php // Fonction du simulateur de robot // 1. URL à tester // 2. Activer ou non la colorisation du code (true/false) // 3. Numéroter ou non les lignes de codes (true/false) function spiderSimulator($page = '', $colorisation = false, $numerotation = false) { // Ajout du protocole s'il est manquant if(!preg_match("#^https?://#iU", $page)) { $page = "http://".$page; } // Activation de cURL $url = curl_init($page); // Options de cURL (retour des données et des en-têtes) curl_setopt($url, CURLOPT_HEADER, true); curl_setopt($url, CURLOPT_RETURNTRANSFER, true); curl_setopt($url, CURLOPT_SSL_VERIFYPEER, false); // Récupération du contenu $contenu = curl_exec($url); $code = ''; // Fermeture de cURL curl_close($url); // Découpage du contenu en ligne $lignes = explode("\n", $contenu); // Afficher ligne par ligne foreach($lignes as $num => $ligne) { // Affichage optionnel du numéro de ligne if($numerotation == true) { $code .= $num.". "; } // Affichage des balises HTML $ligne = htmlspecialchars($ligne); // Si la colorisation est active if($colorisation == true) { // Colorisation des attributs $regex = "#(.*)([a-zA-Z0-9:-]+)(=("|'))#iU"; $replace = "$1<span style='color:#FB5758'>$2</span>$3"; $ligne = preg_replace($regex, $replace, $ligne); // Colorisation des valeurs d'attributs $regex = "#(=)(("|').*("|'))#iU"; $replace = "$1<span style='color:#999'>$2</span>"; $ligne = preg_replace($regex, $replace, $ligne); // Colorisation des balises $regex = "#(</?[a-zA-Z0-9]+[ ])#iU"; $replace = "<span style='color:#0089E2'>$1</span>"; $ligne = preg_replace($regex, $replace, $ligne); $regex = "#(</?[a-zA-Z0-9]+/?>)#iU"; $replace = "<span style='color:#0089E2'>$1</span>"; $ligne = preg_replace($regex, $replace, $ligne); $regex = "#(/?>)#iU"; $replace = "<span style='color:#0089E2'>$1</span>"; $ligne = preg_replace($regex, $replace, $ligne); } $code .= $ligne; $code .= "<br/>\n"; } // On force l'affichage en UTF-8 preg_match("#charset=['\"]?([a-zA-Z0-9-]+)['\"]?[^a-zA-Z0-9-]#iU", $code, $result); if(!empty($result)) { $encodage = strtolower($result[1]); if($encodage != 'utf-8') { $code = mb_convert_encoding($code, "UTF-8", $encodage); } } // Affiche le code source complet echo $code; } ?>
La partie HTML-CSS du simulateur de robot
Cette partie comprend quelques codes en PHP pour le traitement du résultat mais pour le reste, ce n'est que de l'HTML et du CSS, rien de bien sorcier !
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Spider Simulator</title> <style/> * {margin:0; padding:0; font-size:100%} #formulaire {background:#eee; padding:1%} #formulaire h1 {font-size:1.8em; color:#004C54; margin-bottom:1em} .bloc {margin-bottom:.8em} .bloc label {display:block; font-weight:bold; padding:.1em;} .bloc input, .bloc select {display:block; float:left; margin-right:1em; padding:.1em; border:1px solid #ccc;} .bloc input {width:250px;} .bloc select {width:72px; text-align:center;} #resultat {background:#fafafa; padding:1em} #resultat h2 {font-size:1.3em; color:#198A95; margin-bottom:.8em} #bouton input {padding:.2em .5em; font-weight:bold; border:1px solid #ccc; background:#fff; color:#004C54} #bouton input:hover {background:#004C54; color:#fff} </style> </head> <body> <div id="formulaire"> <h1>Simulateur de robot d'indexation</h1> <form method="post"> <div class="bloc"> <input type="text" name="url" value="<?php if(isset($_POST['url'])) { echo $_POST['url']; } ?>"/> <label for="url">URL à tester</label> </div> <div class="bloc"> <select name="col"> <option value="0" <?php if(isset($_POST['col']) && $_POST['col'] == 0) { echo 'selected="selected"'; } ?>>Non</option> <option value="1" <?php if(isset($_POST['col']) && $_POST['col'] == 1) { echo 'selected="selected"'; } ?>>Oui</option> </select> <label for="col">Colorisation du code</label> </div> <div class="bloc"> <select name="num"> <option value="0" <?php if(isset($_POST['num']) && $_POST['num'] == 0) { echo 'selected="selected"'; } ?>>Non</option> <option value="1" <?php if(isset($_POST['num']) && $_POST['num'] == 1) { echo 'selected="selected"'; } ?>>Oui</option> </select> <label for="num">Numérotation des lignes</label> </div> <p id="bouton"><input type="submit" name="submit" value="Tester"/></p> </form> </div> <div id="resultat"> <?php if(isset($_POST['submit']) && !empty($_POST['url'])) { ?> <?php // Traitement des données $url = htmlspecialchars($_POST['url']); $col = htmlspecialchars($_POST['col']); $num = htmlspecialchars($_POST['num']); ?> <h2>Affichage pour l'adresse <?php echo $url; ?></h2> <p><?php spiderSimulator($url, $col, $num); ?></p> <?php } ?> </div> </body> </html>
Téléchargement et outil de test en ligne du simulateur de crawler PHP
Voici peut-être le moment le plus intéressant pour vous, la section téléchargement et test du simulateur de robot. N'hésitez pas à vous servir, à le tester, à le faire évoluer et à revenir vers moi si vous avez des questions.
Pour télécharger le script PHP commenté et comprendre le fonctionnement profond d'un robot de moteur de recherche (si ce n'est que les robots crawlent de page en page, ce que je présenterais en partie dans le prochain livre) et de ce qu'il voit dans nos pages, c'est juste en-dessous...
Télécharger “Spider Simulator PHP”spider-simulator.zip – Téléchargé 40282 fois – 2,07 Ko
Pour tester en ligne, c'est par ici : simulateur de robot d'indexation en ligne.
J'espère surtout que cette présentation d'un simulateur de robot créé en PHP vous donnera envie de coder certaines fonctions et de voir les bienfaits du code pour le référencement naturel. J'en conviens, l'exemple du "spider simulator" n'est pas forcément le plus pertinent mais je n'allais pas vous fournir tout d'un coup, j'entretiens le suspense... :D