Pitombera’s Weblog

Just another weblog

Anti-Ad com SquiD

Publicado por pitombera em Setembro 2, 2008

Introdução

O squid proxy pode pegar uma lista de ips vinda de um arquivo texto e bloquear estes ips para os clientes usando o proxy. Isto é perfeito para o bloqueio de servidores “ad”. Seus clientes não serão mais importunados com ads, diminuirá o consumo de banda e você não terá que se preocupar se seus clientes vão clicar em qualquer coisa animada que apareça. Este script funciona de forma semelhante ao SafeSquid, mas te dá total controle sobre a lista de ips.

Iniciando

As seguintes linhas precisam ser adicionadas ao seu squid.conf. Vamos considerar que seu squid.conf esteja em ‘/etc/squid/’ e você irá colocará sua lista de servidores ad( ad_block.txt) no mesmo diretório.

A primeira linha abaixo é apenas um comentário para você lembrar de onde está pegando a lista de ips. A segunda linha é uma expressão regular que lê o arquivo “/etc/squid/ad_block.txt” quando o daemon do squid é carregado ou quando você reconfigura o squid com “squid -k reconfigure”. A última linha é uma instrução para que o squid bloqueie o acesso aos ips dos servidores ads.

## disable ads ( http://pgl.yoyo.org/adservers/ )
acl ads dstdom_regex “/etc/squid/ad_block.txt”
http_access deny ads

Baixando a lista de servidores Ad

Agora nós precisamos baixar a lista com os ips dos servidores ad e adaptar para o formato suportado pelo squid. O seguinte script irá fazer isso por nós. Primeiro o script faz o download da lista em pgl.yoyo.org com o wget e salva em /tmp/tmp_ad_file, depois as linhas que não queremos( html e outras coisas) são removidas com o grep e o resultado salvo em ‘/etc/squid/ad_block.txt’. Por último, o script recarrega o squid com um ’squid -k reconfigure’ para que a lista seja atualizada e remove o arquivo temporário.

link1

link2

Criando um erro personalizado

Vá ao diretório de erros, é o valor de ‘error_directory’ que é setado no seu squid.conf, no meu caso foi “/usr/local/etc/squid/errors/Portuguese”; eu optei por copiar o ‘ERR_ACCESS_DENIED’ para ERR_AD_DENIED e editar à meu gosto.

Adicione ao squid.conf :
deny_info ERR_AD_DENIED ads

mais info em: http://www.squid-cache.org/Versions/v2/2.7/cfgman/deny_info.html

Automatizando com o cron

O ideal é que você tenha uma lista atualizada sempre, o site de onde pegamos a lista(pgl.yoyo.org) atualiza-a em média cada três(3) dias. Abaixo segue a regra para ter um job no cron a cada 3 dias ás 5:35 da manhã. Use o ‘crontab -e’ como root e adicione:

#minute (0-59)
#| hour (0-23)
#| | day of the month (1-31)
#| | | month of the year (1-12 or Jan-Dec)
#| | | | day of the week (0-6 with 0=Sun or Sun-Sat)
#| | | | | commands
#| | | | | |
#### refresh squid’s anti-ad server list
35 5 * * */3 /scripts_dir/ad_servers_newlist.sh >> /dev/null 2>&1

*Diretório onde o script está contido.

Exemplo

Exemplo

Exemplo

Links

http://www.squid-cache.org/

https://calomel.org/

Créditos

“A César o que é de César.”

Essa é uma tradução/adaptação do artigo publicado em https://calomel.org/squid_adservers.html

“That’s all folks”

Uma resposta para “Anti-Ad com SquiD”

  1. [...] minhas andanças virtuais, achei(e fui recomendado) com dois tutoriais ótimos sobre ele, um sobre como criar um Anti-Ad e um explicando como criar um esquema de cache para [...]

Deixe uma resposta

XHTML: Você pode usar estas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>