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.
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.”