Bloqueando {websites,ads,malware} no Linux
• 395 words • 2 min • updated
Table of Contents
“For the sake of the productivity”, notas pessoais sobre o bloqueio de websites.
1 - A forma nua e crua: /etc/hosts #
Um arquivo /etc/hosts típico é da forma:
$ cat /etc/hosts
#
# /etc/hosts: static lookup table for host names
#
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhostPara bloquear um novo site, basta redirecioná-lo localmente para localhost (=127.0.0.1). Por exemplo, para bloquear o Facebook, adicione a esse arquivo as linhas:
127.0.0.1 facebook.com
127.0.0.1 www.facebook.com1.1 Servidor local “nulo” para localhost #
Mas essa maneira por si só é muito sem graça então, além de redirecionar para localhost, vamos fazer com que o usuário receba uma página “vazia”/“nula” ao tentar acessar esses websites. Mas isso é bastante simples, basta instalar um servidor local como o kwakd ou o pixelserv.
2 - Um pouco mais de estrutura, por favor #
O programa hostsblock é excelente para isso. Veja a página oficial. Como um bônus, você ainda bloqueia malware e ads (na verdade, esse é o objetivo primário dele), isso no sistema inteiro, não apenas no navegador – por exemplo, se você quiser instalar um Adblock, geralmente tem que instalar individualmente para todos os seus navegadores. Estou utilizando-o recentemente, e o achei bastante bom. Ele é bastante elegante (do ponto de vista de simplicidade de código) e extremamente funcional. Ao ser combinado com o dnsmasq, ele fica mais elegante ainda. Ao ser combinado com o cron, você tem uma lista de domínios a ser bloqueados que é atualizada periodicamente.
Se você quiser combiná-lo com o Network Manager e tiver problemas com isso, esse post talvez seja útil. Se você achou todos esses projetos relevantes, considere votá-los no AUR para que eles ganhem mais relevância.
Se você usa o Chromium #
OBS.: Se você utiliza o Chromium ou o Google Chrome, vai descobrir que ele é esperto e tenta contornar os websites que ele não consegue acessar. Depois de bastante pesquisa, descobri a razão para isso:
- http://www.chromium.org/developers/design-documents/dns-prefetching
- https://superuser.com/questions/723703/why-is-chromium-bypassing-etc-hosts-and-dnsmasq/
- https://encrypted.google.com/search?hl=en&q=make%20chromium%20not%20use%20google%20default%20dns#hl=en&q=remove+google+dns+from+chrome
O problema é que ele fazia DNS prefetching para agilizar o carregamento de algumas páginas (ainda não estou 100% certo disso, mas tudo indica que esse era o problema). Foi difícil descobrir isso principalmente porque a maioria das discussões sobre o assunto se aplica apenas a versões antigas do Chromium (sabe, daquela época que ainda tinham dois botões, em vez de um só).
Happy blocking!