将多个Cookie传递给木偶

use*_*421 6 cookies json node.js puppeteer

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

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

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

Yoa*_*osh 22

您可以调用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();
Run Code Online (Sandbox Code Playgroud)


lim*_*fil 11

您可以使用传播语法 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();
Run Code Online (Sandbox Code Playgroud)

  • 此外,`page.cookies()` 用于从特定的 `url` https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagecookiesurls,`page.setCookie(...cookies )` 用于设置 cookie。 (2认同)
  • @lima_fil,您需要在数组中添加域或ULR值才能使答案起作用:const cookies = [{name:'cookie1',value:'val1',domain:'.domain1'},{name:'cookie2 ',值:'val2',域:'。domain2'},{名称:'cookie3',值:'val3',域:'。domain3'}]; (2认同)