Posso recuperar dados do Firefox localStorage para uma URL que não existe mais?

2

Mais ou menos uma pergunta estranha, mas aqui está a situação básica.

Algum tempo atrás eu escrevi um pequeno aplicativo de tarefas básicas para uso de alguns colegas de trabalho em uma rede corporativa interna, e eu estava hospedando-o em uma unidade compartilhada. Para manter a persistência sem ter que configurar um servidor da Web, os dados do usuário estavam sendo armazenados no localStorage do navegador.

Recentemente, os SysAdmins estão retrabalhando o sistema de endereçamento da unidade de rede, o que resultou em uma alteração no URL do meu pequeno aplicativo. Claro, isso significa que a página não tem mais acesso ao mesmo objeto localStorage, e qualquer um que esteja usando meu aplicativo já "perdeu" seus dados, mesmo que ainda esteja armazenado em algum lugar pelo Firefox. (Estamos todos usando o Firefox 31 no Windows 7 , caso isso mude alguma coisa.)

Então a pergunta é: posso recuperar os dados do localStorage? Meu primeiro pensamento, embora seja um kludge, era fazer com que um usuário adicionasse uma entrada ao seu arquivo hosts para apontar o URL antigo para outro arquivo que exportaria os dados (ou, para esse assunto, apontasse para um arquivo trivial e pegasse os dados manualmente no console da web). Mas, como você deve ter adivinhado, o arquivo hosts está bloqueado e não temos direitos de administrador.

Como nota final, estou ciente dos vários addons do Firefox que ajudam com o localStorage, mas como mencionei antes, tudo isso está acontecendo em uma rede corporativa isolada, então trazer um addon para uma razão tão trivial é um não iniciante.

Pensamentos?

    
por Ken Bellows 04.05.2016 / 14:48

1 resposta

3

Para a posteridade, descobri que os dados do localStorage estão armazenados em um arquivo sqlite chamado webappsstore.sqlite no diretório do perfil do Firefox. No Windows, isso pode ser encontrado em %APPDATA%\Mozilla\Firefox\Profiles\{profile ID}\webappsstore.sqlite . Para ler seu conteúdo usei um pequeno script Python que usa o sqlite3 package:

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()])

(Eu usei o Python 3, não tenho certeza se existem diferenças na versão do sqlite3 do Python 2.)

Isso produzirá muitos dados; Eu recomendo redirecionar para um arquivo. Os dados estarão em instruções de criação de dados SQL. Cada entrada no armazenamento local tem um domínio e uma chave associados a ela em uma tabela. A URL é sempre escrita de trás para frente no banco de dados. Você está procurando algo como o seguinte:

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

Você encontrará seus pares de valor-chave localStorage em algum lugar na saída.

    
por 11.05.2016 / 20:47