如何访问谷歌浏览器的IndexedDB/LevelDB文件?

igsr9ssn  于 2022-12-09  发布在  IndexedDB
关注(0)|答案(2)|浏览(740)

我想使用Google Chrome的IndexedDB在客户端持久化数据。
我们的想法是稍后通过Node.JS访问chrome外部的IndexedDB。我们的背景想法是在本地跟踪使用行为,并将收集的数据存储在客户端上,以便在没有服务器后端的情况下进行后续分析。
据我所知,indexedDB是作为LevelDB实现的,但是,我无法使用任何工具/库(如LevelUp/LevelDownleveldb-json)打开levelDB。
我总是收到以下错误消息:

leveldb-dump-to-json --file test.json --db https_www.reddit.com_0.indexeddb.leveldb

events.js:141
    throw er; // Unhandled 'error' event
        ^   OpenError: Invalid argument: idb_cmp1 does not match existing   comparator : leveldb.BytewiseComparator
      at /usr/local/lib/node_modules/leveldb-  json/node_modules/levelup/lib/levelup.js:114:34 Christians-Air:IndexedDB

有没有人能帮忙?看起来Chrome的实现在某种程度上很特别/不同。

ffdz8vbo

ffdz8vbo1#

leveldb中的键是任意的二进制序列。客户端实现了comparators来定义键之间的顺序。leveldb的default comparator相当于strncmp。Chrome用于索引DB存储的比较器更加复杂。如果您尝试使用与创建时不同的比较器来使用leveldb示例,您会发现键的顺序似乎是随机的。插入可能是不可预测的,或者会导致崩溃--猫和狗住在一起,大规模歇斯底里。所以leveldb允许你命名比较器(持久保存到数据库中),以帮助检测和避免这种错误,这就是你所看到的。Chrome的代码将索引DB的比较器命名为“idb_cmp1”。
要在chrome之外检查某个Chrome的Indexed DB leveldb示例,你需要实现一个兼容的比较器。代码位于Chrome的content/browser/indexed_db/indexed_db_backing_store.cc实现中-请注意,不能保证这个问题在不同版本中都能得到解决。(当然,向后兼容性除外)

sdnqo3pr

sdnqo3pr2#

它已经在github上实现并公开了

相关问题