EdgeMAX - bloqueio de anúncios (filtragem de conteúdo) usando EdgeRouter

Visão geral


Os leitores aprenderão como ativar o bloqueio de anúncios em um EdgeRouter. Este guia prático é inspirado por framboesa pi até o ponto de acesso adblocking. aqui são apenas algumas das vantagens de bloqueio de anúncios no roteador:

  • Você pode aplicar adblocking para todos os seus clientes sem instalar qualquer addons de navegador
  • Você pode bloquear anúncios em celular/tablet apps (poupança de bateria e apps cache)
  • Seu outro significativo será exposto a menos publicidade mesmo sem perceber (resultando ao consumismo reduzido) Smiley Very Happy

A abordagem substitui os servidores DNS dos servidores de anúncios de conhecidos. No meu script abaixo, estou usando uma lista de 'segura' que é conhecida para não bloquear a navegação normal.

A abordagem não bloqueia todos os anúncios, desde que se baseia apenas em bloquear servidores de anúncios e não anúncios veiculados pelos sites próprios, embora ele funciona surpreendentemente bem.

Passos


As etapas a seguir devem ser executadas como administrador ou usando o sudo.

Etapa 1: Criar o arquivo /config/user-data/update-adblock-dnsmasq.sh e adicione as seguintes linhas (alternativamente você pode baixar o arquivo anexado a este post e copiá-lo no diretório /config/user-data do seu roteador)

#!/bin/bash

ad_list_url="http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsmasq&showintro=0&mimetype=plaintext"
#The IP address below should point to the IP of your router or to 0.0.0.0
pixelserv_ip="0.0.0.0"
ad_file="/etc/dnsmasq.d/dnsmasq.adlist.conf"
temp_ad_file="/etc/dnsmasq.d/dnsmasq.adlist.conf.tmp"

curl -s $ad_list_url | sed "s/127\.0\.0\.1/$pixelserv_ip/" > $temp_ad_file

if [ -f "$temp_ad_file" ]
then
        #sed -i -e '/www\.favoritesite\.com/d' $temp_ad_file
        mv $temp_ad_file $ad_file
else
        echo "Error building the ad list, please try again."
        exit
fi

/etc/init.d/dnsmasq force-reload

No script acima, há uma linha que começa com "#sed". Você pode Descomente isso e modificá-lo para remover seus sites favoritos na lista de bloqueio de anúncios, então você pode continuar a apoiá-los. Como você gostaria, você pode adicionar quantos dessas linhas. Um exemplo seria:

sed -i -e ' / ads\.stackoverflow\.com/d' $temp_ad_file

Etapa 2: Execute chmod a + x /config/user-data/update-adblock-dnsmasq.sh para tornar o script executável
etapa 3: teste, executando-o /config/user-data/update-adblock-dnsmasq.sh
This irá criar o arquivo /etc/dnsmasq.d/dnsmasq.adlist.conf que será lido toda vez que dnsmasq inicia. Um pedaço de amostra do arquivo é a seguinte:

address=/mbn.com.ua/0.0.0.0
address=/mbs.megaroticlive.com/0.0.0.0
address=/mbuyu.nl/0.0.0.0
address=/mdotm.com/0.0.0.0
address=/measuremap.com/0.0.0.0
address=/media-adrunner.mycomputer.com/0.0.0.0

 Etapa 4: Testar se adblocking funciona executando ' cavar @localhost measuremap.com'
Nota: para usar a 'cavar' você precisa instalar o dnsutils usando o comando "apt-get install dnsutils". Como alternativa, você pode usar o comando "acolhimento measuremap.com localhost"

# dig @localhost measuremap.com

; <<>> DiG 9.7.3 <<>> @localhost measuremap.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57475
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;measuremap.com.                        IN      A

;; ANSWER SECTION:
measuremap.com.         0       IN      A       0.0.0.0

;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 11 23:57:28 2013
;; MSG SIZE  rcvd: 48

Se você receber o valor que você especificou no seu script para a variável pixelserv_ip (ou seja, 0.0.0.0 no exemplo acima), isso significa que seu dnsmasq agora está bloqueando servidores de anúncios de
passo 5 (opcional): para atualizar sua lista de servidores de anúncio em uma base regular, você pode executar 'crontab -e' e adicione o seguinte para atualização automática.
56 4 * * 6 /config/user-data/update-adblock-mdns.sh

O exemplo atual atualiza todos os domingos às 04:56
passo 6: teste via seu tablet/telefone e/ou navegador. Apesar de não definir um servidor de pixelserv, páginas da web ainda processar corretamente sem nenhum problema.
Nota: Eu tentei e consegui rodar um servidor pixelserv no roteador, mas eu tinha que mexer com as configurações padrão do lighthttpd para que ele não escuta na porta 80 (que faz apenas para redirecionar os navegadores à porta https configurado). Sinta-se livre para experimentá-lo e lembre-se de alterar o script para que ele usa o endereço IP do seu roteador. Eu também recomendo aumentar a opção de escuta para mais do que o padrão 30, caso contrário ele engasga e morre silenciosamente sobre a EdgeMAX.

PS: não me lembro se eu tive que instalar o curl, sed ou outra coisa. Vou atualizar o post sobre o feedback que eu vou receber.