
Après un mois d’inactivité blogesque du à mon travail, je fais un petit saut pour vous raconter comment empêcher d’autres webmasters de vous piquer votre bande passante. Le hotlinking c’est quoi ? Simple: Vous avez un site Internet et hébergez des images que vous avez créés ou trouvées pour illustrer vos propos. Google image passe faire un tour par là, et hop, l’ensemble de vos images, créations, captures d’écran, logos se retrouvent sur le moteur. Jusqu’ici tout va bien, sauf que si vous êtes convenablement positionné sur un mot clé, une ribambelle de bloggers fainéants vont utiliser votre image pour illustrer leur billet. Qu’ils utilisent votre image sans vous en avertir, c’est une chose, mais qu’en plus au lieu de l’héberger, ils la pompent directement depuis votre serveur, c’en est une autre. Le hotlinking c’est ca, le fait d’utiliser des images hébergées sur un autre site que celui où elles sont affichées (site internet, forum, etc).
Pour le coup, l’exemple de Google image n’est pas le plus probant, simplement parce qu’il suffit d’insérer le code suivant dans votre robots.txt afin de faire le ménage:
User-Agent: *
Allow: /
User-Agent: Googlebot-Image
Disallow: /
Par contre si vous avez un site à forte audience comme abrutis.com, il suffit qu’1/10 des visiteurs hotlinkent* (* attention, néologisme douteux) les images « marrantes » sur leur blog pour mettre votre serveur sur les rotules, où pour faire quadrupler vos coûts en bande passante. Autre cas de figure, nous avons un site Internet dump-it.fr, qui permet à n’importe quel internaute d’héberger son image afin de la donner à ses proches par IM, Mail ou en mettant un lien sur un forum ou sur son site. Ceci dit, les liens que l’on fournit afin de donner l’image sont formatés de telle façon que l’image soit affichée à l’écran contenue dans une page HTML, permettant ainsi d’améliorer le référencement de dump-it.fr, mais également de le monétiser. Mettre de la pub dans des pages html, c’est possible, au sein d’une image c’est plus difficile :D. Toujours est-il que j’ai comparé les stats que nous resortait Analytics pour ce site et celles du serveur sur lequel il est hébergé. Analytics comptabilisait dans les 600 visiteurs unique par jour quand en me basant sur l’analyse des logs du serveur j’en resortait dans les 1100. Il y a donc un manque à gagner de 500 visiteurs qu’Analytics ne peut comptabiliser, car ces derniers sont ceux qui affichent des images hotlinkés (et donc pas de tracker JS pour Analytics). J’ai donc décidé d’enrayer ce fléau pour les raisons que j’ai déjà evoqué (Bande passante, référencement, monétisation).
Il vous suffit de créer un htaccess qui ne va autoriser l’accès à vos images qu’aux referers que vous aurez autorisé. Alors bien évidement, on ne peut pas considérer que c’est une solution fiable à 100% car tout le monde sait qu’un referer est fakable. Ceci dit je mise sur le fait qu’une personne préfèrera uploader l’image sur son site plutôt que de devoir faker le referer de son script pour afficher une image hostée sur dump-it.fr …
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?dump-it.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?john-jean.com/.*$ [NC]
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|jpeg|JPEG)$ http://www.dump-it.fr/hotlink.jpe [R,NC]
Cette méthode permet donc de rediriger l’ensemble des personnes tentant d’accéder à vos images, et dont le referer n’est ni vide (2ème ligne), ni dump-it.fr ou john-jean.com (3eme et 4eme lignes) vers l’image hotlink.jpe (dernière ligne). Notez bien que hotlink.jpe n’est pas une coquille, simplement si je renvoyais vers un .jpg, cela bouclerait car ma règle RewriteRule .*\.(gif|jpg|jpeg|bmp)$ réécrit pour les .jpg. Les navigateurs interprètent correctement les .jpe de toute facon.
L’intérêt de cette méthode est qu’elle permet d’afficher des images relativement cocasses aux personnes qui vous leechent* (Second néologisme douteux du billet). Je me suis pas mal amusé avec dump-it.fr à mettre toute sorte d’images et c’était amusant de voir ce que cela rendait chez les hotlinkers. Un site e-commerce a vu l’ensemble de ses images intégralement remplacées, un site d’humour avec un forum actif également, et bien d’autres. Pour le coup, ceux qui m’ont contacté ont été ajoutés à ma white list ;)
Si vous ne souhaitez pas vous amuser à changer les images de tous les sites qui vous volent (et vous spolient !), vous pouvez simplement rediriger vers une 403:
RewriteRule .*\.(gif|GIF|jpg|JPG|bmp|BMP|jpeg|JPEG)$ - [F]
Voilà, bon amusement et désolé si cet article a été relativement mal écrit, je me remet dans le bain ;)
PS: Pour le cas de dump-it, comme le site était mal organisé j’avais une arbo comme cela: /upload/images/miniatures/, donc je devais limiter l’accès à images (pour le hotlink), mais laisser miniatures ouvert car il sert à l’insertion des miniatures dans les bbcode forum. Si vous avez le même type de soucis, il suffit simplement de rajouter dans le dossier *miniatures*:
RewriteEngine off
allow from all

Merci pour ce truc de l’extension en .jpe !
Je ramais depuis un moment et mon image de remplacement ne s’affichait pas, alors que je faisais tout bien. Je commençais à déprimer, et j’ai trouvé votre blog et cette astuce.
J’étais éhontément « hotlinkée » par amiz.fr, à partir de maintenant ils vont avoir des surprises.
Encore merci !
RewriteRule .*.(gif|jpg|jpeg|png|bmp)$ – [F,NC,L]
avec NC (Non Case sensitive) , c’est encore plus joli ;-)
Se baser sur le referrer n’est pas la meilleure solution car certains usagers peuvent l’avoir désactiver de leur navigateur et dans ce cas ne pas voir les images sur mon site…
Oui, après si on part de ce postulat, c’est choisir entre la peste et le choléra.
Si tu as une meilleur solution, je suis preneur !
Perso j’ai une méthode différente je bloque les « gros » sites et hébergeurs de blogs :-P
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?forum-auto\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?forum-actif\.net/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?planeterenault\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?motorslive\.fr/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?myspace\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?blogspot\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?planete-ducati\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?hardware\.fr/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?forum-autoroule\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?sportscarforums\.com/ [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?livejournal\.com/ [NC]
(Pour mon site sur l’auto .. :-D )
Personnellement il faudra que je relise l’article car j’ai pas compris la relation entre ton blog et dump-it… :)
@Inseb: On a simplement du patcher « dump-it ».
John : au fait … les emails d’abonnement aux commentaires tombent en spam chez GMail :
Received-SPF: neutral (google.com: 91.121.71.142 is neither permitted nor denied by best guess record for domain of www-data@ns351816.ovh.net) client-ip=91.121.71.142;
X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: « MIME-Version »
@Gonzague: Merci, je viens de remodifier mes SPF je tente quelques configs.
de rien ! je t’ai déspammé de mon côté
Merci John, je m’était toujours demandé comment faire ça et bim, te voilà encore une fois à ma rescousse :)
Bye
Julio (oui Le Julio ^^)