将多个cookie传递给木偶操纵者

时间:2018-05-29 12:45:42

标签: json node.js cookies puppeteer

通过做用户Md.Abu Taher的建议,我使用了一个名为EditThisCookie的插件从我的浏览器下载cookie。

导出的cookie采用JSON格式,实际上它是一个对象数组。

是否可以将此数组作为参数传递给puppeteer?我可以将一个对象数组传递给page.setCookies()函数吗?

2 个答案:

答案 0 :(得分:5)

您可以使用 spread syntax await page.setCookie(...cookies);,其中cookies是一个Cookie对象数组。 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagesetcookiecookies

https://try-puppeteer.appspot.com/

上试用

const browser = await puppeteer.launch();
const url = 'https://example.com';
const page = await browser.newPage();
await page.goto(url);

const cookies = [{
  'name': 'cookie1',
  'value': 'val1'
},{
  'name': 'cookie2',
  'value': 'val2'
},{
  'name': 'cookie3',
  'value': 'val3'
}];

await page.setCookie(...cookies);
const cookiesSet = await page.cookies(url);
console.log(JSON.stringify(cookiesSet));
await browser.close();

答案 1 :(得分:2)

您可以使用扩展运算符调用 page.setCookie() 以一次设置多个 cookie。

但是,请确保在调用 page.goto(url) 之前调用它,因为如果在之后调用它,cookie 将在页面加载后设置。

page.setCookie() 之前调用 page.goto(url) 将要求您为每个 cookie 添加一个 domain 键。

const cookies = [
  {name: 'cookie1', value: 'val1', domain: 'example.com'},
  {name: 'cookie2', value: 'val2', domain: 'example.com'},
  {name: 'cookie3', value: 'val3', domain: 'example.com'},
];

const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setCookie(...cookies);
await page.goto('https://example.com');
await browser.close();