google-chrome-devtools - 通过 Chrome DevTools 协议(protocol)读取 DOMStorage/LocalStorage

标签 google-chrome-devtools puppeteer chrome-devtools-protocol

我知道以下代码片段允许我读取所有当前的 cookie:

let Main = await import('./main/main.js');
await Main.MainImpl.sendOverProtocol('Network.getCookies');

preview Network.getCookies

现在,出于测试目的,我需要获取所有可用信息 LocalStorage条目。我尝试了一些东西,但不幸的是我没有得到它。 Chrome DevTools 本身只使用已经可用的 securityOrigin 来查询它变量,我不知道它来自哪里:

CDP getDOMStorageItems

我也找到了 Page.getFrameTree 但是缺少一些条目 - 所以我认为这与 LocalStorage 的条目无关:

local storage view

我缺少的文档中还有其他方法吗?

编辑 #1

正如评论中提到的,我让它与 Page.getResourceTree 一起工作.不幸的是,我得到的下一个问题如下:
Protocol error (DOMStorage.getDOMStorageItems): Frame not found for the given security origin.

最佳答案

这足够了吗?

'use strict';

const puppeteer = require('puppeteer');

(async function main() {
  try {
    const browser = await puppeteer.launch();
    const [page] = await browser.pages();

    await page.goto('http://example.org/');

    await page.evaluate(() => { window.localStorage.setItem('foo', 42); });

    const cdp = await page.target().createCDPSession();

    const data = await cdp.send('DOMStorage.getDOMStorageItems', {
      storageId: {
        securityOrigin: await page.evaluate(() => window.origin),
        isLocalStorage: true,
      },
    });
    console.log(data);

    await browser.close();
  } catch (err) {
    console.error(err);
  }
})();

输出:
{ entries: [ [ 'foo', '42' ] ] }

关于google-chrome-devtools - 通过 Chrome DevTools 协议(protocol)读取 DOMStorage/LocalStorage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62356783/

相关文章:

google-chrome-devtools - 为什么条码扫描器会在 chrome 中打开 Chrome 开发者控制台?

javascript - 使用 Chrome headless 浏览器获取呈现的字体

node.js - Puppeteer 输入未输入所有字符

go - chromedp 无法启动新的 chrome 实例

Java WebSocket 消息限制

javascript - 如何在 Google Chrome DevTools 中的 lambda 调用处设置断点?

javascript - 将 console.table() 与 jQuery 数组一起使用——如何不包含 "extra"jquery 属性

JavaScript 代码 : how does it work?

node.js - 使用 Node 和 Python 对页面源进行哈希处理时的差异

electron - 以编程方式控制 Chromium 实例的最可靠方法是什么?