我试图在一个变量中插入所有浏览器cookie,然后稍后再使用它。
我的尝试:
const puppeteer = require('puppeteer')
const fs = require('fs').promises;
(async () => {
const browser = await puppeteer.launch({
headless: false,
executablePath: 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe',
const page = await browser.newPage();
await page.goto('https://www.google.com/');
下面是我获得cookie的代码,它可以工作,但是现在它打印了一条错误消息。
const client = await page.target().createCDPSession();
const all_browser_cookies = (await client.send('Network.getAllCookies')).cookies;
const current_url_cookies = await page.cookies();
var third_party_cookies = all_browser_cookies.filter(cookie => cookie.domain !== current_url_cookies[0].domain);
下面是seccond页面(将使用cookie)
(async () => {
const browser2 = await puppeteer.launch({
});
const url = 'https://www.google.com/';
const page2 = await browser2.newPage();
try{
await page2.setCookie(...third_party_cookies);
await page2.goto(url);
}catch(e){
console.log(e);
}
await browser2.close()
})();
})();
直到昨天,它才起作用,但今天它出现了以下消息错误:
Error: Protocol error (Network.setCookies): Invalid parameters Failed to deserialize params.cookies.expires - BINDINGS: double value expected at position 662891
有人知道这是什么吗?
发布于 2022-01-22 10:43:42
好的,解决方案在这里:https://github.com/puppeteer/puppeteer/issues/7029
您正在保存一系列cookie,而page.setCookie只对一个cookie起作用。你必须像这样迭代你的数组:
for (let i = 0; i < third_party_cookies.length; i++) {
await page2.setCookie(third_party_cookies[i]);
}
发布于 2022-03-29 11:50:35
@julio的建议是可以的,但是根据木偶专家的文档,只要你对数组进行重构,使用page.setCookie就可以了,例如:
await page.setCookie(...arr)
来源:https://devdocs.io/puppeteer/index#pagesetcookiecookies
不完全确定它是什么,但是OP的错误是其他的东西。
https://stackoverflow.com/questions/70808628
复制相似问题