Très souvent sur Internet, d'autres sites web font du hotlinking avec vos publications : ils affichent une ressource (image, vidéo, etc.) sur leur site alors que la ressource se trouve sur votre serveur. Quel est l'intérêt de cette technique, quels en sont les dangers et comment gérer le hotlinking émanant des autres sites ? Cet article fait le tour de la question et propose de nombreuses solutions pour se prémunir de ce type de pratique...

Par Daniel Roch


Qu'est-ce qu'un hotlink ? Définition du principe de base

Lorsqu'on crée un site web ou qu'on rédige des contenus dans ses pages, on doit afficher des ressources pour l'utilisateur : vidéos, images ou encore des fichiers audio.

Ces éléments sont théoriquement stockés sur votre serveur. Par exemple, les images du site abondance.com sont stockées sur le même serveur (c'est-à-dire en « local »). Votre contenu sur le site A affiche des ressources présentes sur le site A.

Le hotlinking consiste à aller chercher ces ressources sur un autre site web que le vôtre. Votre contenu sur le site B affiche des contenus stockés sur le site A. On retrouve très souvent ce cas avec les images. Ce système de hotlinking peut être fait par erreur (un copier/coller d'un contenu) ou en pleine conscience.


Fig. 1. Une explication visuelle du concept du hotlinking.
Source de l'image : http://www.responsive-mind.fr/hotlinking-detection-et-lutte/

Et les CDN ?

Le hotlinking n'est d'ailleurs pas systématiquement mauvais. Certes, cela peut arriver lorsque vous copiez/collez/volez le contenu d'autres sites, mais cela peut aussi être mis en place quand vous installez des CDN pour améliorer le temps de chargement.


Un CDN est un réseau de serveurs qui vont permettre de répartir la charge du trafic. Si 100 visiteurs viennent sur un site, ils ne se connecteront pas tous au même serveur, permettant ainsi de soulager chacun d'entre eux. Ce type de configuration est souvent mis en place au niveau des ressources d'une page : on stocke les images, fichiers vidéos et audio, les fichiers CSS et fichiers JavaScripts sur différents serveur partout dans le monde.

WordPress, notamment avec JetPack, propose notamment ce type de solutions. Sur un site donné (exemple : nom-de-domaine.com), les images sont dupliquées sur différents serveurs de WordPress.com du type https://i2.wp.com/nom-de-domaine.com/wp-content/uploads/2018/... L'utilisateur qui arrive sur le site ira donc télécharger l'image depuis ces autres serveurs.

Si le CDN est bien paramétré, il n'y aura aucune incidence en référencement naturel. Cela est possible grâce à un entête HTTP pour chaque image hébergée sur le CDN. Cet entête doit inclure le code suivant qui indique l'image du serveur d'origine :

link: <http://nom-de-domaine.com/wp-content/uploads/2018/....>; rel="canonical"

Doit-on se protéger des Hotlinks ?

S'il ne s'agit pas d'un CDN mais bien de hotlinking non désiré depuis des sites "voleurs de contenus", il existe de nombreuses raisons pour lesquels vous devez envisager de vous protéger de cette problématique.

Le vol de bande passante

Stocker et transmettre aux internautes des contenus représente un coût financier. Plus votre trafic est important, plus vous devez prendre un hébergement digne de ce nom. Il vous faut plus de stockage d'une part, et une plus grande bande passante (c'est-à-dire la capacité de votre serveur à pouvoir transmettre en simultané des contenus aux internautes).
Le fait que d'autres sites affichent des images depuis vos serveurs est donc un vol de bande passante. Ce ne sont plus leurs serveurs qui consomment de la ressource, mais le vôtre.

Protéger la santé de votre serveur

Cette problématique de bande passante peut provoquer un second souci : un ralentissement de vos serveurs. Comme c'est le vôtre qui doit absorber le trafic demandé, celui-ci peut devenir de moins en moins performant à cause d'une trop forte demande.

Dans le pire des cas, cela peut même faire planter le serveur qui ne serait pas prévu pour absorber certains pics de visiteurs. C'est d'ailleurs pour cette raison qu'Amazon propose par exemple pour ses solutions cloud des méthodes pour se prémunir du Hotlinking (How to Prevent Hotlinking by Using AWS WAF, Amazon CloudFront, and Referer Checking)

Le référencement naturel

Une page peut être renforcée par l'ajout de contenus enrichis, notamment les images. En faisant du hotlinking, il est ainsi possible pour des concurrents de renforcer la qualité de leurs contenus, et ainsi d'améliorer leur référencement naturel au détriment du vôtre.

A une époque, on pouvait même se positionner sur certaines requêtes en volant les images d'autres sites (à condition d'avoir un site plus populaire en termes de liens). C'est notamment la technique qu'avait testé Paul Sanches en 2009, comme le montre la figure 2 :


Fig. 2. Un exemple de 2009 d'un site qui se positionne en reprenant une image d'un autre site
Source : http://www.seoblackout.com/2009/04/16/referencement-google-images/.

L'image de marque

Tout hotlinking pose un autre problème évident : la maîtrise de son image. Dès lors qu'il s'agit d'un autre site qui reprend vos médias, vous ne pouvez plus gérer l'utilisation du contenu incriminé. Pourtant, cette ressource s'affiche peut-être sur un contenu qui dénigre, diffame ou, moins grave, qui n'est pas en accord avec votre stratégie de marque et de communication.

Les droits d'auteur et les copyrights

Autre problème tout aussi évident : le respect du droit d'auteur. Certaines ressources souvent hotlinkées comme les images peuvent être soumises à un droit d'auteur, et peuvent donc faire l'objet de poursuites judiciaires. Pire encore, pour ceux qui vivent de ces ressources, cela peut aussi représenter un vrai manque à gagner (comme par exemple les photographes dont les images seraient hotlinkées).

Comment détecter des Hotlinks ?

Une détection manuelle

Ce n'est pas une véritable "méthode" car elle dépend en partie du hasard : trouver sans outil adéquat sur le Web un contenu qui vous appartient. Théoriquement, cette solution bancale est surtout liée à un autre aspect : le fait de faire de la veille.

Si vous le faites dans votre secteur d'activité, il y a de fortes chances que vous tombiez sur des contenus ayant les mêmes thématiques que les vôtres, et donc de trouver ceux qui pourraient faire du hotlinking sur vos différentes ressources.

Une détection via Google

Une première solution efficace est de faire une simple recherche dans Google Image. L'objectif est de chercher tout contenu qui fait appel à des ressources de votre site, en excluant les vrais résultats de votre propre nom de domaine. Remplacez juste l'adresse monsite.com par celle du vôtre : inurl:monsite.com -site:monsite.com

Si on prend l'exemple du nom de domaine seomix.fr, on retrouve alors des dizaines d'images hotlinkées :


Fig. 3. Un exemple de plusieurs images hotlinkées depuis un autre site.

Dans le code source de l'exemple de la figure 3, nous avons beau être sur un autre site (https://www.outclicks.net/sites/12za0e/www.seomix.fr), ces ressources sont bien appelées depuis le nom de domaine seomix.fr puisque le code source est le suivant :

<img alt="Optimiser son rfrencement WordPress : 3me dition" src="https://www.seomix.fr/wp-content/uploads/2017/08/optimiser-referencement-wordpress-3eme-edition.jpg">

Dans cet exemple, on voit également un exemple de hotlinking automatisé où certains caractères ont été mal encodés : « Olivier Andrieu de rfrencement », « Optimiser son rfrencement WordPress, 3me dition ».

Remarque : attention cependant, cette méthode est très loin d'être fiable. On trouve parfois des résultats qui en réalité contiennent dans leurs propres URL votre nom de domaine, sans pour autant faire appel à des ressources hotlinkées.

Un autre moyen est de faire une recherche inversée sur une image que vous voudriez vérifier. Cela permet de trouver si elle est hotlinkée mais aussi si elle est dupliquée ou si elle a été volée. Pour cela, on peut par exemple utiliser des services comme TinEye Reverse Image Search (https://www.tineye.com/), ou bien directement le moteur Image de Google. Pour cette seconde solution, rendez-vous sur Google Image, puis glissez-déposez l'image à tester au lieu d'écrire une recherche traditionnelle :


Fig. 4. Un exemple de recherche inversée à partir d'une image.

Les logs du serveur

Il s'agit sans doute là de la méthode la plus efficace : analyser les logs de son serveur pour savoir avec précision quels sont les sites faisant du hotlinking.

Les logs permettent en effet de connaître toutes les ressources demandées sur votre serveur : les contenus HTML, les images, les CSS, les Javascript, certaines requêtes PHP, les fichiers PDF, etc. Mais vous pouvez aussi connaître d'autres éléments, notamment :

  • L'heure à laquelle une URL a été demandée, avec l'IP de la demande ;
  • Quel est l'User-Agent (est-ce un utilisateur ou un moteur de recherche ?) ;
  • L'entête http renvoyé (200, 404, 301, 304, etc.) ;
  • Etc.

Si une ressource est hotlinkée, vous aurez alors le site incriminé car vos logs qui afficheront un referer différent de votre nom de domaine, comme ici :

GET /wp-content/uploads/2016/09/code_sale.png HTTP/1.1   200    https://autre-nom-de-domaine.ch

Il vous suffit donc de télécharger les fichiers de logs de votre serveur (demandez à votre hébergeur si vous ne savez pas où ils se situent). Pour Infomaniak par exemple, il suffit d'ouvrir la console de l'hébergement concerné, d'aller dans « Outils > Journaux d'accès » puis de télécharger les logs désirés.

Une fois ces fichiers téléchargés, importez-les dans Excel (menu « Données > Fichier texte ») en séparant chaque information dans une colonne distincte.  Chaque hébergeur faisant des logs différents, regardez le caractère qui permet de séparer chaque donnée, par exemple : un espace, une virgule, un point-virgule, etc.

Ensuite, il vous suffit de trier tout le tableau en gardant :

  • Les requêtes GET (« je récupère le contenu d'une URL ») ;
  • Les requêtes réalisées sur des fichiers qui peuvent être hotlinkés (images, vidéos, etc.).

En faisant un simple tri sur les logs d'une journée, on peut ainsi trouver les ressources hotlinkées, comme dans l'exemple précédent.

Mais attention, autant il s'agit parfois réellement de hotlinking (un copier/coller d'un autre site ou encore une aspiration automatique de vos dernières publications), autant cela peut aussi être normal. Par exemple avec WordPress, quand vous faites un lien vers un autre site WordPress, cela active l'Embed correspondant qui récupère le nom de votre site, sa description, son URL et son icône. Ainsi, dans la figure 5, on trouve du hotlinking sur un favicon :


Fig. 5. Fig. 5. Un exemple sans réel danger de favicon hotlink.

Et dans les logs, voici comment on le retrouve :

GET /wp-content/themes/seomixwp/favicons/apple-touch-icon.png HTTP/1.1                200 https://capitainewp.io/formations/developper-theme-wordpress/sites-ressources-aide-wordpress/

Les outils de duplicate

Une autre méthode consiste à faire appel à des solutions spécialisées dans la recherche de contenus dupliqués (et souvent volés). En soi, ils n'ont pas pour objectif premier de visualiser des ressources hotlinkées, mais permettent de le détecter en grande partie. Voici quelques exemples de ces outils :

Les outils d'alerte et de veille

Vous pouvez également essayer de vous baser sur des outils de veille. Définissez des termes par rapport à votre marque, à vos produits, à vos services ou à vos contenus, puis vérifiez à chaque fois que les résultats retournés ne sont pas en train de pratiquer du hotlinking. On peut notamment utiliser des systèmes comme :

Comment se protéger des Hotlinks ?

Un contact humain

Méthode souvent efficace, la prise de contact avec la personne qui fait du hotlinking permet souvent de résoudre le problème. Envoyez-lui un email ou appelez-le pour lui demander de remplacer la ressource par une autre sur son propre site pour supprimer le hotlinking. Ou profitez-en pour demander un lien retour pour avoir repris tout ou partie de votre contenu (ce qui va améliorer votre référencement).

Et si une simple demande ne suffit pas, n'hésitez pas à menacer de démarches auprès de l'hébergeur ou de poursuites judiciaires : vous n'imaginez pas à quel point cela peut débloquer la situation.

Remplacer le document qui est hotlinké

Technique plus franche : modifier la ressource demandée en renvoyant un code d'erreur, ou bien en remplaçant la ressource concernée par une autre.

Cette méthode se met en place avec le paramétrage de l'hébergement. Voici ci-dessous un exemple avec l'utilisation du fichier .htaccess présent sur les serveurs Apache. Dans le code qui va suivre :

  • Les deux premières lignes activent une réécriture d'URL ;
  • La 3ème indique le nom de votre site ;
  • La 4ème et 5ème indique ceux qui sont autorisés à charger l'image :
    • Les appels sans referer (4ème ligne) ;
    • Les appels de Google, notamment pour les images affichées dans Google Image (5ème ligne).
  • La dernière remplace les images jpg, jpeg, png et gif par votre image “voleur.png””.

Et voici le code complet :

Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^https://(.+.)?monsite.fr/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://(.+.)?google?.*$ [NC]
RewriteRule .*.(jpg|jpeg|png|gif)$ voleur.png [L]

Vous pourrez ensuite tester la mise en place correcte avec cet outil gratuit : http://www.htaccesstools.com/test-hotlink-protection/

Si vous souhaitez renvoyer un code d'erreur au lieu d'une image, utilisez le code :

RewriteRule .(jpg|jpeg|png|gif)$ - [F]

Si vous le désirez, il existe également des générateurs en ligne comme celui-ci : http://www.htaccesstools.com/hotlink-protection/

Sachez que l'on peut faire aussi cela en PHP, à condition de ne pas avoir de système de cache mis en place sur votre CMS ou sur votre site. Mais faites très attention avec cette méthode, car il faut ajouter manuellement chaque site autorisé à charger en hotlink certaines ressources ! Potentiellement, vous pourriez vous retrouver à bloquer à tort certains sites.

Un code d'auto-embed

Autre méthode possible : ne pas bloquer le hotlinking, mais inciter les sites qui le font à faire un lien retour vers vous pour vous donner de la popularité.

Il s'agit de forcer les voleurs de contenus à copier/coller également le lien retour. S'ils ne font pas attention, ils vont donc dupliquer votre contenu en faisant du hotlinking, mais aussi en ajoutant un lien vers le contenu HTML correspondant.
Voici un exemple de solution le permettant: https://www.ethicalseoconsulting.com/link-building-auto-embed-code-script/

Conclusion

Le hotlinking peut poser d'énormes soucis pour la maintenance, la stabilité et la performance d'un serveur, surtout si cette technique est pratiquée massivement sur vos ressources.

Mais généralement, les ressources hotlinkées sont assez rares, et leur impact réel sur votre site est souvent négligeable. Dans ce cas, essayez plutôt de détecter cette pratique pour gagner des liens retour vers votre site web et ainsi améliorer votre SEO.


Daniel Roch, consultant WordPress, Référencement et Webmarketing chez SeoMix (http://www.seomix.fr)