Fasterfox abuse sur le prefetching
Par Laurentj le mercredi, décembre 7 2005, 12:18 - Technologies Web - Lien permanent
FasterFox est une extension pour Firefox qui, en mode turbo, charge automatiquement toutes les pages dont les liens se trouvent sur la page courante. Cela peut paraître utile pour l'utilisateur, car alors quand il clique sur un lien, la page s'affiche instantanément pusiqu'elle est déjà chargée dans le cache. Malheureusement, cela provoque une charge non négligeable sur les serveurs, voir même un DOS comme en témoigne Raphael sur le forum alsacréations. Charge d'ailleurs souvent inutile car l'internaute va rarement sur les dizaines de liens que peut contenir une page web.
En fait, FasterFox utilise (abusivement) une fonctionnalité de Firefox qui permet de faire ce prefetch. Google profite profitait également de cet fonctionnalité en y mettant la balise <link rel="prefetch" href="http://url/à/prefetcher/">, qui fait faire alors à Firefox un prefetch sur le premier résultat d'une recherche.
Heureusement, il y a une solution pour les webmestres pour empecher ce prefetch. En effet, Firefox envoi l'en-tête HTTP X-moz: prefetch lorsqu'il effectue un prefetch. Il est donc possible de détecter ce genre de requête coté serveur via des rêgles dans le fichier .htaccess ou dans vos pages PHP.
Exemple que l'on peut mettre dans le .htaccess :
RewriteEngine On
RewriteCond %{X-moz} ^prefetch
RewriteRule ^.* - [F]
En PHP, on peut faire aussi :
if(strtoupper($_SERVER['HTTP_X_MOZ']) == 'PREFETCH';){
...
}
Lire un billet de Padawan qui a fourni il y a quelques mois des exemples détaillés pour contrer Google et FasterFox (exemples de redirections etc..)
Commentaires
Merci pour cette solution, Laurent. Le problème est que ce genre de choses n'est pas toujours à la portée de n'importe quel webmaster. Espérons que le plugin Fasterfox soit un peu remis à jour.
Il faut savoir que les préférences de fasterfox donnent différents niveaux d'accélération : http://fasterfox.mozdev.org/screenshots.html
Le turbo étant signalé comme augmentant la charge des serveurs, il devrait même être déconseillé, je pense. Et de plus, fasterfox est source de quelques problèmes sur Firefox particulièrement lors de la mise à jour vers la 1.5 et pour les utilisateurs en 56k. (source : le forum de geckozone)
Je comprends enfin pourquoi, quand je faisais une recherche dans Google, Firefox me demandait ce que je voulais faire du cookie que me déposait le site arrivé en première position de résultat.
Fasterfox abuse du prefetch. Solution de Laurent : empêcher le prefetch.
Ça me parait totalement stupide. C'est pas parce que certaines personnes abusent d'une fonctionnalité qu'on doit la désactiver.
loufoque, en l'occurence la solution de Laurent n'est pas d'empecher tout prefetch, il ne fait que donner un moyen aux webmasters d'empecher les abus de ce type de fonctions sur leurs sites. Il y a plein de raisons pour vouloir empecher ce type de comportement de la part des navigateurs : sauvegarde de la bande passante, sauvegarde des ressources serveurs, sauvegarde de la navigabilité du site pour l'ensemble des internautes, etc.
loufoque : stupide ? monte donc un site interressant chez n'importe quel hebergeur. Ne t'etonne pas alors que l'hebergeur ferme ton accés au bout d'un moment parce que tu occupe trop de ressource serveur ou que tu as dépassé ton quota de bande passante.. tout ça à cause de ce genre de fonctionnalité...
Je peux t'assurer que quand une chose comme ça t'arrive, tu met vite en place ce genre de mesure. (une chose similaire m'est arrivé sur xulfr.org, mais plutôt à cause d'un aspirateur de site... heureusement mon hébergeur est cool)
Le problème n'est pas le prefetch, c'est le fait que fasterfox effectue un nombre considérable de connexions dans un intervalle de temps très réduit. Ce qu'il faudrait, à mon avis, c'est plutôt chercher une solution à ce problème là, ce qui résoudrait d'ailleurs le problème des aspirateurs et des attaques DoS en général.
C'est bien vos commentaires mais comment savoir si réellement on abuse sur un serveur. N'y a t'il pas un test (style 60 M de conso.) pour vous dire: Attention vous êtes dans la zone rouge ?
James, si ton site utilise PHP, JSP ou autre langage web, tu peux toujours mettre en début de page un script qui detecte ce genre de chose.. (masi c'est plus compliqué à faire..)