NoAds: X Files “Progetto Reset”

| |

C’è spesso un minimo comune denominatore che accomuna le liste filtri dedicate alla pulizia e protezione della tua navigazione: la “manutenibilità nel tempo“.
Si scrivono filtri, si pubblicano e si mettono a disposizione degli utenti ma, a meno di automatizzare le operazioni di check dei siti web colpiti, questi filtri rimarranno attivi nel tempo anche oltre la vita stessa del sito web dal quale si generano le pubblicità o i rischi di navigazione. In questo Dead Hosts aiuta molto ma in alcuni casi non risolve, seppur il progetto alla base (PyFunceble) sia l’alleato più corretto per capire se un dominio esiste ancora oppure no.

X Files “Progetto Reset”

Ho voluto dare il via al “Progetto Reset” per passare un’enorme spugna sopra ogni blocco filtri contenuto all’interno della lista principale, X Files, che poi è quella che ha dato i natali all’intero progetto ABP/NoAds.it e che andrebbe quindi coccolata forse più delle altre liste che mantengo e distribuisco. Un tempo (parlo degli albori nel 2007) contavano il numero di filtri e siti web intercettati, oggi il dato è decisamente meno importante. I filtri possono anche essere “pochi” a patto che siano validi, precisi e che – è la condizione migliore – colpiscano più siti web contemporaneamente perché utilizzano la medesima tecnologia e nomi (CSS / JS / ecc.).

Ho cominciato a cavallo con la fine del mese di ottobre (ci sono un paio di commit GitHub che mostrano alcune delle prime differenze all’indirizzo github.com/gioxx/xfiles/commit/3dd2ce7a54d31b74feb9ae98c250f855d08414db e github.com/gioxx/xfiles/commit/20287ec2685116050abff42ce4e1aecb0d87b848) ma la stoccata più cattiva è arrivata con la “parte 3” completata qualche giorno fa (github.com/gioxx/xfiles/commit/4dd2928bd81a1e966ba5fba906589684168b0295).

Il numero di filtri totali è quindi calato “drasticamente” e va bene così, la lista ne ha guadagnato in peso totale da far processare a chi si occupa del filtraggio e in validità dei filtri stessi. Il processo ha richiesto un controllo a tappeto grazie all’aiuto di PyFunceble, uno script Python per generare le liste dei siti web inattivi e poi uno script in Bash per effettuare la pulizia sui moduli “contrib” di X Files. Restano esclusi dalla pulizia quei blocchi filtri (attualmente solo uno) che derivano da progetti terzi che confluiscono all’interno di X Files. Ho fatto girare tutto quanto su una macchina DietPi che in questi casi è pura manna dal cielo.

NoAds: X Files "Progetto Reset"

Lo script Python

Attenzione

Necessita di PyFunceble, quindi dovrai prima eseguire un pip install PyFunceble.

Ho creato una cartella ad-hoc chiamata project-reset e al suo interno c’è tutto il necessario che ho utilizzato durante il processo di controllo e pulizia. Questo il semplice codice utilizzato:

from PyFunceble import DomainAndIPAvailabilityChecker
import csv
import os

def check_availability_csv(source,destination):
    destfile = open(destination, 'w')
    csvheader = ['source', 'availability']
    writer = csv.writer(destfile)
    writer.writerow(csvheader)
    with open(source, 'r') as f:
        for domain in f:
            status = checker.set_subject(domain).get_status()
            status_dict = status.to_dict()
            print("{}: {}".format(domain.strip(),status_dict['status']))
            csvrow = [domain.strip(), status_dict['status']]
            writer.writerow(csvrow)
        destfile.close()

def check_availability_txt(source,destination):
    destfile = open(destination, 'w')
    with open(source, 'r') as f:
        for domain in f:
            status = checker.set_subject(domain).get_status()
            status_dict = status.to_dict()
            print("{}: {}".format(domain.strip(),status_dict['status']))
            if (status_dict['status'] == 'INACTIVE'):
                destfile.write(domain)
        destfile.close()

checker = DomainAndIPAvailabilityChecker()
#check_availability_csv('sourcelist.csv','check_availability.csv') # Save to CSV
check_availability_txt('sourcelist.csv','inactive.txt') # Save to text file (inactive only)

Dando in pasto allo script un file CSV senza header (sourcelist.csv, che dovrà trovarsi nella stessa cartella di esecuzione dello script), contenente gli IP / siti web da controllare, eseguirà un controllo per ciascuna riga (quindi ciascun dominio), restituendo a video la raggiungibilità della destinazione.
Salverà all’interno di un file di testo (inactive.txt) i domini / IP non più validi, quelli che hanno cessato l’attività. A quel punto io posso prendere il file di testo degli inattivi e darlo in pasto a uno script bash che eseguirà la pulizia vera e propria del blocco filtri interessato.

Suggerimento

Lo script è in grado anche di salvare su file CSV i risultati completi del controllo, nello script noterai che l’istruzione check_availability_csv('sourcelist.csv','check_availability.csv') è commentata. Ti basterà togliere il commento per farla entrare in azione.
Inutile dire che ti consiglio – in questo caso – di commentare la successiva, quella che salva gli inattivi su file di testo (check_availability_txt('sourcelist.csv','inactive.txt')).

Lo script bash

Presente anche lui all’interno della cartella project-reset, si occuperà di prendere la lista dei domini inattivi (inactive.txt) utilizzandola come comparazione con il blocco filtri originale (un file di testo che dovrà trovarsi nella stessa cartella dello script bash e che dovrà chiamarsi source.txt) e cancellerà da quel blocco i filtri non più utili perché basati su domini non più attivi, modificando il file sorgente direttamente (source.txt).

#!/bin/bash

while read line; do
  echo "Cerco ed elimino $line"
  sed "/$line/d" -i "source.txt"
done < inactive.txt

“Svuota il cestino”

Con l’occasione, il blocco filtri “In dismissione” (questo: github.com/gioxx/xfiles/blob/master/contrib/xfiles_99-dismissione) è stato svuotato definitivamente. Insieme a questo svuotamento ho preso i filtri sperimentali e li ho redistribuiti nei blocchi di produzione perché sono rimasti nel purgatorio per tempo più che sufficiente senza generare alcun falso positivo o parziale disservizio nella navigazione quotidiana coadiuvata da X Files (sia in versione sperimentale che stabile).

GNU General Public License v3.0

Dopo anni di Creative Commons 4.0 ho scelto di migrare a una licenza più comune, robusta e per alcuni versi anche più permissiva e aperta alle collaborazioni con terze parti (anche commerciali).
L’intero progetto NoAds X Files (tutte le liste ufficiali disponibili, le liste sperimentali, i repository GitHub e l’organizzazione NoAds-it su GitHub) viene quindi rilasciato sotto licenza GNU General Public License v3.0.

Copia del documento di licenza è disponibile su GitHub, nel repository ufficiale del progetto, all’indirizzo github.com/gioxx/xfiles/blob/master/LICENSE.

Una nuova icona, un nuovo logo

Per anni c’è gente che – giustamente – ha chiesto se il progetto c’entrasse qualcosa con la famosa e ormai storica serie televisiva di Chris Carter, The X-Files. Ora, nonostante tutto il bene verso la coppia Gillian Anderson e David Duchovny, la risposta era, è e sarà sempre NO.
X Files non si ispira in nessun caso all’omonima serie televisiva ma sorrido ancora quando mi viene chiesto. Le liste filtri sono nate per la prima volta sul profilo Firefox del sottoscritto, un lavoro completamente amatoriale poi sviluppatosi in maniera più organizzata e automatizzata nel corso del tempo. Il mio nickname porta al suo interno due x finali e da lì a collegare che si trattasse di file (liste) di Gioxx (abbreviato stupidamente e senza troppo pensarci con una singola x) il passo è stato breve e non ragionato.

Non ho più cambiato quel nome, l’ho tenuto, ci sono affezionato e di anni da quando X Files è nata e approdata sul web (nel forum di Mozilla Italia) ne sono passati ormai 15. Perché però non “scherzare un po’” su quel nome? Ho provato a prendere due piccioni con una fava dando un’occasione a Fiverr e all’immenso catalogo di professionisti che vendono servizi di logo design e una malsana voglia di ironizzare sul possibile nuovo logo del progetto. Questo è ciò che è stato partorito:

NoAds: X Files "Progetto Reset" 1

Definitivo? Non credo proprio. Stupido? Abbastanza, e mi fa sorridere in attesa – in futuro – di sviluppare qualcosa di più serio e cucito proprio addosso a NoAds e alle liste filtri che metto a disposizione, ammesso che il Manifest V3 di Chrome permetta in qualche maniera di continuare a mettere a disposizione quei filtri che estensioni come Adblock Plus o uBlock non sono così sicure di poter continuare a tenere in pancia, aggiornare e utilizzare una volta che si passerà alle nuove – mai troppo maledette – specifiche dettate da Google.

Il sito web ufficiale del progetto è stato ritoccato e aggiornato per rispettare i nuovi colori, integrando alcune altre migliorie sotto al cofano per una gestione più snella da parte del sottoscritto.

La conclusione

Eccola qui, l’hai appena trovata (e ti ringrazio se hai letto fino a qui).
La pulizia ha portato a un risultato che mi ha soddisfatto e che mi ha permesso di portare a termine quelle pulizie di primavera che bisognava fare da tempo. C’è ancora molto da fare ma riguarda adesso le liste secondarie, attività per le quali ho già chiesto alcune modifiche ai miei repository Dead Host per cercare di aiutarmi nel lavoro più duro, automatizzando dove possibile.

Io sicuramente non ho altre novità importanti in serbo da qui a fine anno per il progetto NoAds (a meno che non succeda qualcosa di inaspettato). È stato un anno denso di modifiche, miglioramenti, una più robusta migrazione verso GitHub e le sue Actions, un anno che ha portato con sé diverse spese e tempo investito sul progetto ma che per fortuna era stato in qualche maniera coperto grazie all’aiuto di ILS.

Il più grande grazie va a tutti gli utilizzatori e sostenitori.
Un abbraccio a voi tutti.

#StaySafe

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Commento
Oldest
Newest Most Voted
Inline Feedbacks
View all comments