FreshRSS, forzare il protocollo RSS su ogni sito

Pubblicato il

Aggiornato il

Trenitalia e Notifiche sugli scioperi

Io alla stazione sentendo la parola "sciopero"
Io alla stazione sentendo la parola “sciopero”

A Gennaio, per la prima volta, ho assistito ad uno di sciopero di Trenitalia, purtroppo, dopo aver comprato i biglietti. Tutt’ora, non c’è modo di ricevere alcun tipo di notifica. L’unico modo per rimanere informati sul traffico è quello di accedere dal sito o dall’app, a questa pagina HTML. Sulla pagina non ci sta nemmeno la possibilità di filtrare le informazioni per regione: in quell’unico spazio vi beccate di tutto: dalle modifiche al traffico in Lombardia agli scioperi in Sicilia. Era arrivato il momento di cercare una soluzione.

FreshRSS per generare i feed

FreshRSS, fra le altre cose, usa il linguaggio XPath per individuare i nodi HTML delle pagine web e generare un feed RSS. Con l’aiuto di un relativo client per Android, problemi come questo non sembravono così irrisolvibili.

Nasce principalmente come aggregatore di feed, anche di diversa natura (Tra cui RSS, Atom, HTML, XML e JSON).

Fare un’ulteriore cernita

Anche dopo aver configurato il parsing, FreshRSS dà diverse possibilità su filtri e query, sia sulla singola sorgente che su gruppi di letture. Puoi filtrare per titolo, testo, tag, intervalli di date, autori, ID e tanti altri paramentri. Esportando le query, quello che esce fuori è un feed raffinato e personale.

Ad esempio, una volta ottenuto un feed con delle notizie sul traffico, a prescidendere se lo hai trovato sul web o se lo hai costruito con FreshRSS, potresti voler filtrare ulteriormente usando questa query:

firenze OR pisa OR toscana OR #Toscana

Se abitualmente fai solo quella tratta in quella regione.

Altro esempio che mi viene in mente riguarda quei servizi che scansionano il web per mostrare i nuovi articoli scoperti su un particolare argomento.

Google News, per esempio, espone già un feed RSS, ma non ho letto i loro termini di servizio. Conoscendo Google, magari espone il feed ma ti vieta di usarlo…

Per un simile aggregatore di notizie, potresti settare una query come questa per estrarre solo articoli pubblicati nelle precedenti 2 settimane:

pubdate:P2W/

Così che anche se l’articolo è stato scoperto di recente da un motore di ricerca, esso verrà mostrato nel tuo feed solo se è stato anche scritto di recente.

Termini di Servizio dei siti (ToS)

Termini di servizio del cazzo

Purtroppo quasi tutti i siti web famosi hanno delle regole di utilizzo, chiamate quasi sempre “termini di servizio”. Sono ovunque su internet. Molti di questi vietano l’utilizzo di strumenti come FreshRSS. Io non ho ben capito se violare i termini di servizio di un sito web sia direttamente anche illegale.

Sono stato molto fortunato a trovare un’istanza italiana di FreshRSS, hostata pubblicamente e gratuita da usare. La gente è molto buona e altruista su internet.

Aggirare i sistemi?

Le aziende implementano diversi ostacoli per far sì che tu non possa usare tool come freshRSS, ma gli strumenti per aggirare questi sistemi sono molteplici. Cookies di sessione custom, header custom con user agent diversi, proxy HTTP, Socks, e chissà quanta altra roba. Il materiale su queste cose è di dominio pubblico e si trovano un sacco di guide su come fare web scraping senza farsi beccare. Per me non è sostenibile e non è etico, perché ci si ritrova a estrarre contenuti da un’azienda che non lo vuole.

Prendendo per esermpio il codice HTML di una pagina Instagram, risulta chiaro che Meta si impegna a far sì che tu non possa usare il codice sorgente della pagina.

class="x1i10hfl xjbqb8w x1ejq31n x18oe1m7 x1sy0etr xstzfhl x972fbf x10w94by x1qhh985 x14e42zd x9f619 x1ypdohk xt0psk2 x3ct3a4 xdj266r x14z9mp xat24cr x1lziwak xexx8yu xyri2b x18d9i69 x1c1uobl x16tdsg8 x1hl2dhg xggy1nq x1a2a7pz _a6hd"

Non mi sembra un attributo da voler far leggere ad un umano.

Conclusioni

Ci sono riuscito!

Non ho delle vere e proprie conclusioni su quello che c’è da fare. Sono molto contento di aver trovato un tool come FreshRSS e sono davvero tanto contento di aver trovato un’istanza italiana di questa roba.

Dopo un po’ mi romperò il cazzo di assecondare tutta internet affinché le cose vadano fatte male. Alla prossima!