等待page.cookies()不返回在响应头中看到的cookie

Mat*_*urg 5 google-chrome-headless puppeteer

我正在执行一个基本的操纵up脚本,该脚本打开一个网页,查看响应值,然后提取cookie。

在下面的示例中,响应头具有以下键值:

page.on('response', response => {
  const req = response.request();
  const resp = response;
  let result = {};
  result['method'] = req.method;
  result['status'] = resp.status;
  result['url'] = req.url;
  result['headers'] = resp.headers;


// Output of result['headers'] shortened for example
     u'server': u'Microsoft-IIS/7.5',
     u'set-cookie': u'A6=030uxloava000EG.000010000; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/\nC6=; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/\nD3=; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/\nu2=7f11f3f6-8979-4adc-824e-4d43b67f9b374ib310; expires=Mon, 16-Apr-2018 21:30:52 GMT; domain=.serving-sys.com; path=/',
     u'x-powered-by': u'ASP.NET'},
Run Code Online (Sandbox Code Playgroud)

在该标题中,您会看到一个set-cookie,但是当我在page.on('response'...:之后紧接着调用await page.cookies()时:

    const cookies = await page.cookies();
Run Code Online (Sandbox Code Playgroud)

const cookie将是[]。我在这里想念什么吗?

Pas*_*asi 7

response事件在请求实际完成之前触发。您可以requestfinished改用它,但是如果您不关心单个HTTP请求(针对所有脚本,图像等),则可以使用以下命令获取“最终cookie”:

 const page = await browser.newPage()
 await page.goto('https://www.google.com')
 const cookies = await page.cookies()
Run Code Online (Sandbox Code Playgroud)