Как я могу получить URL, используя данные сеанса со страницы кукловода? - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь зайти на сайт со своими учетными данными и скачать pdf, используя puppeter. Я получил pdf-URL с помощью puppeteer, но теперь я хочу использовать node-fetch для доступа к этой странице. Чтобы получить страницу в формате PDF, мне нужно включить данные о сеансе в опции, но я не знаю, правильно ли я это делаю.

Я пытался использовать 'credentials:' include ', получать cookie-файлы с page.cookies и другие небольшие изменения в опциях, отправляемых вместе с fetch.

 var response = await page.goto(urlPdf);
 var headersPup = response.request().headers(); 

 const { cookies } = await page._client.send("Network.getAllCookies", {});

  const sessionFreeCookies = cookies.map((cookie) => {
    return {
      ...cookie,
      expires: Date.now() / 1000 + 10 * 60,
      session: false
    };
  });

  headersPup['Cookie'] = sessionFreeCookies; //adding the cookies to header
  headersPup['Content-Type'] = 'application/pdf';//adding content-type

  var opts = {
      method: "GET",
      headers: headersPup,
      credentials: "include",
  }

  await fetch(urlPdf,opts).then(response => response
    .body.pipe(fs.createWriteStream('test4.pdf'))
    .on('close', () => console.log('pdf downloaded')));

Когда я открываю test4 как txt, я вижу HTML-страницу входа в систему, это означает, что я потерял сеанс. Как мне сохранить сеанс для скачивания моего pdf?

1 Ответ

0 голосов
/ 23 января 2019

Конечно, метод извлечения не может сохранить сеанс, он не открывается в вашем браузере без головы.

К сожалению, загрузка pdf не поддерживается на кукловоде: https://github.com/GoogleChrome/puppeteer/issues/1248

В общемДля входа в систему вам нужно перейти (loginPage) и затем перейти на нужную страницу, куки-файлы управляются внутри объекта страницы.

...