我在尝试着:
- 访问初始化会话的页面
- 将会话存储在 JSON 对象中
- 访问同一页面,该页面现在应该可以识别现有会话
我尝试的实现如下:
import puppeteer from 'puppeteer';
const createSession = async (browser, startUrl) => {
const page = await browser.newPage();
await page.goto(startUrl);
await page.waitForSelector('#submit');
const cookies = await page.cookies();
const url = await page.url();
return {
cookies,
url
};
};
const useSession = async (browser, session) => {
const page = await browser.newPage();
for (const cookie of session.cookies) {
await page.setCookie(cookie);
}
await page.goto(session.url);
};
const run = async () => {
const browser = await puppeteer.launch({
headless: false
});
const session = await createSession(browser, 'http://foo.com/');
// The session has been established
await useSession(browser, session);
await useSession(browser, session);
};
run();
createSession
用于捕获加载页面的cookies。useSession
预计将使用现有的 cookie 加载页面。
但是,这不起作用——session.url
页面无法识别会话。似乎并非所有 cookie 都以这种方式被捕获。