如何保存cookies并将其加载到另一个木偶师会话中?
在下面的示例中,我必须两次请求相同的网页,才能在第一次请求中获取cookies,并在第二次请求中使用它 有谁能告诉我在一个木偶游戏会话中保存cookies并在另一个会话中加载cookies的代码,这样就不需要在第二个会话中两次请求相同的网页了?谢谢如何保存cookies并将其加载到另一个木偶师会话中?,cookies,puppeteer,Cookies,Puppeteer,在下面的示例中,我必须两次请求相同的网页,才能在第一次请求中获取cookies,并在第二次请求中使用它 有谁能告诉我在一个木偶游戏会话中保存cookies并在另一个会话中加载cookies的代码,这样就不需要在第二个会话中两次请求相同的网页了?谢谢 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = awa
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2');
await page.goto('https://www.genecards.org/cgi-bin/carddisp.pl?gene=BSCL2');
const linkHandlers = await page.$x("//div[@id='enhancers']//a[@data-track-event='Table See-All']");
if (linkHandlers.length > 0) {
const [response] = await Promise.all([
page.waitForResponse(response => response.url().includes('/gene/api/data/Enhancers')),
linkHandlers[0].click()
]);
const resp_text = await response.text();
console.log(resp_text);
} else {
throw new Error("Link not found");
}
await browser.close();
})();
要保存cookies,您可以使用函数重用cookies,您可以使用函数 将cookies保存到磁盘
const fs=require('fs')。承诺;
// ... 木偶演员代码
const cookies=等待页面。cookies();
等待fs.writeFile('./cookies.json',json.stringify(cookies,null,2));
这将读取当前URL的cookie,并通过JSON.stringify
和fs.writeFile
将它们保存到磁盘
重用cookies
const fs=require('fs')。承诺;
// ... 木偶演员代码
const cookiesString=wait fs.readFile('./cookies.json');
const cookies=JSON.parse(CookieString);
等待page.setCookie(…cookies);
要重用cookie,请通过
fs.readFile
从磁盘读取文件。然后通过JSON.parse
解析文件内容。之后,您必须调用page.setCookie
函数。由于函数期望Cookie作为参数(而不是作为Cookie的一个数组参数),因此我们依赖,它允许使用给定的Cookie
数组作为单个参数调用setCookie
函数。谢谢,但不幸的是,这似乎不适用于最新版本的Puppeter。fs.writeFileSync
导致:错误:TypeError:无法读取未定义的属性“writeFileSync”
您有什么建议如何解决此问题吗?实际上,我创建了一个可以解决此问题的。如果我用节点运行它,我会得到同样的错误。@RocketNuts谢谢你的提示,我在那里犯了一个错误,把旧的fs-API和新的promissions-API混在了一起。代码现在已经更新了。谢谢,在进行实验的同时,我也注意到,当我刚刚执行const fs=require('fs')时,它似乎起了作用代码>位于顶部(不带.promises
)。我甚至不知道那是什么意思。是否有理由选择writeFile
而不是writeFileSync
或者反之亦然?这不会保存或恢复HttpOnly cookies,因此它不是保持会话等的完整解决方案。