A partir de Firefox 3, los bookmarks se graban en el formato sqlite. La ventaja de este formato es que es mas rapido que parsear archivos de texto o xml. La desventaja es que no es posible ver las url con cualquier editor de texto. He aqui un ejemplo de como obtener las urls de los bookmarks desde la linea de comandos.

** ¿ Donde se guardan los bookmarks de Firefox 3 ?** El archivo con los bookmarks de Firefox 3 se encuentra dentro de la carpeta ~/.mozilla Especificamente es el archivo llamado places.sqlite.

$ cd ~/.mozilla
~/.mozilla$ find ./ -iname "*sqlite"
./firefox/chjpt3j6.default/formhistory.sqlite
./firefox/chjpt3j6.default/urlclassifier3.sqlite
./firefox/chjpt3j6.default/cookies.sqlite
./firefox/chjpt3j6.default/permissions.sqlite
./firefox/chjpt3j6.default/search.sqlite
./firefox/chjpt3j6.default/webappsstore.sqlite
./firefox/chjpt3j6.default/places.sqlite
./firefox/chjpt3j6.default/downloads.sqlite
./firefox/chjpt3j6.default/OfflineCache/index.sqlite
./firefox/chjpt3j6.default/content-prefs.sqlite

acceder a la base de datos contenida en el archivo places.sqlite

Para acceder al shell desde donde podremos obtener los bookmarks, simplemente invocamos el comando

$ sqlite3 /ruta/places.sqlite

Pero antes de entrar en detalle, veamos alqunos problemas comunes con los que nos podemos encontrar.

sqlite. Error: database is locked

Este error se produce cuando intentamos acceder al archvo, pero se encuentra en uso (lockeado) por Firefox. Para trabajar con el archivo deberemos cerrar firefox 3 primero.

~/.mozilla$ sqlite ./firefox/chjpt3j6.default/places.sqlite
SQLite version 2.8.17
Enter ".help" for instructions
sqlite> .tables
Error: database is locked

Unable to open database. File is encrypted or is not a database

Este problema se produce porque la version de sqlite que invocamos desde la linea de comandos no es la misma con la que se genero el archivo .sqlite.

sqlite> .tables
Unable to open database "./firefox/chjpt3j6.default/places.sqlite": file is encrypted or is not a database

sqlite3

Para solucionarlo, simplemente invocamos el comando sqlite3:

~/.mozilla$ sqlite3 ./firefox/chjpt3j6.default/places.sqlite
SQLite version 3.4.2
Enter ".help" for instructions
sqlite> .help
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
.explain ON|OFF        Turn output mode suitable for EXPLAIN on or off.
.header(s) ON|OFF      Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indices TABLE         Show names of all indices on TABLE
.load FILE ?ENTRY?     Load an extension library
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Print STRING in place of NULL values
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.schema ?TABLE?        Show the CREATE statements
.separator STRING      Change separator used by output mode and .import


.show                  Show the current values for various settings
.tables ?PATTERN?      List names of tables matching a LIKE pattern
.timeout MS            Try opening locked tables for MS milliseconds
.width NUM NUM ...     Set column widths for "column" mode

Como ver las tablas de la base de datos ?

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

Guardar las urls en un archivo de texto

La salida de los comandos ingresados en el shell de sqlite se redirigen por default a la salida estandard. Con el comando .output de sqlite, le decimos que a partir de este momento, redirija la salida al archivo pasado como parametro. Luego, realizamos la consula SQL, pidiendo que nos devuelva la columna url, y realizando un join de las tablas moz_bookmarks y moz_places.

sqlite> .output ff3_bookmarks.txt
sqlite> select  url from moz_bookmarks, moz_places where fk=moz_places.id ;

Salir del shell sqlite

Por ultimo, una vez terminada la sesion, salimos con el comando .quit (notar el punto delante del comando).

sqlite> .quit

No dudes en dejar un comentario haciendo una pregunta, pidiendo ayuda, solicitando una nota sobre un tema en particular, o simplemente agradeciendo.

Copyright: http://snarvaez.poweredbygnulinux.com Sebastian Narvaez
este documento ha sido publicado bajo la siguiente licencia: “Verbatim copying and distribution of this entire article are permitted in any medium provided this notice is preserved.”