Business continuity @ Trenitalia is the new Zelig

Alberto Giunta
4 min readFeb 2, 2018

Questa è la storia di quella volta che Trenitalia si è auto-sabotata, e nel farlo, ha sabotato anche me, per l’ennesima volta.

La Premessa

Per quanto incredibile possa sembrare, Trenitalia ha delle API (che uso per JustInTrain, un’app per pendolari Trenitalia). Ovviamente non sono pubblicizzate / documentate /pubblicate da nessuna parte (se non da qualche coraggioso su Github) e qui ho provato a descrivervi quanto siano terrificanti, ma intanto è importante sapere questo.

Queste API sono alla base del funzionamento del sito www.viaggiatreno.it, un sito in teoria ideato da Trenitalia per “monitorare” tratte, treni e ritardi, ovviamente nella maniera meno intuitiva possibile.

La caduta

Qualche settimana fa la ricerca delle tratte su Viaggiatreno ha smesso di funzionare, e così anche la ricerca delle tratte su JustInTrain, con le annesse lamentele e disagi che ci si può aspettare.
No matter what, inserendo una qualsiasi tratta non veniva restituito nessun risultato. Ogni volta, nessun treno era disponibile.

In questa storia va sempre tenuto a mente che stiamo parlando di Trenitalia, e secondo voi quanto è passato prima che sistemassero questo problema?

Come dici? 1 giorno? Haha.
2 giorni? Ritenta sarai più fortunato.
4 giorni dici! You fool.

Una settimana.

In una settimana ho attraversato tutte le fasi dell’elaborazione del lutto.
Si fa per dire, ovviamente (per quanto ovvio sia, lo stato dell’Internet di oggi mi obbliga a dirlo), ma le fasi le ho attraversate per davvero, dalla negazione alla rabbia fino all’accettazione. A una certa mi ero quasi rassegnato che fosse arrivata l’ora di JustInTrain.

Ho tartassato l’account twitter di Trenitalia fino a che hanno smesso di rispondermi. E a quel punto ho cominciato con gli account dei miei amici.

Ero serio ragazzi, mi stavano davvero cominciando a far vorticare i gioielli.
Dude wat
🤦‍

Anche se c’era una solida base di 350–400 utenti che continuavano ad usare l’app, probabilmente attraverso i treni preferiti in Home, stavo perdendo decine utenti al giorno (anche giustamente). Dovevo trovare una soluzione al più presto.

In tutto questo le altre app stavano continuando a funzionare, ma fino ad ora avevo sempre pensato che facessero un qualche parsing dell’HTML del sito di Trenitalia.

Preso dalla pigrizia del non voler capire come usare i cookies e le sessioni di trenitalia.it sul mio server per simulare delle ricerche sul sito e poi farne il parsing, ho fatto una prova disperata, e un pò a caso: ho aperto il sito di Trenitalia in versione mobile controllando con il Chrome Inspector, ho cercato una tratta, ed è successo il miracolo.
Avevo appena scoperto delle nuove API.

Questo perchè evidentemente il sito in modalità Desktop e quello Mobile sono due versioni completamente diverse dello stesso sito, in cui nel primo caso la pagina è restituita dal server con richieste fatte passando per i cookie del sito stesso, mentre nel secondo passano per delle API REST (diverse da quelle di Viaggiatreno) che restituiscono solo del JSON.

Diverse, non migliori.

Basti pensare che la richiesta per tratta viene fatta identificando le stazioni di partenza e arrivo non con il loro codice univoco, come sarebbe logico fare.

Questo vuol dire che ad oggi ho trovato almeno 4 liste diverse di nomi di stazioni, che vengono usati ciascuno in un API o un sito diverso, non sono intercambiabili e non sono mappati 1:1 (alcune stazioni ci sono in alcune liste ma non in altre).

Insomma, just Trenitalia being Trenitalia.

Il “Lieto” fine

Proprio mentre stavo freneticamente convertendo il server per usare le nuove magiche API che avevo trovato, Viaggiatreno è tornato a funzionare, dopo una simpatica settimana di downtime.

Questo scherzetto di Viaggiatreno mi è costato circa 200 utenti, che hanno disinstallato l’app in quella settimana. Ho perso inoltre circa 100 utenti giornalieri su un totale di 500. Non male.

In quest’altro post ho descritto più a fondo quali sono i problemi delle API di Trenitalia (tutte quelle di cui sono al corrente), e non sono pochi.

È evidente che il debito tecnico che si stanno portando dietro pesa sempre di più sui servizi che offrono. Questo non può andare che a discapito dell’utenza finale, che è costretta ad usare applicativi contorti e inutilmente convoluti, tanto quanto lo sono i servizi su cui si basano.

--

--