Faire du cloaking avec X-Robots-Tag pour un Sitemap XML est autorisé par Google

Mathieu Chartier 30 décembre 2015 à 20:49 Référencement 6 commentaires

Google et les fichiers Sitemaps XML

Faire du cloaking est généralement synonyme de sanction auprès des moteurs de recherche, et notamment de Google. Si l'on en croît les dires de John Mueller, il est pourtant autorisé de rediriger les robots à sa guise (cloaking pur) quand cela concerne un fichier Sitemap XML afin d'éviter que les utilisateurs ou les robots spammeurs profitent de ce fichier.

Le porte-parole de Google a indiqué ceci dans son hangout hebdomadaire sur Google+ du 19 décembre 2015 (à 19'30 dans la vidéo en bas de l'article). Voici la question qui lui était posée initialement :

Pour faire face aux scrapers, j'aimerais ajouter un entête X-Robots-Tag pour le fichier Sitemap XML, et permettre uniquement le crawl à GoogleBot et quelques autres crawlers crédibles, mais pas aux bots escrocs ou aux utilisateurs. Est-ce que ça peut être considéré comme du cloaking ?

La question étant très pertinente, John Mueller y a répondu sans vergogne :

Non. Je ne pense pas que ce serait une solution problématique. Avec un fichier Sitemap vous pouvez même le masquer directement pour les moteurs de recherche. C'est quelque chose que nous autorisons clairement. Ou si vous testez des adresses IP et que vous voyez que ce n'est pas Googlebot, Bing, Yandex, Yahoo ou n'importe quel autre robot via leur adresse IP, vous pouvez proposer une page comme non autorisée si vous le souhaitez.

En d'autres termes, il est possible de faire du cloaking avec les robots à partir du moment où l'objectif est de protéger le fichier Sitemap XML du spam éventuel, que ce soit via l'entête X-Robots-Tag ou même par une gestion des adresses IP des user-agent. L'objectif est surtout de ne faire afficher les fichiers Sitemap XML (voire les robots.txt) qu'aux robots qui le méritent...

Si vous ne savez pas comment procéder, sachez que la documentation de Google donne déjà de bonnes informations à ce sujet. Il est possible de régler les entêtes X-Robots-Tag avec une fonction PHP, comme ci :

header("X-Robots-Tag: noindex", true);

Idéalement, il faut placer ces lignes de code dans un fichier .htaccess pour les serveurs Apache :

<FilesMatch "^sitemap\.xml$">
Header set X-Robots-Tag: "noindex"
</FilesMatch>

Ou sa variante pour des ressources XML (et autres) :

<FilesMatch "\.(txt|log|xml|css|js)$">
Header set X-Robots-Tag "noindex"
</FilesMatch>

Pour les serveurs Nginx, il faut écrire ces lignes, équivalentes aux précédentes :

location ~* \.(txt|log|xml|css|js)$ {
add_header X-Robots-Tag noindex;
}

Sachez qu'il est possible de préciser uniquement Googlebot si vous le désirez, il suffit d'ajouter le nom du robot après la directive, comme ceci en PHP (dans ce cas, le mot clé "otherbot" dirige les autres robots non nommés, et permet de faire du cloaking ciblé) :

header("X-Robots-Tag: googlebot: noindex", true);

La valeur "noindex" sert à ne pas indexer le document mais seulement à le faire consulter par les robots. La valeur "noarchive", non présentée dans les exemples ici, permet de ne pas mettre de version du fichier Sitemap XML (ou autres fichiers) en cache dans le moteur de recherche. En revanche, la valeur "nofollow" est assez peu utile pour ces fichiers, voire contre-productive. D'autres valeurs existent, comme "noimageindex" pour ne pas indexer les images d'une page, "nosnippet" pour ne pas afficher d'extrait dans les SERP, etc.

Quoi qu'il en soit, retenez qu'il est possible de freiner le crawl des mauvais robots et des utilisateurs pour les fichiers Sitemap XML et même robots.txt. Cela évite du scraping en masse, du spam, voire pire... C'est pour une fois du "bon cloaking", et John Mueller ne fait que confirmer que cela est possible sans risque de pénalité.

Tutoriel vidéo - Faire du cloaking avec X-Robots-Tag pour un Sitemap XML est autorisé par Google

6 commentaires

  • Alors là carrément un gros merci pour le tip.
    J'étais justement sur cette problématique pour un site bien prisé par les scrapers.

    • Pour être honnête, je connaissais l'entête X-Robots-Tag et je ne m'étais jamais penché sur la question alors que ça m'agace d'avoir mes fichiers Sitemaps et robots.txt pris à parti par des scrapers. Je suis l'exemple-type du cordonnier mal chaussé. :D
      Le problème de cette technique, c'est de sûrement oublier des robots méritants au passage, en privilégiant uniquement les gros comme Googlebot, Bingbot, Yandexbot, Baiduspider (même s'il faut avouer que les fichiers en question n'intéressent que les gros moteurs de recherche en général).

  • Antoine dit :

    Hello,
    Quel est l'intérêt du X-Robots-Tag en termes de crawl ? Cela ne va pas empêcher les scrapers de venir aspirer le sitemap.xml donc autant être plus radical et renvoyer un 403 par exemple, non ?

    • Le X-robots-tag indique que seuls les robots peuvent crawler le fichier Sitemap XML. Si tu n'indiques aucun robot particulier, l'intérêt est limité (c'est déjà ça, mais ça reste insuffisant), il faut cibler des robots particuliers comme Googlebot, Bingbot, Baiduspider, etc. Cette méthode permet de "bloquer" l'accès au fichier pour les autres robots automatiques, mais pas toujours pour des accès directs (via cURL notamment).
      C'est aussi pour ça que John Mueller évoque le cloaking par IP ou par user-agent. Il est aussi possible de repérer les mauvais bots et de les dégager en renvoyant une 403 par exemple, c'est donc une solution possible, plus radicale mais au moins aussi fonctionnelle (voire c'est mieux, mais j'ai quand même peur que ça puisse être mal interprété si on fait une erreur dans le code).

  • Cédric dit :

    Bonjour

    C'est une bonne astuce, mais pour ceux qui utilisent des outils développés en interne, il est tout-à-fait possible de générer un sitemap à partir d'un simple crawler ; c'est plus long, mais quand un scrapeur veut scraper du contenu, il y arrive toujours par tous les moyens...

    Je l'ai déjà fait pour ma part sur le site d'un fournisseur qui rechignait à nous envoyer un fichier utilisable de son catalogue produit, se contenant de m'envoyer son catalogue PDF totalement inutilisable (nb : mes collègues allaient pour chaque référence chercher les images et les références sur le site dudit fournisseur... Je n'ai fait qu'automatiser ce qu'elles faisaient manuellement ^_^ ; sur +6500 références ça vaut le coup !) ; son sitemap n'était pas accessible, j'en ai généré un en quelques minutes avec Xenu ;-)

  • jimmy dit :

    euh, j'essai justement de référencer mon site et cet info m'aide beaucoup parce qu'avec mon ancien site j'avais pleins de robots spam ;)

  • Déposer un commentaire

    Répondre à Laurent Bourrelly Annuler la réponse

    L'adresse de messagerie ne sera pas publiée.* Champs obligatoires