一尘不染

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

node.js

我想使用Google Chrome浏览器的IndexedDB在客户端保留数据。

想法是稍后通过Node.JS访问chrome之外的IndexedDB。背景技术是在本地跟踪使用行为并将收集的数据存储在客户端上以供以后在没有服务器后端的情况下进行分析的想法。

据我了解,indexedDB是作为LevelDB实现的。但是,我不能与任何工具打开性LevelDB
/库一样的LevelUp /
LevelDown性LevelDB
JSON的

我总是收到以下错误消息:

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的实现似乎有些特殊/不同。


阅读 1028

收藏
2020-07-07

共1个答案

一尘不染

leveldb中的键是任意二进制序列。客户端实现比较器以定义键之间的顺序。leveldb
默认比较器等效于strncmp。Chrome的Indexed
DB存储区的比较器更为复杂。如果尝试将leveldb实例与比较器创建的比较器不同,则将以随机的顺序观察密钥,则插入将不可预测或导致损坏-
狗和猫在一起生活,歇斯底里。因此,leveldb可让您命名比较器(持久化到数据库)以帮助检测和避免此错误,这正是您所看到的。Chrome的代码将其索引数据库的比较器命名为
“ idb_cmp1”。

要检查Chrome之外的Chrome的索引数据库leveldb实例之一,您需要实现一个兼容的比较器。该代码位于Chrome的实现中,位于content /
browser / indexed_db /
indexed_db_backing_store.cc中,并且请注意,不能保证此版本在各个版本中均已解决。(当然,除了向后兼容之外)

2020-07-07