首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Puppeteer捕获原始请求

使用Puppeteer捕获原始请求
EN

Stack Overflow用户
提问于 2021-04-08 16:03:09
回答 1查看 166关注 0票数 0

而不是使用代理,尝试通过Puppeteer捕获原始HTTP请求消息。

这是我正在做的一个基本示例。

代码语言:javascript
复制
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()

  await page.setViewport({ width: 1200, height: 800 })

  await page.setRequestInterception(true)

  page.on('request', (request) => {
    console.log(request) // <-- I want raw HTTP(S) message, not an object
    request.continue()
  })

  page.on('response', (response) => {
    console.log('<<', response.status(), response.url())
  })

  await page.goto('https://www.google.com/')

  await browser.close()
})()

当我打印出请求时,我得到了表示该请求的Node / JSON对象。

如何获取原始请求消息?

EN

回答 1

Stack Overflow用户

发布于 2021-04-23 00:09:00

@openwonk,你好!

您可以使用以下方式获取原始数据:

  1. 简单但不是所有数据:

代码语言:javascript
复制
page.on('request', async function (request) {
    // HTTP method
    console.log(request.method());
    // Request target, usually a URL
    console.log(request.url());
    // The HTTP version
    // N/A
    // HTTP headers
    console.log(request.headers());
    // Body
    console.log(request.postData());
});

  1. 不像以前那么简单,但有完整的数据:

代码语言:javascript
复制
await page.tracing.start({ path: 'trace.json', categories: ['netlog'] });
await page.goto('http://example.com/', { waitUntil: 'networkidle0' })
const tracing = JSON.parse(await page.tracing.stop());
// Some filtering
const res = await tracing.traceEvents.filter(te => te.name.toLowerCase().includes(`${some_desired_name}`));

  • 您可以包含不同的跟踪类别。在本例中,仅使用了“netlog”类别。您可以在此阅读跟踪的简短介绍此article.
  • You应自己从此跟踪收集数据。
  • 它使用Tracing类。
  • 此代码创建跟踪文件('trace.json'),可以在DevTools中检查。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66999704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档