我正在构建一个 PuppeteerCrawler,我必须登录某个网站。但该网站不允许多个浏览器同时使用同一个帐户。根据我的理解, session 被持久化到单个IP,但是我怎样才能使该 session 也独占于浏览器实例呢?
我还使用 10 个输入用户通过以下函数进行轮换。
exports.authenticate = async (page) => {
const { users } = await Apify.getInput();
const user = Math.round(Math.random() * 10 );
let isLogged = await loggedCheck(page);
if (!isLogged) {
log.debug(`Cookies from cache didn't work, trying to login..`);
await page.type('input[name="email"]', users[user].username);
await page.type('input[name="password"]', users[user].password);
await page.click('input[name="submit"]');
isLogged = await loggedCheck(page);
}
if (!isLogged) {
throw new Error('Didn\'t work!');
}
};
最佳答案
默认情况下, session IP 是浏览器实例独有的,在 PuppeteerCrawler
中,可以使用 SessionPool
来管理它们
看看这个,应该会有帮助:https://sdk.apify.com/docs/guides/session-management
关于puppeteer - session 和并发以及它们之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61566730/