Web Storageの保管場所(Firefox)

Web StorageのlocalStorageはどこに保存されているんだろうと疑問に思って調べてみるとすぐ分かった。

DOM Storage — Storage の場所とデータの消去

どうやらSQLiteに記録されている模様。しかし標準のGUIでは閲覧も削除も難しいようだな。

SQLite Managerで覗いてみるととても単純な構造になっている。これならsqlite.exeでダンプできるな思ってSQLを書き始めたら、なんとSQLiteには文字列を逆転させる関数がないことが判明。それくらい用意しておいてくれ。いや文字コードの関係があるので案外難しいのか。でもな、ドメインはASCIIの範囲内におさまるので(日本語ドメインであってもpunycodeで変換される)、貧弱な実装でも使える……なんて考えている暇があったらPythonでコード書いたほうが早いわ(ここまで2秒)。

#! python3.3

import sqlite3
import csv

db = r'C:\Users\UserNameHere\AppData\Roaming\Mozilla\Firefox\Profiles\rAnDamStRiNg.default\webappsstore.sqlite'
conn = sqlite3.connect(db)

fout = open('out.csv', 'w', newline='')
writer = csv.writer(fout)

for scope, key, value in conn.execute('SELECT scope, key, value FROM webappsstore2'):
    host, scheme, port = scope.split(':')
    host = host[::-1]
    if host[0]:
        host = host[1:]

    url = '{}://{}:{}/'.format(scheme, host, port)

    writer.writerow([scope, url, key, value])

fout.close()
conn.close()

表計算ソフトで開いてみて気づいたが、確かにドメインは逆転されていた方が、ソートの時は便利だな。