Where is places SQLite stored?

Accede al Historial de Firefox: places.sqlite

Valoración: 4.36 (7660 votos)

En la era digital, nuestra actividad en internet queda registrada en diversos lugares. Uno de los depósitos de información más ricos y personales se encuentra directamente en nuestros navegadores web. Mozilla Firefox, uno de los navegadores más populares y de código abierto, no es una excepción a esta regla. Cada sitio que visitas, cada marcador que guardas, cada descarga que realizas, y mucha otra información, se almacena localmente en archivos de base de datos.

How do I open a SQLite memory database?
The most common way to force an SQLite database to exist purely in memory is to open the database using the special filename ":memory:". In other words, instead of passing the name of a real disk file into one of the sqlite3_open(), sqlite3_open16(), or sqlite3_open_v2() functions, pass in the string ":memory:".

Mozilla Firefox utiliza extensivamente el sistema de base de datos SQLite. SQLite es una biblioteca de software que implementa un motor de base de datos SQL transaccional, autónomo, sin servidor y sin configuración. A diferencia de los sistemas de bases de datos cliente-servidor tradicionales, SQLite lee y escribe directamente en archivos de disco ordinarios. En el caso de Firefox, gran parte de tu historial de navegación, caché, cookies, descargas y otra información se guarda en archivos SQLite, que generalmente tienen extensiones `.db` o `.sqlite`.

De todos los archivos de base de datos que Firefox crea, el archivo `places.sqlite` es quizás el más significativo. Contiene una gran cantidad de artefactos relacionados con la actividad del usuario, siendo crucial para entender el comportamiento en línea. Este archivo almacena el historial de navegación, los marcadores (bookmarks) y las palabras clave asociadas. Aunque su estructura puede ser compleja, con múltiples tablas interconectadas, ciertas tablas clave dentro de `places.sqlite` son fundamentales para extraer información relevante, especialmente para propósitos de análisis forense o simplemente para recuperar datos perdidos.

Dos de las preocupaciones principales al examinar este archivo son identificar qué URLs han sido visitadas y exactamente en qué momento ocurrieron esas visitas. Afortunadamente, SQLite proporciona herramientas y métodos para acceder y consultar esta información directamente.

Índice de Contenido

¿Dónde se Almacena el Archivo places.sqlite?

El archivo `places.sqlite` se encuentra dentro de la carpeta del perfil de usuario de Firefox. La ubicación exacta de esta carpeta varía según el sistema operativo que estés utilizando:

  • Windows: Generalmente se encuentra en rutas como %APPDATA%\Mozilla\Firefox\Profiles\<nombre_perfil>\. El nombre del perfil es una cadena de caracteres aleatoria seguida de `.default-release` o similar (por ejemplo, abcdefgh.default-release).
  • macOS: Usualmente está en ~/Library/Application Support/Firefox/Profiles/<nombre_perfil>/.
  • Linux: Comúnmente se halla en ~/.mozilla/firefox/<nombre_perfil>/.

Para acceder a esta carpeta, a menudo puedes abrir Firefox, ir a la información de solución de problemas (escribe about:support en la barra de direcciones) y buscar la opción "Abrir carpeta del perfil" o similar. Una vez que localices la carpeta de tu perfil, encontrarás el archivo `places.sqlite` dentro.

Es una buena práctica, antes de intentar abrir o modificar el archivo, hacer una copia del mismo. Esto previene la pérdida de datos en caso de que algo salga mal durante el proceso.

Herramientas para Abrir places.sqlite

Dado que `places.sqlite` es una base de datos SQLite estándar, la forma más directa y potente de interactuar con ella es utilizando la herramienta de línea de comandos oficial de SQLite, llamada `sqlite3`. Esta herramienta te permite abrir el archivo, ejecutar comandos SQL y comandos específicos de SQLite para explorar y extraer datos.

Para usar `sqlite3`, primero necesitas tenerlo instalado en tu sistema. En muchos sistemas operativos Linux y macOS, ya viene preinstalado. En Windows, puedes descargarlo desde el sitio web oficial de SQLite.

Abriendo el Archivo con sqlite3

Una vez que tienes la herramienta `sqlite3` disponible y has localizado el archivo `places.sqlite`, puedes abrirlo desde la línea de comandos navegando hasta la carpeta donde copiaste el archivo (o especificando la ruta completa) y ejecutando:

sqlite3 places.sqlite

Esto iniciará una sesión interactiva de SQLite, donde puedes comenzar a ingresar comandos.

Explorando la Estructura de la Base de Datos

Dentro de la sesión `sqlite3`, el primer paso es entender qué tablas existen en la base de datos. Las tablas organizan la información en categorías lógicas. Puedes listar todas las tablas disponibles usando el comando `.tables`:

sqlite> .tables

La salida te mostrará una lista de nombres de tablas. Algunas de las tablas más importantes para el historial y los marcadores son:

  • moz_places: Contiene información sobre cada lugar visitado o marcado (URLs, títulos, recuentos de visitas, etc.).
  • moz_historyvisits: Registra cada visita individual a una URL (cuándo ocurrió la visita, desde qué página vino, etc.).
  • moz_bookmarks: Almacena información sobre los marcadores y las carpetas de marcadores.
  • moz_favicons: Contiene los iconos asociados a los sitios web.

La estructura exacta y los nombres de las tablas pueden variar ligeramente entre las versiones de Firefox.

Inspeccionando la Estructura de las Tablas

Para saber qué columnas contiene una tabla específica (y por lo tanto, qué tipo de información almacena), puedes usar el comando `PRAGMA table_info()` seguido del nombre de la tabla. Por ejemplo, para ver la estructura de la tabla `moz_places`:

sqlite> PRAGMA table_info(moz_places);

La salida mostrará detalles como el nombre de la columna, el tipo de datos, si permite valores nulos, etc. Esto es crucial para entender cómo consultar los datos. Por ejemplo, verás columnas como `url`, `title`, `visit_count`, `last_visit_date` en `moz_places`, y `visit_date`, `place_id` en `moz_historyvisits`.

Aquí tienes un ejemplo de la información que podrías obtener para `moz_places`:

0|id|INTEGER|0||11|url|LONGVARCHAR|0||02|title|LONGVARCHAR|0||03|rev_host|LONGVARCHAR|0||04|visit_count|INTEGER|0|0|05|hidden|INTEGER|1|0|06|typed|INTEGER|1|0|07|favicon_id|INTEGER|0||08|frecency|INTEGER|1|-1|09|last_visit_date|INTEGER|0||010|guid|TEXT|0||0

Y para `moz_historyvisits`:

0|id|INTEGER|0||11|from_visit|INTEGER|0||02|place_id|INTEGER|0||03|visit_date|INTEGER|0||04|visit_type|INTEGER|0||05|session|INTEGER|0||0

Observa la columna `visit_date` en `moz_historyvisits` y `last_visit_date` en `moz_places`. Estas columnas almacenan las fechas y horas de las visitas.

Extrayendo Datos: Consultando el Historial de Navegación

El objetivo principal al abrir `places.sqlite` suele ser recuperar el historial de navegación. Esta información se encuentra distribuida entre las tablas `moz_places` y `moz_historyvisits`. La tabla `moz_places` contiene los detalles de la URL y el título, mientras que `moz_historyvisits` registra cada instancia de visita con su fecha y hora (`visit_date`) y un enlace a la URL correspondiente en `moz_places` (`place_id`).

How to open Firefox places SQLite file?
HOW TO FIND THE PLACES.1Step-1. They just need to Open Mozilla Firefox Browser, & Go to the Profile section. ...2Step-2. Now, Click on the More Troubleshooting Information option to proceed.3Step-3. Here, in this screen, Click on the Open Folder button next to the Public Folder option.4Step-4.

Para obtener una lista del historial de navegación que incluya la fecha/hora de la visita, la URL y el título de la página, necesitas unir estas dos tablas utilizando la columna común `place_id` (en `moz_historyvisits`) y `id` (en `moz_places`).

Además, la columna `visit_date` en `moz_historyvisits` almacena la fecha y hora como un número entero que representa el tiempo en microsegundos desde la época Unix (Unix epoch). Para que esta fecha sea legible para los humanos, necesitamos usar la función `datetime()` de SQLite, que puede convertir este valor a un formato de fecha y hora estándar. La función requiere el tiempo en segundos, por lo que debemos dividir el valor de `visit_date` por 1,000,000.

La consulta SQL para obtener el historial, incluyendo la fecha legible, la URL y el título, sería:

SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url, moz_places.titleFROM moz_places, moz_historyvisitsWHERE moz_places.id = moz_historyvisits.place_id;

Puedes ejecutar esta consulta directamente en la sesión `sqlite3`.

Ordenando los Resultados

La consulta anterior te dará todos los registros de visitas, pero no necesariamente en orden cronológico. Para ver el historial ordenado por fecha de visita, puedes añadir una cláusula `ORDER BY visit_date`:

SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url, moz_places.titleFROM moz_places, moz_historyvisitsWHERE moz_places.id = moz_historyvisits.place_idORDER BY moz_historyvisits.visit_date ASC; -- O DESC para orden descendente

Utilizar `ASC` ordenará las visitas de la más antigua a la más reciente, mientras que `DESC` lo hará de la más reciente a la más antigua. Este orden cronológico es muy útil para analizar la actividad.

Visualizando y Exportando los Datos

La salida de la consulta puede ser muy extensa. En la línea de comandos, puedes canalizar la salida a herramientas como `less` para paginar y buscar dentro de los resultados:

sqlite3 places.sqlite "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url, moz_places.title FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id ORDER BY moz_historyvisits.visit_date ASC;" | less -i

El flag `-i` en `less` permite la búsqueda sin distinguir mayúsculas y minúsculas. Para salir de `less`, presiona la tecla `q`.

Si deseas guardar el resultado en un archivo de texto para su posterior análisis o procesamiento, puedes redirigir la salida utilizando `>` o `>>`:

sqlite3 places.sqlite "SELECT datetime(moz_historyvisits.visit_date/1000000,'unixepoch'), moz_places.url, moz_places.title FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id ORDER BY moz_historyvisits.visit_date ASC;" > historial_firefox.txt

Esto creará (o sobrescribirá) el archivo `historial_firefox.txt` con el resultado de la consulta.

Otros Datos en places.sqlite

Además del historial de navegación, `places.sqlite` almacena otros datos importantes:

  • Marcadores: La tabla `moz_bookmarks` contiene la estructura de tus marcadores y carpetas. Puedes unirla con `moz_places` para obtener los detalles de las URL marcadas.
  • Palabras Clave: La tabla `moz_keywords` almacena atajos de palabras clave que hayas configurado para acceder rápidamente a ciertas URLs.
  • Favicons: La tabla `moz_favicons` guarda los pequeños iconos asociados a los sitios web.

Explorar estas tablas con `PRAGMA table_info()` y construir consultas `SELECT` te permitirá acceder a toda esta información.

Extrayendo Datos Crudos (.dump)

Si necesitas una copia completa de la base de datos en formato SQL legible (sentencias `CREATE TABLE` e `INSERT`), puedes usar el comando `.dump` dentro de `sqlite3`:

sqlite> .dump

Esto volcará todo el contenido de la base de datos a la salida estándar. Puedes redirigir esta salida a un archivo:

sqlite3 places.sqlite .dump > places_dump.sql

Este archivo `places_dump.sql` contiene la estructura y los datos de la base de datos. Puede ser útil para realizar búsquedas de texto simple (aunque las fechas estarán en formato numérico) o para recrear la base de datos.

Manejo de Archivos places.sqlite Corruptos

Ocasionalmente, el archivo `places.sqlite` puede corromperse, lo que puede causar problemas en Firefox, como lentitud o pérdida de historial. Cuando esto sucede, Firefox a veces renombra el archivo corrupto a `places.sqlite.corrupt` y crea uno nuevo. Si tienes un archivo `places.sqlite.corrupt` y quieres intentar recuperar la información, puedes intentar el siguiente proceso usando `sqlite3`:

Primero, navega a la carpeta de tu perfil de Firefox en la línea de comandos. Luego, ejecuta los siguientes pasos:

  1. Renombra los archivos actuales para tener un respaldo:
    mv places.sqlite places.sqlite.oldmv places.sqlite.corrupt places.sqlite.corrupt.old
  2. Intenta volcar el contenido de la base de datos corrupta a un archivo SQL:
    sqlite3 places.sqlite.corrupt.old ".dump" > dump.sql

    Este paso puede fallar si la corrupción es severa, pero a menudo puede recuperar una parte significativa de los datos.

  3. Crea una nueva base de datos `places.sqlite` vacía e intenta reconstruirla importando el archivo de volcado:
    sqlite3 places.sqlite ".read dump.sql"

Si el proceso `.read` se completa sin errores, el nuevo archivo `places.sqlite` contendrá los datos que pudieron ser recuperados del archivo corrupto. Luego puedes reemplazar el archivo `places.sqlite` en tu perfil de Firefox (con Firefox cerrado) por esta nueva versión recuperada.

Preguntas Frecuentes sobre places.sqlite

¿Qué es el archivo places.sqlite?
Es un archivo de base de datos SQLite utilizado por Mozilla Firefox para almacenar el historial de navegación, marcadores, descargas y otra información relacionada con los "lugares" visitados en la web.
¿Dónde encuentro el archivo places.sqlite?
Se encuentra dentro de la carpeta del perfil de usuario de Firefox. La ubicación exacta varía según tu sistema operativo (Windows, macOS, Linux). Puedes encontrarla desde la página about:support en Firefox.
¿Necesito programas especiales para abrirlo?
Sí, necesitas una herramienta que pueda leer bases de datos SQLite. La herramienta oficial de línea de comandos, sqlite3, es la más común y potente. También existen visores gráficos de SQLite.
¿Qué información contiene places.sqlite?
Principalmente historial de navegación (URLs, títulos, fechas de visita), marcadores, favicons y palabras clave asociadas a URLs.
¿Cómo convierto las fechas de visita a un formato legible?
Las fechas se almacenan como microsegundos desde la época Unix en la columna visit_date. Puedes usar la función SQL datetime(visit_date/1000000,'unixepoch') para convertirlas a un formato de fecha y hora estándar.
¿Puedo recuperar datos si el archivo places.sqlite está corrupto?
A veces es posible. Puedes intentar volcar el contenido del archivo corrupto a un script SQL (.dump) y luego usar ese script para reconstruir una nueva base de datos (.read). El éxito depende del grado de corrupción.

Conclusión

El archivo `places.sqlite` es una fuente invaluable de información sobre tu actividad de navegación en Firefox. Aunque no es un simple archivo de texto, entender su naturaleza como base de datos SQLite y familiarizarse con herramientas como la utilidad de línea de comandos `sqlite3` te abre la puerta a explorar, analizar y recuperar datos cruciales. Ya sea por simple curiosidad, para fines de análisis de datos o para intentar rescatar un historial perdido, acceder y consultar `places.sqlite` es una habilidad útil para cualquier usuario avanzado de Firefox o entusiasta de las bases de datos.

Si quieres conocer otros artículos parecidos a Accede al Historial de Firefox: places.sqlite puedes visitar la categoría Bases de datos.

Ivan

Soy un entusiasta de la tecnología con especialización en bases de datos, particularmente en MySQL. A través de mis tutoriales detallados, busco desmitificar los conceptos complejos y proporcionar soluciones prácticas a los desafíos cotidianos relacionados con la gestión de datos

Aprende mas sobre MySQL

Subir