'Set-Cook ie' не включен в заголовки ответа - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь получить заголовок set-cookie из ответа http, но он не отображается для большинства запросов.

Используя https://www.southwest.com/ в качестве примера, Вы можете видеть, что https://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&ActivityID=1345510&rnd=459203.51759912557&fare%20class=[fare%20class]&business%20or%20leisure=[business%20or%20leisure]&number%20of%20passengers=[number%20of%20passengers]&date=[date]&destination=[destination]&origination=[origination] устанавливает 3 куки: enter image description here

Код кукловода:

const puppeteer = require('puppeteer');

async function getResponseCookies() {
    function handleResponse(response) {
        const url = response.url();
        const headers = response.headers();
        const status = response.status()

        if(url.includes('https://bs.serving-sys.com/Serving/ActivityServer.bs')) {
            console.log('RESPONSE URL ', url)
            console.log('RESPONSE HEADERS ', headers)
            console.log('RESPONSE STATUS ', status)
        }
    }

    const browser = await puppeteer.launch({
        ignoreDefaultArgs: ["--enable-automation"],
        executablePath: "/usr/bin/google-chrome",
        headless: true,
        ignoreHTTPSErrors: true,
    });

    const page = await browser.newPage();

    await page.setUserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36");

    await page.on('response', async(response) => {
        await handleResponse(response);
    })

    const urls = ['https://www.southwest.com'];

    for(let url of urls) {
        await page.goto(url, { timeout: 0, waitUntil: 'networkidle0' });
    }
    await browser.close();
}

getResponseCookies();

При выполнении приведенного выше кода выводится следующий журнал без каких-либо ' set-cook ie 'заголовки в ответе:

RESPONSE URL  https://bs.serving-sys.com/Serving/ActivityServer.bs?cn=as&ActivityID=1345510&rnd=68456.37277058625&fare%20class=[fare%20class]&business%20or%20leisure=[business%20or%20leisure]&number%20of%20passengers=[number%20of%20passengers]&date=[date]&destination=[destination]&origination=[origination]
RESPONSE HEADERS  { pragma: 'no-cache',
  date: 'Mon, 03 Feb 2020 10:30:16 GMT',
  'content-encoding': 'gzip',
  server: 'Microsoft-IIS/7.5',
  'x-powered-by': 'ASP.NET',
  p3p: 'CP="NOI DEVa OUR BUS UNI"',
  'access-control-allow-origin': '*',
  'cache-control': 'no-cache, no-store',
  'content-type': 'text/html; charset=UTF-8',
  'content-length': '616',
  expires: 'Sun, 05-Jun-2005 22:00:00 GMT' }

Есть идеи, почему в ответе отсутствует заголовок Set-Cookie?

* Обратите внимание, что эти куки возвращаются при использовании Network.getAllCookies от CDP

1 Ответ

1 голос
/ 03 февраля 2020

Согласно https://github.com/puppeteer/puppeteer/issues/4918 похоже, что кукловод не слушает событие Network.responseReceivedExtraInfo, содержащее необработанные заголовки. Прослушивание этого события помогло мне.

...