存在しなくなった URL の Firefox localStorage データを取得できますか?

存在しなくなった URL の Firefox localStorage データを取得できますか?

ちょっと変な質問ですが、基本的な状況は次のとおりです。

少し前に、社内ネットワークで同僚が使用するための基本的な小さな ToDo アプリを作成し、共有ドライブでホストしていました。Web サーバーをセットアップせずに永続性を保つために、ユーザー データはブラウザーの localStorage に保存されていました。

最近、システム管理者がネットワーク ドライブのアドレス指定システムを変更しており、その結果、私の小さなアプリの URL が変更されました。もちろん、これはページが同じ localStorage オブジェクトにアクセスできなくなったことを意味し、私のアプリを使用していた人は、Firefox によってデータがまだどこかに保存されているにもかかわらず、データを「失った」ことになります。(私たちはすべて、ファイアフォックス31の上ウィンドウズ7(何か変更があった場合に備えて。)

そこで疑問なのは、localStorage データを取得できるかどうかです。私の最初の考えは、間に合わせではありますが、ユーザーにhostsファイルにエントリを追加してもらい、古い URL を別のファイルに指定してデータをエクスポートしてもらう (または、簡単なファイルを指定して、Web コンソールでデータを手動で取得する) ことでした。しかし、ご想像のとおり、ファイルはhostsロックされており、管理者権限がありません。

最後に、localStorage に役立つさまざまな Firefox アドオンがあることは承知していますが、前述したように、これはすべて分離された企業ネットワーク上で行われるため、このような些細な理由でアドオンを導入するのは無理があります。

ご意見は?

答え1

後世のために、localStorage データは Firefox プロファイル ディレクトリの という sqlite ファイルに保存されていることがわかりましたwebappsstore.sqlite。Windows では、これは にあります%APPDATA%\Mozilla\Firefox\Profiles\{profile ID}\webappsstore.sqlite。その内容を読み取るために、パッケージを使用する小さな Python スクリプトを使用しましたsqlite3

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

(私は Python 3 を使用しましたが、sqlite3 の Python 2 バージョンに違いがあるかどうかはわかりません。)

これにより、大量のデータが出力されます。ファイルにリダイレクトすることをお勧めします。データは SQL データ作成ステートメント内にあります。ローカル ストレージ内の各エントリには、テーブル内で関連付けられたドメインとキーがあります。URL は常にデータベース内で逆順に書き込まれます。次のようなものを探します。

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

出力のどこかに localStorage のキーと値のペアが見つかります。

関連情報