自动化框架 集成

如何在 PUPPETEER 中使用 PROXY POLAND

使用专用 4G/5G 手机代理进行无头 Chrome 自动化的 Node.js 代码示例。

审核:
概述

为何选择 PUPPETEER + PROXY POLAND

Puppeteer 是 Google 用于控制无头 Chrome 的官方 Node.js 库。结合 Proxy Poland 的专用 4G/5G 手机代理,Puppeteer 成为绕过最积极反机器人系统的强大网络爬取、测试和自动化工具。

Puppeteer 配置应使用生产环境相同的代理协议、浏览器配置、目标网站和账号流程来测试。扩展前请检查可见 IP、DNS 路由、ASN、会话保持、轮换行为、登录状态、HTTP、SOCKS5、OpenVPN、VLESS 和控制台状态是否一致。

这页是中文集成指南,说明如何把移动代理接入浏览器、脚本、反检测工具或自动化框架。重点检查代理主机、端口、协议、认证、DNS 路由、出口 IP、会话保持和轮换行为是否与工具设置一致。

完成配置后不要直接扩大任务量。先用小流量验证目标网站响应、账号登录状态、浏览器指纹、地理位置、运营商网络、超时、重试和错误码,再决定是否进入生产工作流。

分步指南

设置说明

  1. 01

    安装 Puppeteer

    在您的 Node.js 项目中安装 Puppeteer:

    npm install puppeteer
    # or for minimal install:
    npm install puppeteer-core
  2. 02

    获取代理凭据

    在 proxypoland.com 注册并从控制台获取您的代理 IP、端口、用户名和密码。

  3. 03

    基本代理设置

    使用 SOCKS5 代理启动 Puppeteer:

    const puppeteer = require('puppeteer');
    
    const browser = await puppeteer.launch({
      args: [
        '--proxy-server=socks5://proxy-ip:port',
        '--no-sandbox',
      ],
    });
    
    const page = await browser.newPage();
    
    // Authenticate with proxy
    await page.authenticate({
      username: 'your-username',
      password: 'your-password',
    });
    
    await page.goto('https://httpbin.org/ip');
    const content = await page.content();
    console.log(content);
    
    await browser.close();
  4. 04

    HTTP 代理替代方案

    使用带认证的 HTTP 代理:

    const browser = await puppeteer.launch({
      args: ['--proxy-server=http://proxy-ip:port'],
    });
    
    const page = await browser.newPage();
    await page.authenticate({
      username: 'your-username',
      password: 'your-password',
    });
    
    await page.goto('https://example.com');
  5. 05

    隐身模式 + 代理

    使用 puppeteer-extra 进行隐身浏览:

    const puppeteer = require('puppeteer-extra');
    const StealthPlugin =
      require('puppeteer-extra-plugin-stealth');
    puppeteer.use(StealthPlugin());
    
    const browser = await puppeteer.launch({
      args: ['--proxy-server=socks5://proxy-ip:port'],
      headless: 'new',
    });
    
    const page = await browser.newPage();
    await page.authenticate({
      username: 'user', password: 'pass'
    });
    
    // Now scrape with stealth + mobile proxy
    await page.goto('https://target-site.com');
  6. 06

    页面之间的 IP 轮换

    使用 Proxy Poland 的 API 轮换 IP:

    const axios = require('axios');
    
    async function rotateIP() {
      const response = await axios.get(
        'https://proxy-ip:port/rotate',
        { auth: { username: 'user', password: 'pass' } }
      );
      console.log('New IP:', response.data);
    }
    
    // Rotate between scraping sessions
    await rotateIP();
    await page.goto('https://next-target.com');
  7. 07

    验证代理是否正常工作

    快速测试以确认代理连接:

    const page = await browser.newPage();
    await page.authenticate({
      username: 'user', password: 'pass'
    });
    await page.goto('https://httpbin.org/ip');
    const ip = await page.$eval(
      'pre', el => el.textContent
    );
    console.log('Proxy IP:', JSON.parse(ip).origin);
    // Should show Polish mobile IP
专家建议

专业提示

对具有高级机器人检测的网站使用 puppeteer-extra-plugin-stealth

将视口设置为手机尺寸以进行手机特定爬取

实施请求拦截以阻止不必要的资源(图片、CSS)以加快爬取速度

操作后使用 page.waitForNavigation() 确保页面通过代理完全加载

对于高并发,使用不同代理启动多个浏览器实例

常见用例

适用于以下场景

网络爬取和数据提取使用真实 IP 进行自动化测试截图服务PDF 生成性能监控

FAQ

01Puppeteer 比 Selenium 更适合与代理一起使用吗?+

Puppeteer 的原生代理支持比 Selenium 更易于配置。它还有内置的 page.authenticate() 用于代理认证。对于 Node.js 项目,Puppeteer 通常是更好的选择。

02我可以在无头模式下使用这些代理运行 Puppeteer 吗?+

可以。在启动选项中使用 headless: 'new'。代理在无头和有头模式下工作方式完全相同。对于隐身,添加 puppeteer-extra-plugin-stealth。

03通过手机代理爬取时如何处理验证码?+

手机 IP 显著减少验证码频率。大多数网站向手机运营商 IP 提供更少的验证码。对于剩余的验证码,集成如 2Captcha 的解决服务或使用隐身插件。

04我可以使用不同代理运行多个 Puppeteer 实例吗?+

可以。在 args 中为每个浏览器实例启动带有不同 Proxy Poland 代理的单独浏览器实例。这非常适合带 IP 隔离的并行爬取。

05Playwright 也可以与这些代理一起工作吗?+

可以。Playwright 有内置代理支持:browser.launch({ proxy: { server: 'socks5://ip:端口', username: '用户', password: '密码' } })。相同的代理凭据适用于 Puppeteer 和 Playwright。

06设置Proxy Poland的Puppeteer launchOptions参数是什么?+

puppeteer.launch({args: ['--proxy-server=socks5://host:port']})。对于认证代理,--proxy-server不接受凭据——使用proxy-chain:const upstream = `socks5://user:pass@host:port`; const proxy = await proxyChain.anonymizeProxy(upstream); const browser = await puppeteer.launch({args: [`--proxy-server=${proxy}`]})。这样可以在不修改Chrome启动参数的情况下使用认证的SOCKS5。

07page.authenticate如何处理Proxy Poland的user:pass?+

page.authenticate({username, password})通过自动注入Basic凭据来响应HTTP 407 Proxy-Authentication-Required挑战。这适用于HTTP/HTTPS代理(不适用于SOCKS5)。调用page.authenticate一次,它会在整个页面生命周期内持续有效。对于SOCKS5认证,改用proxy-chain,因为Puppeteer/Chrome不通过407流程处理SOCKS5认证。

08我可以使用page.setRequestInterception有选择地通过Proxy Poland路由吗?+

page.setRequestInterception(true)允许您中止、继续或修改请求,但不能在飞行中将其重新路由到不同的代理——Chromium的代理设置在启动时就确定了,无法在每个请求基础上更改。对于选择性路由(某些域名通过代理,其他直连),使用PAC文件:--proxy-pac-url=file://path/to/proxy.pac,并在PAC的FindProxyForURL函数中编写路由逻辑。

09proxy-chain如何帮助处理Proxy Poland认证?+

proxy-chain(npm)在127.0.0.1:random_port上启动一个本地匿名代理,转发到您的认证上游。将其与Puppeteer一起使用:const localProxy = await proxyChain.anonymizeProxy('socks5://user:pass@host:port'),然后puppeteer.launch({args: ['--proxy-server=' + localProxy]})。完成后调用proxyChain.closeAnonymizedProxy(localProxy, true)。这种模式可以绕过Chromium对--proxy-server标志中凭据的限制。

10puppeteer-extra的stealth-plugin与Proxy Poland是否冲突?+

不冲突——puppeteer-extra-plugin-stealth修补navigator/headless指纹;它在JS层面操作,与代理配置正交。将两者组合使用:const browser = await puppeteer.launch({args: ['--proxy-server=...']}); 然后应用stealth插件。代理处理网络层;stealth处理浏览器指纹层。两者相互补充,用于绕过Cloudflare等目标站点。

11如何在Puppeteer爬虫中轮换Proxy Poland IP?+

三种模式:(1) 调用/rotate API并保持相同浏览器(IP在下面更改)——最简单,但浏览器会话历史保留;(2) 每N个请求启动一个新浏览器,切换到不同的代理端点——更干净的会话隔离;(3) 对于最干净的轮换,在新浏览器上下文之间调用/rotate,使每个上下文在不同的Polish IP上开始。对于账号管理,使用(3);对于爬取,(1)或(2)取决于目标检测严格程度。

12Puppeteer与Playwright配合Proxy Poland使用——哪个集成更简洁?+

Playwright处理认证代理更简洁:browser.newContext({proxy: {server: 'http://host:port', username, password}'})原生工作,无需proxy-chain。Puppeteer需要proxy-chain来进行认证的SOCKS5/HTTP代理,增加了额外的依赖和复杂性。对于新项目,如果代理集成是主要考虑因素,推荐使用Playwright;对于现有的Puppeteer代码库,proxy-chain解决方案是可靠的。

立即试用免费 1 小时

在 2 分钟内使用专用 4G/5G 手机代理设置 Puppeteer。无需信用卡。试用期间完整代理访问。

无承诺 · 随时取消 · 2 分钟内设置