You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么结合Apify使用Puppeteer-Extra时solveRecaptchas()不是有效函数?

问题根因

你定义了用于挂载验证码插件的addPlugins函数,但全程没有调用该函数,因此puppeteer-extra没有实际加载recaptcha插件,自然不会向page实例注入solveRecaptchas方法,调用时就会报方法不存在的错误。

修复方案

  1. 执行addPlugins函数完成插件加载,建议在初始化爬虫前调用即可。
  2. 你注释掉的StealthPlugin建议开启,可降低被目标站点反爬识别的概率。

修正后的核心代码示例:

/**************************************/
/*          Setup requires            */
/**************************************/
const Apify = require("apify");
const puppeteer = require("puppeteer-extra");
const PuppeteerExtraPluginRecaptcha = require("puppeteer-extra-plugin-recaptcha");
const StealthPlugin = require("puppeteer-extra-plugin-stealth");

/**************************************/
/*          Use Recaptcha             */
/**************************************/
function addPlugins() {
  // 加载隐身插件
  puppeteer.use(StealthPlugin());
  const captchaOptions = {
    provider: {
      id: "2captcha",
      token: "my-2captcha-api-key",
    },
    solveInactiveChallenges: true,
    visualFeedback: true,
  };
  puppeteer.use(PuppeteerExtraPluginRecaptcha(captchaOptions));
}

/**************************************/
/*           Through Apify?           */
/**************************************/
Apify.main(
    async () => {
    // 新增:调用函数完成插件加载
    addPlugins();

    /**************************************/
    /*             Cue up URL             */
    /**************************************/
    const requestQueue = await Apify.openRequestQueue();
    await requestQueue.addRequest(
        {
            url: "https://www.google.com/recaptcha/api2/demo",
        }
    );

    /**************************************/
    /*         Puppeteer Crawler          */
    /**************************************/
    const crawler = new Apify.PuppeteerCrawler(
        {
            requestQueue,
            launchContext: {
            launcher: puppeteer,
            launchOptions: {
                devtools: false,
                headless: false,
                ignoreHTTPSErrors: true,
                defaultViewport: { width: 1366, height: 768 },
                timeout: 60 * 1000,
                args: [
                "--no-sandbox",
                "--disable-web-security",
                "--disable-setuid-sandbox",
                "--disable-features=IsolateOrigins,site-per-process",
                "--flag-switches-begin --disable-site-isolation-trials --flag-switches-end",
                ],
            },
        },
        handlePageFunction: async ({ request, page }) => {
            // solve captcha (if one exists)
            await page.solveRecaptchas();
            
            // additional code
        },
    });

    await crawler.run();
    }
);

其他注意事项

如果修复后仍有报错,可检查以下两点:

  • 确保puppeteer、puppeteer-extra、puppeteer-extra-plugin-recaptcha三者的版本兼容,建议升级到最新稳定版
  • 确认你填写的2captcha API密钥有效,且账号内有足够的余额用于验证码识别

内容的提问来源于stack exchange,提问作者Robert Andrews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:54:04