Bar*_*rdt 10 cookies request-headers http-headers puppeteer
我想在使用 puppeteer 编写的测试期间读取请求 cookie。但我注意到我检查的大多数请求只有引用和用户代理标头。如果我在 Chrome 开发工具中查看相同的请求,它们会有更多的标头,包括 Cookie。要查看它,请将下面的代码复制粘贴到https://try-puppeteer.appspot.com/ 中。
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('request', function(request) {
console.log(JSON.stringify(request.headers, null, 2));
});
await page.goto('https://google.com/', {waitUntil: 'networkidle'});
await browser.close();
Run Code Online (Sandbox Code Playgroud)
您可以访问和不能访问哪些请求标头是否有限制?是Chrome本身的限制还是puppeteer的限制?
感谢您的建议!
Hug*_*ugo 11
当我尝试使用 Puppeteer 测试某些 CORS 行为时,我也看到了这一点 - 我发现Origin某些请求中缺少标头。
环顾 GitHub 问题,我发现了一个问题,其中提到 Puppeteer 不侦听底层 Chrome DevTools 协议的Network.responseReceivedExtraInfo事件,此事件提供了Network.responseReceived事件不可用的额外响应标头。对于请求,还有一个类似的Network.requestWillBeSentExtraInfo事件。
连接到这些事件似乎让我得到了我需要的所有标题。下面是一些示例代码,它从所有这些事件中捕获数据并将其合并到由请求 ID 键控的单个对象中:
// Setup.
const browser = await puppeteer.launch()
const page = await browser.newPage()
const cdpRequestDataRaw = await setupLoggingOfAllNetworkData(page)
// Make requests.
await page.goto('http://google.com/')
// Log captured request data.
console.log(JSON.stringify(cdpRequestDataRaw, null, 2))
await browser.close()
// Returns map of request ID to raw CDP request data. This will be populated as requests are made.
async function setupLoggingOfAllNetworkData(page) {
const cdpSession = await page.target().createCDPSession()
await cdpSession.send('Network.enable')
const cdpRequestDataRaw = {}
const addCDPRequestDataListener = (eventName) => {
cdpSession.on(eventName, request => {
cdpRequestDataRaw[request.requestId] = cdpRequestDataRaw[request.requestId] || {}
Object.assign(cdpRequestDataRaw[request.requestId], { [eventName]: request })
})
}
addCDPRequestDataListener('Network.requestWillBeSent')
addCDPRequestDataListener('Network.requestWillBeSentExtraInfo')
addCDPRequestDataListener('Network.responseReceived')
addCDPRequestDataListener('Network.responseReceivedExtraInfo')
return cdpRequestDataRaw
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5517 次 |
| 最近记录: |