我正在尝试使用我的凭据进入网站并使用 puppeter 下载 pdf。我使用 puppeteer 获得了 pdf url,但现在我想使用 node-fetch 来访问该页面。要获取 pdf 页面,我需要在选项中包含会话数据,但我不知道我是否以正确的方式进行操作。
我尝试使用 'credentials: 'include',使用 page.cookies 获取 cookie,并在 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')));
当我以 txt 格式打开 test4 时,我可以看到登录页面 html,这意味着我失去了会话。如何保持会话以下载我的 pdf?