¿Puedo ver el historial de Firefox con el terminal?

29

¿Hay un comando para mostrar el historial de Firefox desde la Terminal?

sin la necesidad de ingresar gráficamente el historial de Firefox.

nux
fuente
¿Podría agregar la razón para querer hacerlo?
¿Por qué no quieres usar Firefox en sí?
1
@ user25656: Si quieres ser rápido, usa la línea de comando. Puedes hacer estadísticas de eso. Puede buscar con expresiones regulares (por ejemplo, usando grep), puede crear gráficos, etc. Todo no es posible dentro de Firefox. Al menos no sin hackear un complemento.
erik

Respuestas:

28

Esta página describe qué información específica del usuario es almacenada por Firefox y dónde. (Y esto es lo que la ayuda de Mozilla tiene que decir al ver archivos .sqlite).

Enumera tres tipos de historia:

  • Marcadores e historial de navegación: el archivo places.sqlite contiene todos sus marcadores de Firefox y la lista de todos los sitios web que ha visitado ...

  • Historial de autocompletar: el archivo formhistory.sqlite recuerda lo que buscó en la barra de búsqueda de Firefox y la información que ingresó en los formularios de los sitios web ...

  • Historial de descargas: el archivo downloads.sqlite recuerda lo que has descargado. ...

Como puede ver, las tres historias no son simples archivos de texto sino archivos de bases de datos en sqliteformato.

Una forma de ver .sqlitearchivos es usando sqlite3( sudo apt-get install sqlite3).

Abra una terminal y cdla carpeta que contiene lo que desea ver. En mi caso, eso es ~/.mozilla/firefox/w4wcp85s.default.

ls *.sqlite enumera los archivos sqlite.

Ejecutar sqlite3 places.sqlite(si places.sqlite es lo que quieres ver). Verás algo como esto:

$ 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> 

Ahora, hay varias cosas que puedes hacer. (Use Ctrl+ Dpara salir de sqlite3).

Por ejemplo, escribir .tablesy presionar Enterme da:

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> 

Para ver el contenido, escriba SELECT * FROM table_name;(donde table_nameestá el nombre de la tabla que desea ver; anote el ;) y presione Enter. Es muy probable que la salida no sea comprensible, pero eso no es culpa de sqlite3.

Para mostrar un ejemplo que hace proporcionar una salida decente, ver stylish.sqlite(si se utiliza la extensión de estilo ):

$ ~/.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}

Puede hacer todo en un solo comando no interactivo si sabe exactamente lo que quiere. Lea la herramienta de línea de comandos sqlite3 para obtener más información sobre sqlite3.

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

hará lo necesario en el ejemplo dado y también teele permitirá ver la salida en pantalla:

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

(Gracias por aquí ).

Comunidad
fuente
Si desea buscar en todas las bases de datos y todas las tablas de esas bases de datos un término específico (por ejemplo, stackoverflow.com ), puede hacerlo (como una línea): 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 en lugar de grepusar lessy buscar dentro de los resultados.
erik
Algo como esto simplemente se va a caer al final de mi ~/.bash_history, así que escribí un script de Python (3.5+) usando la biblioteca Click para hacer que la lista básica, la clasificación y el filtrado sean mucho más fáciles. Puedes obtenerlo de este Gist . Deje comentarios allí si tiene problemas.
TheDudeAbides
6

Esto es lo que terminé con (gracias a las respuestas anteriores):

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
pawamoy
fuente
1
En realidad, la solución más útil-copiar-pegar-no-verbosa. Gracias.
vmassuchetto
Si tiene varios perfiles de Firefox, debe agregar | head -1al findcomando.
mivk
3

En mi Xubuntu 13.10 está encendido

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

O podrías

find / -name 'places.sqlite

Dado que es un archivo * .sqlite , puede instalar este complemento vim y usar vim , buscar una manera de abrir un archivo sqlite desde la terminal. Más información se puede encontrar aquí .

Lynob
fuente
1
~/.mozilla/firefox/*.default/places.sqlitedebería funcionar
mchid