Privoxy sur Squid : virer les pubs pour tout le monde

closeCet article a été publié il y a 14 ans 10 mois 9 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Sur mon firefox, j’utilise « AdBlock Plus » pour filtrer les pubs. Mais dans une société où IE est le maître (pour cause d’intranets pas compatibles, de pas de droit d’admins et d’utilisateurs contents avec IE (!)), amuse toi pour faire sauter les pubs pour tout le monde.
J’ai entendu parler de IE7pro, une extension pour IE (je ne savais même pas que ça existait). Je l’ai donc installé et désinstallé dans la foulée. C’est naze.
D’où l’idée de déterrer ce bon vieux privoxy que j’utilisais localement sur mon PC avant que « Adblock Plus » n’existe. Il peut se chaîner avec un autre proxy, notamment Squid, afin de filtrer toutes les pubs. (toutes = le mieux possible)

Allez zou, mise en place de la chose sur un serveur avec Squid, pour en faire profiter tout le monde.

Quelques remarques par rapport à Debian

Je ne connais pas trop le rythme d’update des règles de privoxy. Ce que j’en ai compris, c’est qu’elles sont intégrées au package privoxy. A mon sens, ça devrait être dissocié, par exemple dans le dépôt « volatile ».
Ca ne l’est pas. Et comme les pubs évoluent, j’ai un peu hésité.

EDIT : j’ai changé d’avis sur ce qui suit : j’ai pris la version officielle Debian. Cf. les commentaires

Finalement, j’ai opté pour la version packagée Debian sur le site de privoxy plutôt que la version officielle dans la « stable ». Moins pratique pour mettre à jour, mais je n’aimerais pas qu’un nouveau genre de pubs ne soit pas filtré ou à l’inverse, trop de coups de haches sur certains sites.
En « stable », on est en 3.0.9 si je ne dis pas de bêtise, contre 3.0.12 en .deb sur le site.

J’ai aussi essayé de trouver une méthode facile pour convertir les expressions régulières d’Adblock Plus pour privoxy. J’ai lâché l’affaire. Si quelqu’un sait faire, ça peut être intéressant.

Quelques chiffres après 2 semaines d’utilisation

Histoire de mettre l’eau à la bouche. 100 personnes surfant raisonnablement ont vus (façon de parler) 10% de leurs requêtes bloquées par privoxy. C’est toujours ça d’économisé, mais c’est surtout le gain sur la pollution visuelle qui vaut le coup.
Je n’ai pas vu de différences sur quelques sites où j’avais l’habitude d’aller via « Firefox+AdBlockPlus » par rapport à « n’importe quel navigateur+privoxy sans adblock plus évidemment ».

Mise en place sur Debian

Installation

Installez donc le package Debian , précédemment téléchargé, avec la commande suivante :

dpkg -i privoxy_3.0.12-1_i386.deb

Paramétrage et tests de base

Tout se passe dans /etc/privoxy/config. Vous n’avez qu’une chose à modifier pour tester votre privoxy en direct :

listen-address  localhost:8118

Si le service est sur un serveur (et pas votre PC), changez « localhost » en « * » ou l’IP de la machine sur le LAN et relancez via /etc/init.d/privoxy restart
Bien sûr, il faut indiquer à votre navigateur d’utiliser le proxy sur cette machine, port 8118.
A la fin : faites bien attention à la valeur choisie (ou à vos règles de firewall si elles filtrent l’accès au serveur squid/privoxy), il ne faudrait pas qu’un utilisateur puisse adresser en direct privoxy en court-circuitant squid…

Interco avec Squid

La doc officielle de privoxy dit de chaîner dans l’ordre : PC -> squid -> privoxy
Il doit y avoir une raison, peut-être pour ne pas court-circuiter les éventuelles ACL de Squid, qui permettraient par exemple un certain traitement suivant l’IP source de la requête.
Bon bref, c’est donc au niveau de Squid qu’il faut paramétrer. Cherchez le mot « squid » dans la doc http://www.privoxy.org/user-manual/config.html. En résumé, ajoutez où il faut dans /etc/squid/squid.conf :

cache_peer 127.0.0.1 parent 8118 7 no-query
acl ftp proto FTP
always_direct allow ftp
never_direct allow all

Dans l’exemple, 127.0.0.1 indique que privoxy est sur la même machine que squid, sinon mettez l’IP de privoxy, et son port, par défaut 8118.
A noter que squid fait proxy FTP dans mon exemple, sinon adaptez.
Relancez squid, un /etc/init.d/squid reload doit suffire.

Pour voir les stats vite fait

http://p.p/
Ca peut servir pour configurer l’outil aussi, si vous avez activé ce qu’il faut
Evidemment, vous serez gentils de whitelister michauko.org. Je me suis pas tapé la mise en place de Google AdSense pour rien 🙂 ouais bon, ça va… c’est pour financer un jour quelques mois de mon serveur…

A suivre

L’article SquidGuard, l’ami de Squid quand l’accès Internet est un peu trop surchargé par 99% d’inutile.

11 comments

  1. Bonjour
    Intéressante solution mais dangereuse: Beaucoup de sites ne fonctionnent qu’avec le financement de la publicité, certains en abusent avec des éléments qui sautent au visage
    mais je trouve que sur des sites gratuits apportant un service le plus petit respect est au moins de ne pas supprimer ce qui les aide a fonctionner

  2. C’est beau, mais on ne peut pas différencier les 2.
    Et entre mes yeux, la survie de je ne sais qui, et le fait que de toute manière je ne vais jamais cliquer sur un lien pub, j’ai choisi.
    Et je suis le 1er à payer ma location de serveur tout seul. C’est à petite échelle, mais ça ne change rien au débat.

    Libre à vous de whitelister tous les sites qui selon vous devraient être épargnés, ou de monter un projet les recensant avec vote d’approbation et tout et tout… Y’a plus qu’à faire diffuser une liste spéciale pour privoxy, adblock plus etc.

  3. Bein si… Il faudrait faire un système de blacklist pour bloquer les sites génants plutôt que l’inverse

  4. Alors attends l’article suivant sur squidguard.
    Mais un site comme clubic.com, c’est un ami ou un ennemi ? Parce-qu’il clignote beaucoup sans filtre. Beaucoup trop à mes yeux. Et pourtant, il m’arrive d’y aller…
    A part dans un monde de Bisounours, je ne vois pas comment trier

  5. Au fait, j’oubliais : un des intérêts souvent montré dans le combat « plug-in firefox » VS « proxy sur serveur », c’est le déport de la charge sur le serveur, au lieu du PC.
    Sans compter que ça peut même servir aux appareils mobiles (genre PDA) qui n’auront pas trop d’option autre qu’un proxy pas loin pour filtrer. Enfin, quand on n’est pas sur la route évidemment…

  6. Ping : Lectures Libres pour le week-end #17 | Philippe.Scoffoni.Net
  7. Ping : Lectures Libres pour le week-end #17 | Test
  8. « La doc officielle de privoxy dit de chaîner dans l’ordre : PC -> squid -> privoxy
    Il doit y avoir une raison »
    Oui, la raison est : pour que Squid garde en cache la réponse de Privoxy (réponse = pub nettoyée).
    Si on fait PC -> privoxy -> squid, on récupèrerait la pub non nettoyée à partir du cache de Squid puis Privoxy serait exécuté une énième fois pour la même pub.

    Donc « PC -> squid -> privoxy » = surcharge en moins.

  9. Finalement, la version packagée par l’équipe Privoxy me posait des problèmes : arrêt sans prévenir des downloads de fichiers un peu gros (disons, quand je dépasse 20 MB en gros).
    La version officielle ne me fait pas ça.

    Je préfère être en retard, mais fonctionnel.

  10. Sur mon routeur, je viens de passer de Lenny à Squeeze… j’utilisais bFilter pour virer la pub et j’en était très content (j’avais viré les filtres internes « automatiques » et j’avais ajouté une vingtaine de filtres). Sauf que bFilter n’existe plus dans Squeeze donc je suis obligé de me tourner vers privoxy.
    Je l’ai installé, mes requêtes passent bien par lui, sauf que pas moyen de filter quoi que ce soit avec la config par défaut… par example, je fais une recherche sur google, et je continue d’avoir pleins de pubs dans les rectangles « jaune pâle ».

    Je vais essayer de comprendre la doc de privoxy mais c’est pas gagné 🙁

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.