puppeteer - session 和并发以及它们之间的关系

标签 puppeteer apify

我正在构建一个 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/

相关文章:

javascript - Puppeteer:按类查找 iframe

javascript - 如何使用 Google App Script 在 Apify 中创建搜索词变量

javascript - 如何在 Apify web 中的 pageFunction 执行之间传递数据

javascript - Puppeteer $.eval 选择嵌套元素

javascript - Apify 抓取后如何重命名输出文件?

javascript - 使用新的 proxyUrl 重试失败的页面

javascript - 如何计算 HTML 元素内容的可见高度和宽度?

javascript - 使用 Puppeteer 下载文件时 Chrome 下载错误

javascript - 使用 chrome headless 制作 PDF (puppeteer)

node.js - headless 浏览器和 Curl 哪个性能更快?