从网络选项卡捕获 Websocket 消息

Posted

技术标签:

【中文标题】从网络选项卡捕获 Websocket 消息【英文标题】:Capturing Websocket Messages From Network Tab 【发布时间】:2019-09-11 16:33:25 【问题描述】:

使用 puppeteer 我正在尝试读取 websocket 消息并将它们放入字符串中以输出到控制台。要查看一些 websocket 消息的示例,您可以访问代码中下面提供的链接,然后按照括号中的步骤操作。 (CTRL+SHIFT+I > 网络 > WS (websocket) > 消息)

var puppeteer = require('puppeteer');

async function run() 
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto('http://powerline.io');
    console.log('navigated successfully');
    page.on('response', response => 
        const isWSS = ['websocket'].includes(response.request().resourceType())

        if (isWSS)
            console.log(isWSS);
            log(response.url());
            response.text().then(log)
        
    )


run();

【问题讨论】:

【参考方案1】:

这是一个例子,它是如何被捕获的:

var puppeteer = require('puppeteer');

async function run() 
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('http://powerline.io');
  const cdp = await page.target().createCDPSession();
  await cdp.send('Network.enable');
  await cdp.send('Page.enable');

  const printResponse = response => console.log('response: ', response);

  cdp.on('Network.webSocketFrameReceived', printResponse); // Fired when WebSocket message is received.
  cdp.on('Network.webSocketFrameSent', printResponse); // Fired when WebSocket message is sent.


run();

阅读更多关于network events的信息。

【讨论】:

注意:这不适用于通过 Web Workers 创建的 WebSocket 连接

以上是关于从网络选项卡捕获 Websocket 消息的主要内容,如果未能解决你的问题,请参考以下文章

如何捕获从 SQL Server 到 C# 应用程序的消息选项卡的所有内容?

跨浏览器选项卡共享 websocket?

是否可以向 Chrome 中的现有 websocket 连接发送消息?

调试二进制 websocket

即时通讯开发中WebSocket和SSE技术如何实现Web端消息推送

websocket接收到word时如何通过端口postMessage。?