privoxy

Adsuck pour remplacer privoxy

date
11 / 2 / 2010
comments
0

Sur les trois machines clientes chez moi (dont deux avec l'OS à la pomme et de browsers douteux), filtrer les pubs du web au niveau du réseau tout entier est vital, puis il m'arrive de tester des browsers autres que firefox (dans le genre webkit-gtk/bindings vim) et là adblock ne m'est d'aucuns secours.

Pendant un temps j'utilisais privoxy sur mon routeur OpenBSD, mais je lui ai trouvé plusieurs defauts :

  • Les regexp de base sont très éfficaces mais il y a malheureusement beaucoup de faux positifs.
  • Le temps de traitement amène une lenteur parfois perceptible.
  • Je l'avais en proxy transparent, donc y'a toujours quelqu'un au bout du 'telnet machin 80' (ça peut être génant)
  • Configuration et maintenance pas franchement agréable.

Du coup en reinstallant le routeur j'ai cherché une alternative, et j'ai trouvé adsuck. C'est du filtrage dns, assez violent mais beaucoup plus rapide et tout aussi éfficace.

Pour le moment ce soft est codé par et pour OpenBSD, mais ça doit pas être méchant à compiler sur autre chose.

L'install :

# export PKG_PATH=ftp://ftp.fr.openbsd.org/pub/OpenBSD/4.6/packages/i386/
# pkg_add adsuck
# cat >> /etc/rc.local << EOF
if [ "" != "NO" -a -x /usr/local/sbin/adsuck ]; then
    echo -n ' adsuck'; /usr/local/sbin/adsuck $adsuck_flags
fi
EOF
# cat >> /etc/rc.conf.local << EOF
adsuck_flags="-c /var/adsuck -l 127.0.0.1 -p 54 -f /files/resolv.conf /files/hosts.small /files/Hosts.pub /files/local.pub"
EOF

Comme j'ai un vrai serveur DNS (pour le réseau local mais aussi pour mes domaines), j'ai lancé adsuck sur le port 54 (dns normal c'est 53) et fait une redirection pour le réseau local avec pf, adsuck va lui même servir de proxy entre le réseau local et le serveur DNS qui tourne sur localhost en particulier.

# echo "nameserver 127.0.0.1" > /var/adsuck/files/resolv.conf
# touch /var/adsuck/files/local.pub

On lance une première fois :

# adsuck -c /var/adsuck -l 127.0.0.1 -p 54 -f /files/resolv.conf /files/hosts.small /files/Hosts.pub /files/local.pub

Si ça se lance, on peut rediriger le traffic du réseau local vers adsuck :

table <local> const { 192.168.0.0/24 }
rdr pass on $ext_if proto udp from <local> to $ext_if port domain -> lo0 port 54
# Si vous êtes vraiment méchant vous pouvez enlever le 2ème $ext_if :)

Maintenant sur une machine du réseau local :

% host www.smartadserver.com dns1.proxad.net
www.smartadserver.com has address 91.103.138.65
% host www.smartadserver.com
Host www.smartadserver.com not found: 3(NXDOMAIN)

Et vous voilà avec un net plus très neutre mais épuré de toute publicité. Pour rajouter des sites, je vous ai fait créer un /var/adsuck/files/local.pub, la syntaxe est simple :

127.0.0.1 domaine_moisi.com

Et pour faire relire les listes à adsuck :

# kill -USR1 `pgrep adsuck`

Faire sauter les pubs de Canal Plus

date
17 / 12 / 2009
comments
2

Si vous êtes adeptes du zapping / petit journal actu de Canal Plus et que vous n'avez pas la TV et que les scripts shell qui chopent directement les vidéos ne marchent plus au bout d'une semaine, il vous faut alors aller sur leur beau site tout en flash et manger la pub d'une minute avant chaque vidéo.

Sauf que, en fouillant dans le code source des pages on trouve assez facilement d'où viennent les vidéos de pubs, ils suffit alors de bloquer le domaine en question qui est smartadserver.com. Les videos de canal plus sont dans www3.smartadserver.com/call/pubi/ , mais libre à vous de bloquer completement smartadserver.com.

Donc mettez la bonne ligne qu'il faut dans votre Adblockplus / proxy. Moi j'ai un privoxy transparent qui filtre tout le réseau local et la syntaxe est la suivante (dans la conf, le fichier user.action)

{ +block{Nasty ads.} }
www3.smartadserver.com/call/pubi*

Un jours je trouverais un moyen simple (module firefox ?) pour mettre à jours les règles privoxy plus facilement, et je partagerais ma config promis :-).