Posso visualizzare la cronologia di Firefox con il terminale?


29

Esiste un comando per mostrare la cronologia di Firefox dal terminale?

senza la necessità di inserire graficamente la cronologia di Firefox.


Potresti aggiungere il motivo per voler farlo?

Perché non vuoi usare Firefox stesso?

1
@ user25656: se vuoi essere veloce, usa la riga di comando. Puoi ricavarne delle statistiche. Puoi cercare con espressioni regolari (ad es. Usando grep), puoi creare grafici, ecc. Tutto ciò che non è possibile all'interno di Firefox. Almeno non senza hackerare un componente aggiuntivo.
erik,

Risposte:


28

Questa pagina descrive quali informazioni specifiche dell'utente sono memorizzate da Firefox e dove. (E questo è ciò che l'aiuto di Mozilla ha da dire sulla visualizzazione dei file .sqlite.)

Elenca tre tipi di cronologia:

  • Segnalibri e cronologia di navigazione: il file places.sqlite contiene tutti i segnalibri di Firefox e l'elenco di tutti i siti Web visitati ...

  • Cronologia del completamento automatico: il file formhistory.sqlite ricorda ciò che hai cercato nella barra di ricerca di Firefox e quali informazioni hai inserito nei moduli sui siti Web ...

  • Cronologia dei download: il file downloads.sqlite ricorda ciò che hai scaricato. ...

Come puoi vedere, tutte e tre le storie non sono semplici file di testo ma file di database in sqliteformato.

Un modo per visualizzare i .sqlitefile è utilizzando sqlite3( sudo apt-get install sqlite3).

Aprire un terminale e cdnella cartella contenente ciò che si desidera visualizzare. Nel mio caso, cioè ~/.mozilla/firefox/w4wcp85s.default.

ls *.sqlite elenca i file sqlite.

Esegui sqlite3 places.sqlite(se places.sqlite è ciò che desideri visualizzare). Vedrai qualcosa del genere:

$ cd ~/.mozilla/firefox/w4wcp85s.default 
$ sqlite3 places.sqlite
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 

Ora, ci sono diverse cose che puoi fare. (Usa Ctrl+ Dper uscire da sqlite3).

Ad esempio, digitare .tablese premere Entermi dà:

sqlite> .tables
moz_anno_attributes  moz_favicons         moz_items_annos    
moz_annos            moz_historyvisits    moz_keywords       
moz_bookmarks        moz_hosts            moz_places         
moz_bookmarks_roots  moz_inputhistory   
sqlite> 

Per visualizzare il contenuto, digitare SELECT * FROM table_name;(dove si table_nametrova il nome della tabella che si desidera visualizzare; notare il ;) e premere Enter. È molto probabile che l'output non sia comprensibile, ma non è colpa di sqlite3.

Per mostrare un esempio che fa fornire un output decente, sguardo stylish.sqlite(se si utilizza l'estensione Stylish ):

$ ~/.mozilla/firefox/w4wcp85s.default $ sqlite3 stylish.sqlite
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
style_meta  styles    
sqlite> SELECT * FROM styles;
6||||YouTube|/* AGENT_SHEET */ 
/* ▓▓ NIGHTSHIFT - eye care:                                 ▓▓
   ▓▓_http://userstyles.org/styles/18192/nightshift-eye-care_▓▓ */

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document regexp("https?://www.youtube.com/.*")  {
body,html {min-height: 100%!important; }
html, body{background-color:#111!important}

Puoi fare tutto con un solo comando non interattivo se sai esattamente cosa vuoi. Leggi lo strumento da riga di comando sqlite3 per ulteriori informazioni su sqlite3.

$ sqlite3 stylish.sqlite "SELECT * FROM styles;" > ~/Desktop/filename.txt 

farà il necessario nell'esempio dato e teeti permetterà di vedere anche l'output sullo schermo:

$ sqlite3 stylish.sqlite "SELECT * FROM styles;" | tee ~/Desktop/filename.txt 

(Grazie qui .)


Se vuoi cercare tutti i database e tutte le tabelle in quei database per un termine specifico (ad esempio stackoverflow.com ), puoi semplicemente fare (come una linea): for DATABASE in *sqlite; do echo -e "********\n$DATABASE\n********";for TABLE in $(sqlite3 $DATABASE ".tables"); do echo -e "========\n$TABLE\n========"; sqlite3 $DATABASE "select * from $TABLE;"; done; done | grep 'stackoverflow\.com'O invece di grepusare lesse cercare all'interno dei risultati.
erik,

Qualcosa del genere sta per uscire dalla mia ~/.bash_history, quindi ho scritto uno script Python (3.5+) usando la libreria Click per rendere molto più semplice l'elenco, l'ordinamento e il filtro di base. Puoi ottenerlo da questo Gist . Si prega di lasciare commenti lì se si verificano problemi.
TheDudeAbides

6

Ecco cosa ho finito (grazie alle risposte precedenti):

db=$(find "${HOME}/.mozilla/firefox/" -name "places.sqlite")
query="select p.url from moz_historyvisits as h, moz_places as p where substr(h.visit_date, 0, 11) >= strftime('%s', date('now')) and p.id == h.place_id order by h.visit_date;"
todays_urls=$(sqlite3 "${db}" "${query}")
echo "${todays_urls}" > todays_urls

1
In realtà la soluzione più utile-copia-incolla-non verbosa. Grazie.
vmassuchetto,

Se si dispone di diversi profili di Firefox, è necessario aggiungere | head -1al findcomando.
mivk

3

Sul mio Xubuntu 13.10 è acceso

/home/myusername/.mozilla/firefox/nod2ejl8.default/places.sqlite

Oppure potresti

find / -name 'places.sqlite

Dato che è un file * .sqlite , puoi installare questo plugin vim e usare vim , cercare un modo per aprire un file sqlite dal terminale. Ulteriori informazioni possono essere trovate qui .


1
~/.mozilla/firefox/*.default/places.sqlitedovrebbe funzionare
mchid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.