SQLite è una libreria che implementa un mini-database leggero e compatto, utilizzabile all'interno di un'altra applicazione, per memorizzare dati senza la necessità di appoggiarsi ad un database tradizionale. Un esempio classico è la gestione dei cookies su alcuni browsers di ultima generazione. I cookies sono il meccanismo più utilizzato per gestire la persistenza della sessione HTTP (chi non conosce l'argomento può dare un'occhiata qui). Nelle scorse puntate abbiamo visto come gestire i cookies usando JavaScript, accennando al fatto che in alcuni browsers di ultima generazione la gestione dei cookies è delegata proprio ad un database SQLite.

Considerando ad esempio Chrome su Windows 7, i cookies utilizzati dal browser sono conservati in un file che dovrebbe trovarsi in un percorso del genere

C:\Users\<Nome Utente>\AppData\Local\Google\Chrome\User Data\Default\Cookies

in questo caso i dati contenuti nel mini-database sono memorizzati all'interno del file Cookies (senza estensione). Osserviamo che:

  • Parliamo di mini-database perché l'interfaccia di gestione dei dati, le strutture di organizzazione, le relazioni tra informazioni e le istruzioni di accesso ai dati ricordano il paradigma SQL dei normale database. Nonostante questa somiglianza, è bene precisare che a rigore il database che memorizza i cookies non è un database server: si tratta piuttosto di un file gestito col paradigma dei database, e non di un server in ascolto su qualche porta. Ecco perché utilizziamo il prefisso mini prima della parola database
  • Il modo in cui SQLite viene usato come ausilio alla navigazione dell'utente cambia notevolmente da browser a browser: occorre quindi prestare particolare attenzione al controllo delle funzionalità cross-browser se vogliamo sfruttare in qualche modo un database SQLite

Detto questo, dovrebbe essere chiaro che l'aspetto più importante non è come sfruttare il linguaggio SQL per gestire i dati memorizzati in un mini-database, ma piuttosto sapere come, dove e quando possiamo accedere ad un database SQLite di un browser specifico. Il nostro obiettivo è quello di confrontare l'uso di SQLite nei browser più popolari, senza entrare in dettaglio delle operazioni SQL eseguibili sul singolo database.

SQLite Manager

Prima di confrontare il supporto SQLite nei diversi browsers è utile installare un client SQLite che ci servirà per collegarci ai database e lavorare sui dati. Una soluzione molto comoda è installare il plugin SQLite Manager su Firefox, che permette di connettersi ad un qualsiasi mini-database.

SQLite Manager

SQLite Manager

Esistono svariate alternative a questa scelta (ad esempio SQLite Database Browser), molte delle quali sono eseguibili come applicazioni stand-alone, anziché come plugin di un browser.

Chrome

Nel caso di Chrome abbiamo già visto dove si trova il file Cookies associato al database dei cookies. Ci basterà avviare SQLite Manager, cliccare su DatabaseConnect Database e selezionare il file Cookies per aprire il database. Siccome il file non utilizza l'estensione sqlite, dobbiamo ricordarci di impostare il filtro del file loader su “Tutti i file”. Una volta aperto il database avremo sottomano le tabelle che ci interessano, che dovrebbero essere almeno due: cookies e meta. Qui possiamo aggiungere una terza tabella, ad esempio per memorizzare i dati di un'applicazione specifica: in questo caso la persistenza dei dati sarà garantita dal client (il browser) anziché dal server, esattamente come per i cookies.

Firefox

Nel caso di Firefox, sempre su Windows 7, è facile recuperare informazioni sulla cache del browser digitando direttamente about:cache nella barra degli indirizzi. Non è altrettanto facile trovare le informazioni che riguardano i cookies. A seconda della situazione potrebbero trovarsi qui

C:\Users\<Utente>\AppData\Local\Mozilla\Firefox\Profiles\<random>.default

oppure qui

C:\Users\<Utente>\AppData\Roaming\Mozilla\Firefox\Profiles\<random>.default

il file dei cookies dovrebbe chiamarsi cookies.sqlite. Firefox utilizza SQLite per memorizzare molte informazioni di navigazione, come ad esempio l'elenco dei download, lo storico dei valori inseriti nelle form, ecc. Basta dare un'occhiata ai files aventi estensione sqlite (ad esempio nelle directories specificate qui sopra) per farsi un'idea di come sono organizzati i dati.

Nota: in alcuni casi potremmo non riuscire ad aprire un file sqlite tramite un client diverso dal browser (come ad esempio SQLite Manager) finché il browser è aperto, a causa di un lock esclusivo operato da Firefox. In tal caso avremo un errore del tipo openUnsharedDatabase. La soluzione dipende da cosa dobbiamo fare: se vogliamo modificare dei dati dovremo aprire il database in altro modo, se invece vogliamo solo dare un'occhiata al contenuto possiamo fare una copia del file sqlite e aprire la copia, lasciando a Firefox l'esclusiva sul file originale.

Internet Explorer

Internet Explorer supporta SQLite per alcune applicazioni specifiche, ma solitamente non lo utilizza per memorizzare i dati di navigazione. Nella maggior parte dei casi i cookies sono ancora gestiti “alla vecchia maniera”, all'interno del file index.dat oppure assieme ai files temporanei, che dovrebbero trovarsi all'interno di una di queste cartelle nascoste

C:\Users\<User>\AppData\Roaming\Microsoft\Windows\Cookies

C:\Users\<User>\AppData\Local\Microsoft\Windows\Temporary Internet Files

In questo caso occorre quindi crearsi il proprio database, e lavorare in modo indipendente dall'architettura del browser.