Pulire pubblicità, pop-up, banner e qauant’altro dalla navigazione web su cellulari, tablet e qualsiasi apparato mobile senza usare programmi aggiuntivi

Esiste una soluzione alternativa che richiede un minimo di lavoro e che, sopratutto, ci garantisce che i dati non passino da chissà quali server, facendo non sappiamo cosa sui nostri dati. Questa soluzione si chiama Privoxy.

Come riportato da quluqnue fonte, compresa quella tradizionale del wiki, Privoxy è un programma che provvede alla pulizia sul traffico analizzato delle pubblicità in genere. Ma fa anche molto altro, come si può vedere dalla pagina Wiki italiana, https://it.wikipedia.org/wiki/Privoxy oppure quella inglese qui https://en.wikipedia.org/wiki/Privoxy.

Veniamo alla nostra soluzione personale. Parto dall’idea che abbiate a casa una macchina con linux installato, che sia fisica o virtualizzata poco importa, oppure che abbiate una macchina su internet: il procedimento è il medesimo. 

Innanzi tutto installiamo il programma Privoxy o dal gestore applicazioni che usiamo di solito o dal terminale, che preferisco perché dovremo comunque mettere le mani sul file di configurazione, con:

sudo apt-get install privoxy

Finita l’installazione, l’unica cosa che vi consiglio caldamente di fare e di cambiare la porta utilizzata dal programma, che di default e la 8118. sempre dal terminale apriamo, per modificalo, il file /etc/privoxy/config  con

sudo nano /etc/privoxy/config

In questo caso ho indicato come editor il programma nano, ma potete usare quello che vi pare, che sia nano o vi poco importa: l’importante è poter modificare la porta.

Cerchiamo la riga contenente la definizione della porta: la stringa da cercare è listen-address una volta trovata sostituire il valore 8118 con un altra porta che sia libera; personalmente consiglio porte molto alte così da evitare che certi smanettoni la trovino. Un’idea può essere una porta tra 50000 e 55000 per esempio userò 52715. Quindi a modifica effettuata avremo una riga come questa:

listen-address :52715

Chiudiamo, salvando il file, il programma; nel caso di nano si fa premendo la combinazione CTRL-X; e riavviamo il programma con il comando:

sudo service privoxy restart

A questo punto abbiamo terminato sulla macchina lunux. Dobbiamo fare ancora due cose:

  1. configurare il nostro router affinché accetti in entrata il traffico sulla porta 52715 verso l’indirizzo ip della nostra macchina che esegue Privoxy.
  2. configurare il nostro cellulare, tablet o anche pc se vogliamo affinché dirotti il le chiamate del traffico http/https verso il nostro Privoxy.

Pe quanto riguarda il punto uno, dipende dal router che avete: non posso darvi le istruzioni per tutti i modelli; posso solo dirvi che dovete creare una regola che accetti in entrata il traffico dalla porta 52715 e lo indirizzi verso la stessa porta della vostra macchina linux.

Per il punto due ci sono, in linea di massima, due categorie di configurazioni possibili: quelle per iOS, per capirci iPhone, iPad etc etc, e quelle per Android.

Per iOS:

  • Aprite impostazioni
  • tappate su WiFi
  • Presumendo che siate già connessi ad una vostra rete domestica, tappate sulla cerchiata a destra del nome della wifi attualmente collegata
  • scendete in basso alla sezione appena aperta ed alla voce PROXY HTTP tappate su Manuale
  • Alla voce Server indicate l’indirizzo IP della vostra macchina linux, oppure l’indirizzo pubblico del vostro router. 
  • Alla voce Porta indicate la porta che avere configurato prima ossia la 52715

Per Android:

  • Aprite Impostazioni
  • Tappate su WiFi
  • Tappate, mantenendo la pressione per più di un secondi sulla wifi che avete già agganciato: comparirà un menu a due voci e tappate su Modifica config. di rete
  • Tappate su Mostra opzioni avanzate
  • Alla voce Impostazioni proxy selezionate Manuale
  • Alla voce Nome host proxy inserite l’indirizzo IP della macchina linux oppure il vostro IP pubblico
  • Alla voce Porta inseriamo la porta configurata, nel nostro caso la 52715
  • Tappate su Salva in basso a destra del pannello

Fatto: a questo punto, quando navigherete tramite Safari o il browser che avere installato e preferite, il traffico verrà filtrato da Privoxy eliminando pubblicità pop-up, banner e quant’altro.

Nota: quanto segue vale solo se avete installato un firewall sulla vostra macchina linux. A seconda delle vostre esigenze dovete decidere se nelle configurazioni usare l’IP locale, quello della vostra macchina linux domestica, o il vostro IP pubblico, ossia quello che vi viene assegnato dal vostro provider; (Per avere il vostro indirizzo pubblico andate con un browser a questo indirizzo).

Nel caso abbiate un IP pubblico dinamico, per esempio avete un contratto non aziendale con Vodafone o Fastweb, nasce il problema di come segnalare al vostro firewall quale è l’IP valido come vostro in uso. Allego un piccolo script per risolvere il problema, preso da questa pagina in rete.

Innanzi tutto dovete ufw, uno script che semplifica molto la vita se usare un firewall. Per installarlo ed eseguirlo eseguite il comando 

sudo apt-get install ufw

sudo ufw enable

Poi dovete avere un account tipo dyndns.com oppure no-ip.com che vi tenga aggiornato il collegamento host personale <-> IP pubblico. Do per scontato che lo avete già. Come esempio diciamo che il vostro ip personale sia mioip.no-ip.com e che sappiate come tenerlo aggiornato.

Create un file che chiamerete ufw-dynamic-host-update  nella cartella /usr/local/sbin e incollateci questo contenuto pari pari, senza modificare nulla:

#!/bin/bash

HOSTS_ALLOW=/etc/ufw-dynamic-hosts.allow
IPS_ALLOW=/var/tmp/ufw-dynamic-ips.allow

add_rule() {
  local proto=$1
  local port=$2
  local ip=$3
  local regex="${port}\/${proto}.*ALLOW.*IN.*${ip}"
  local rule=$(ufw status numbered | grep $regex)
  if [ -z "$rule" ]; then
      ufw allow proto ${proto} from ${ip} to any port ${port}
  else
      echo "rule already exists. nothing to do."
  fi
}

delete_rule() {
  local proto=$1
  local port=$2
  local ip=$3
  local regex="${port}\/${proto}.*ALLOW.*IN.*${ip}"
  local rule=$(ufw status numbered | grep $regex)
  if [ -n "$rule" ]; then
      ufw delete allow proto ${proto} from ${ip} to any port ${port}
  else
      echo "rule does not exist. nothing to do."
  fi
}

sed '/^[[:space:]]*$/d' ${HOSTS_ALLOW} | sed '/^[[:space:]]*#/d' | while read line
do
    proto=$(echo ${line} | cut -d: -f1)
    port=$(echo ${line} | cut -d: -f2)
    host=$(echo ${line} | cut -d: -f3)

    if [ -f ${IPS_ALLOW} ]; then
      old_ip=$(cat ${IPS_ALLOW} | grep ${host} | cut -d: -f2)
    fi

    ip=$(dig +short $host | tail -n 1)

    if [ -z ${ip} ]; then
        if [ -n "${old_ip}" ]; then
            delete_rule $proto $port $old_ip
        fi
        echo "Failed to resolve the ip address of ${host}." 1>&2
        exit 1
    fi

    if [ -n "${old_ip}" ]; then
        if [ ${ip} != ${old_ip} ]; then
            delete_rule $proto $port $old_ip
        fi
    fi
    add_rule $proto $port $ip
    if [ -f ${IPS_ALLOW} ]; then
      sed -i.bak /^${host}*/d ${IPS_ALLOW}
    fi
    echo "${host}:${ip}" >> ${IPS_ALLOW}
done

Salvatelo e rendetelo eseguibile con il comando: 

sudo chmod u+x /usr/local/sbin/ufw-dynamic-host-update

a questo punto dovete creare un file di configurazione per questo script con il comando:

sudo nano /etc/ufw-dynamic-hosts.allow

il nome è di fantasia, ma almeno leggendolo capirete cos’è. Ora: considerando l’esempio del vostro host personale, che abbiamo detto è mioip.no-ip.com e la porta che abbiamo configurato, ossia la 52715 nel file appena creato di configurazione dovremo scrivere questo:

tcp:52715:mioip.no-ip.com

e salvarlo. Affinchè la regola del firewall resti aggiornata dobbiamo eseguire periodicamente lo script che vi ho riportato sopra e per farlo usiamo il demone cron. Affinché cron controlli ogni 5 minuti che l’IP pubblico corrisponda al nostro host, lanciamo il comando 

sudo crontab -e 

ed aggiungiamo la seguente riga:

*/5 * * * * /usr/local/sbin/ufw-dynamic-host-update > /dev/null

Confermiamo ed usciamo: a questo punto il demone cron si occuperà, ogni 5 minuti di verificare se la regola del firewall è allineata al vostro IP pubblico.

RIBADISCO: questa ultima parte è necessaria solo se:

    1. volete poter raggiungere Privoxy anche da fuori casa
    2. avete un IP pubblico dinamico

Se avete un IP pubblico statico allora basta creare la regola con il comando sudo ufw allow proto tcp from mioip.no-ip.com to any port 52715 ed il problema è risolto senza necessità di disturbare cron ne creare script vari.

Ultima nota: la soluzione che ho riportato vale per una macchina linux, gli esempi in specifico sono per macchine Ubuntu, ma è possibile installare Privoxy anche su Windows: qui trovate le relative istruzioni. Non so però, sotto windows, come risolvere il probelma dell’uso di un IP pubblico dinamico attraverso il firewall di Windows. Magari qualcuno lo sa e può postare la soluzione.

JC
 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *