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

Puppeteer配置代理IP无效问题求助

解决Puppeteer连接antibotbrowser后代理不生效的问题

问题根源

你用antibotbrowser.startbrowser()启动浏览器后,再通过puppeteer.connect()传入--proxy-server参数是无效的——connect方法的args仅适用于启动新浏览器实例,对已运行的浏览器进程不产生作用。代理必须在启动浏览器时就配置好。

修复步骤

  1. 在antibotbrowser启动时注入代理参数:调用antibotbrowser.startbrowser()时,传入包含代理配置的启动参数。
  2. 完善代理测试逻辑:给testProxyConnection添加错误捕获,确保代理测试失败时能返回false,避免死循环。
  3. 修复变量声明问题:switchProxy中的proxy和testPassed未声明,需添加let关键字。
  4. 修正拼写错误:原代码中antibrowser.websokcet应为antibrowser.websocket,否则无法正常连接浏览器。

修改后的完整代码

antibotbrowser
puppeteer-extra
puppeteer-extra-plugin-stealth
axios
const axios = require('axios');
const puppeteer = require('puppeteer-extra');
const puppeteerExtraPluginStealth = require('puppeteer-extra-plugin-stealth');

async function switchProxy(proxies) { 
    let testPassed = false;
    let proxy;
    while (!testPassed && proxies.length > 0) {
        proxy = proxies[Math.floor(Math.random() * proxies.length)];
        testPassed = await testProxyConnection(proxy);
    }
    return proxy;
}

async function testProxyConnection(proxy) {
    try {
        const protocol = proxy.protocol === 2 ? 'https' : 'http';
        
        const response = await axios.get('https://httpbin.org/ip', {
            proxy: {
                host: proxy.ip,
                port: proxy.port,
                protocol: protocol
            },
            timeout: 10000
        });

        console.log(`测试代理有效:${response.data.origin}`);
        return true;
    } catch (err) {
        console.log(`代理无效,跳过:${proxy.ip}:${proxy.port}`);
        return false;
    }
}

async function createBrowserWithProxyAndAntibot(proxy) {
    puppeteer.use(puppeteerExtraPluginStealth());
    // 启动浏览器时直接传入代理参数
    const antibrowser = await antibotbrowser.startbrowser({
        args: [
            `--proxy-server=${proxy.protocol === 2 ? 'https' : 'http'}://${proxy.ip}:${proxy.port}`,
            '--disable-features=site-per-process',
            '--no-sandbox',
            '--disable-setuid-sandbox',
        ],
        headless: false
    });

    const browser = await puppeteer.connect({
        browserWSEndpoint: antibrowser.websocket,
        headless: false,
    });

    const page = await browser.newPage();

    // 检查页面IP
    const checkIP = await page.goto('https://httpbin.org/ip');
    const ipResult = await checkIP.json();
    console.log(`页面当前IP: ${ipResult.origin}`);

    return { browser, page };
} 

(async () => {
    const proxies = await fetchProxiesFromAPI();
    const proxy = await switchProxy(proxies);  

    if (!proxy) {
        console.log("没有可用的代理");
        return;
    }

    const { browser, page } = await createBrowserWithProxyAndAntibot(proxy);

    // 后续操作...

})();

额外注意事项

  • 免费代理稳定性差,建议使用付费代理服务提高成功率。
  • 若代理需要账号密码,需添加--proxy-auth=用户名:密码到启动参数中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:50:18