¿Puedo recuperar datos de Firefox localStorage para una URL que ya no existe?

¿Puedo recuperar datos de Firefox localStorage para una URL que ya no existe?

Es una pregunta un tanto extraña, pero aquí está la situación básica.

Hace un tiempo, escribí una pequeña aplicación básica de tareas pendientes para que la usaran algunos compañeros de trabajo en una red corporativa interna y la alojaba en una unidad compartida. En aras de la persistencia sin tener que configurar un servidor web, los datos del usuario se almacenaban en el almacenamiento local del navegador.

Recientemente, los SysAdmins han estado reelaborando el sistema de direccionamiento de unidades de red, lo que ha resultado en un cambio en la URL de mi pequeña aplicación. Por supuesto, esto significa que la página ya no tiene acceso al mismo objeto de almacenamiento local, y cualquiera que haya estado usando mi aplicación ahora ha "perdido" sus datos, aunque Firefox todavía los almacena en algún lugar. (Todos estamos usandoFirefox 31enventana 7, en caso de que eso cambie algo.)

Entonces la pregunta es, ¿puedo recuperar esos datos de almacenamiento local? Mi primer pensamiento, aunque sea una torpeza, fue que un usuario agregara una entrada a su hostsarchivo para señalar la URL anterior a otro archivo que exportará los datos (o, de hecho, señalar un archivo trivial y tomar los datos manualmente). en la consola web). Pero, como habrás adivinado, el hostsarchivo está bloqueado y no tenemos derechos de administrador.

Como nota final, conozco los diversos complementos de Firefox que ayudan con el almacenamiento local, pero como mencioné antes, todo esto sucede en una red corporativa aislada, por lo que incorporar un complemento por una razón tan trivial no es un comienzo.

¿Pensamientos?

Respuesta1

Para la posteridad, descubrí que los datos de localStorage se almacenan en un archivo sqlite llamado webappsstore.sqliteen el directorio de su perfil de Firefox. En Windows, esto se puede encontrar en %APPDATA%\Mozilla\Firefox\Profiles\{profile ID}\webappsstore.sqlite. Para leer su contenido utilicé un pequeño script en Python que utiliza el sqlite3paquete:

import os, sqlite3
profiles = os.path.join(os.environ('APPDATA'),'Mozilla\\Firefox\\Profiles')
profile = os.path.join(profiles, os.listdir(profiles)[0])
db = os.path.join(profile,'webappsstore.sqlite')
print([entry.encode('utf-8') for entry in sqlite3.connect(db).iterdump()])

(Usé Python 3, no estoy seguro de si hay diferencias en la versión Python 2 de sqlite3).

Esto generará una gran cantidad de datos; Recomiendo redirigir a un archivo. Los datos estarán en declaraciones de creación de datos SQL. Cada entrada en el almacenamiento local tiene un dominio y una clave asociados en una tabla. La URL siempre se escribe al revés en la base de datos. Estás buscando algo como lo siguiente:

INSERT INTO "webappsstore2" VALUES('moc.elpmaxe.www.:https:443','myLocalStorageKey','{"key":"value","pairs":["go","here"]}')

Encontrará sus pares clave-valor de localStorage en algún lugar de la salida.

información relacionada