【问题标题】:How Can I Overwrite Puppeteer NetworkwebSocketFrameReceived response如何覆盖 Puppeteer NetworkwebSocketFrameReceived 响应
【发布时间】:2022-07-10 11:50:30
【问题描述】:

如何在 puppeteer 中覆盖来自 Network.webSocketFrameReceived 的响应

const client = await crawler.target().createCDPSession();
await client.send('Network.enable');
client.on('Network.webSocketFrameReceived', ({ requestId, timestamp, response }) => {
    console.log(response.payload);
});

【问题讨论】:

    标签: javascript node.js google-chrome websocket puppeteer


    【解决方案1】:

    您从Network.webSocketFrameReceived 得到的响应将来自服务器。因此,除非您能够在服务器上修改它,否则您将无法更改它。

    您显然可以检查响应中的条件并根据该条件更改变量。

    client.on('Network.webSocketFrameReceived', frame => {
      let response = frame.response.payloadData;
      console.log(response)
      if (response.includes('something')) { // check for event, pusher, data, socket_id, etc.
        // example: check response for a status code or something
        let res = JSON.parse(response.match(/\{.*\}/)[0]);
        console.log(res);
        if (res.code !== 200) { // if response has a 'code' property
          // console.log(res.code)
        } else {
          // console.log(res);
        }
      }
    });
    

    更多信息请访问this blog post here。还有几个使用Puppeteer 和网络套接字的示例。

    取决于您访问的站点,还取决于await page.waitForFunction() 是否有效。除非我知道该网站的功能会在那里,否则我通常会对此发表评论。

    最后了解更多关于Chrome Dev Tools Protocol (CDP) check out these docs的信息。

    【讨论】:

      猜你喜欢
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 2023-02-24
      • 2019-11-18
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多