Bien des internautes se sont cassés les dents en beauté sur la protection anti-hotlinking de Fansub Streaming
Car le hotlinking est un fléau pour les serveurs web et augmente considérablement le nombre de connexions nécessaires pour afficher une page, il convient de s’en protéger.
Au fil du temps et Fansub Streaming se complexifiant, il faut faire beaucoup en peu de lignes. Fansub Streaming traite les hotlinks par liste blanche
En gros: « tout ce qui n’est pas autorisé est interdit » .
La méthode utilisée est très efficace, car agit directement sur l’application serveur web: Apache, avec un fichier .htaccess. Pour mettre en place une solution de ce genre, il vous faut absolument un accès FTP à votre site/blog/forum (pour les plateformes de blogs et forums genre Skyrock, Over-Blog ou ForumActif, vous ne pourrez pas empêcher le hotlinking de votre contenu).
Sachez que le fichier .htaccess a effet dans les sous-répertoires: attention au choix du dossier ! Pour le CMS WordPress, je vous conseille de mettre ça dans le dossier /wp-content/uploads (c’est là dedans que sont stockés vos fichiers insérés dans les billets).
Étape 1: lancer le moteur de redirection d’Apache
Rien de bien sorcier, 1 seule ligne:
RewriteEngine on
Étape 2: liste d’exclusion « les autorisés »
Rappel: on fonctionne par liste blanche ! Dans cette liste, on va en fait mettre les referrer (les référents) qui ne doivent pas provoquer de redirection générale. Referrer vide et referrer de votre propre site sont le minimum pour ne pas voir un désastre sur votre site. Ajoutez également les moteurs de recherche.
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?fansub-streaming.eu/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?mangas-passion.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?google.*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?yahoo.*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?lo.st/.*$ [NC]
La syntaxe mérite explication: le ! (point d’exclamation) devant l’adresse signifie « faux » . Pour que la redirection ait lieu, le referrer ne doit correspondre à aucun de ceux-là. « (www\.)? » signifie que l’adresse avec le www devant est aussi valable. Le très puissant « ([a-z0-9-]+\.) » signifie que tout sous-domaine alphanumérique est valable. Par exemple: « http://machintruc951.mangas-passion.fr » est valable. C’est très pratique parce que le cache de Google utilise un sous-domaine étant en fait l’adresse IP du serveur: dur d’anticiper ça. Le « /.*$ » à la fin permet de rendre valable depuis tout sous-dossier: « http://www.mangas-passion.fr/forum/viewforum.php?f=20″ est valable.
Étape 3: liste d’exclusion « les méchants »
Cette liste, facultative, va lister en fait les sites qui font déjà du hotlinking, et à qui on va jouer un mauvais tour
Genre: faire afficher une autre image. La ligne avec le « # » devant est en fait un commentaire, elle n’est pas prise en compte. Je m’en sers pour classer les sites avec qui je suis gentil et les sites… où je fais des méchancetés. La redirection correspondante sera en étape 5, la redirection spécialisée.
#mode gentil
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?xooit.fr/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?flash-sky.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?skyrock.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?taringa.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://rpgnarutorpg.forumactif.net/.*$ [NC]
La seule différence avec la liste des autorisés, c’est que pour ceux-là, on va changer la redirection au cas par cas.
Étape 4: la redirection générale
Et voilà, on y est. Dans cette ligne, on va dire pour quoi, vers où et comment le serveur doit rediriger, si le referrer ne correspond pas aux adresses de la liste d’exclusion. C’est ce piège qui frappe dès que du contenu est hotlinké.
RewriteRule .*\.(bmp|gif|jpe?g|png|mp3|swf|wma|divx|avi|aac|mp4|ogg|ogv|flv)$ "http://www.fansub-streaming.eu/blog/hotlink-5662?%{SERVER_NAME}%{REQUEST_URI}" [NC,R=301,L]
En clair, pour tous les fichiers portant une extension bmp, gif, jp(e)g,… ou flv, le serveur va rediriger à la page, avec comme variable le nom du serveur référant (la provenance) et le fichier demandé (qui a été hotlinké). NC (no case) donne effet peu importe que ça soit en majuscules ou minuscules, R=301 donne le code réponse (301 étant la réponse « déplacé de façon permanente » ) et L (last) définit une fin de règles de redirection. La suite sera traitée séparément.
Étape 5: la redirection spécialisée
Comme vous avez pu voir précédemment, certains « méchants » sites ont été exclus de la redirection générale, pour rentrer dans la redirection spécialisée. En gros: quand j’ai envie de faire afficher une image sur le site, au lieu de rien du tout.
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?xooit\.fr/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://img694.imageshack.us/img694/9827/48642116.png [R=301,L]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?flash-sky\.net/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://www.hello-kitty.co.uk/gfx/pictures/hello_kitty_wallpaper_Hello-Kitty_800x600.jpg [R=301,L]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?skyrock\.com/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://www.fansub-streaming.eu/blog/ [R=301,L]
RewriteCond %{HTTP_REFERER} ^http://(.+\.)?taringa\.net/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://www.bing.com/fd/hpk2/Haiti_FR-FR308577627.jpg [R=301,L]
RewriteCond %{HTTP_REFERER} ^http://rpgnarutorpg\.forumactif\.net/ [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ http://img696.imageshack.us/img696/2199/53298739b034091af944830.png [R=301,L]
La syntaxe est un peu différente par rapport à la liste d’exclusion. « (.+\.)? » signifie « tout » . Vous pouvez noter que les RewriteCond n’ont plus les points d’exclamation devant, donc la condition doit être « vraie » pour que la redirection ait lieu. « si le site correspond, alors je redirige » . On peut préciser quel type de fichier doit provoquer une redirection, pour des raisons pratiques je mets ça en application que pour les images. Paradoxe: la redirection provoque un hotlinking, par exemple sur le site de Bing. Imageshack est un stockage d’images, donc ça ne pose pas de souci.
Il faut bien veiller à ce que la redirection spécialisée correspond bien à la liste d’exclusion des méchants: si l’on oublie une redirection spécialisée, alors le site est autorisé à hotlinker sans être ennuyé.
Cuisinez votre fichier .htaccess et envoyez-le sur le FTP
Voici un exemple de fichier .htaccess anti-hotlink par liste blanche basique, pour empêcher le hotlinking d’images sans bloquer l’accès depuis les moteurs de recherche listés:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?votre-site.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?google.*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?yahoo.*/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://([a-z0-9-]+\.)?lo.st/.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png)$ "http://www.votre-site.com/hotlink.html" [NC,R=301,L]
Amusez-vous bien









Commentaires