为何选择 PUPPETEER + PROXY POLAND
Puppeteer 是 Google 用于控制无头 Chrome 的官方 Node.js 库。结合 Proxy Poland 的专用 4G 手机代理,Puppeteer 成为绕过最积极反机器人系统的强大网络爬取、测试和自动化工具。
设置说明
安装 Puppeteer
在您的 Node.js 项目中安装 Puppeteer:
npm install puppeteer # or for minimal install: npm install puppeteer-core
获取代理凭据
在 proxypoland.com 注册并从控制台获取您的代理 IP、端口、用户名和密码。
基本代理设置
使用 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();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');隐身模式 + 代理
使用 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');页面之间的 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');验证代理是否正常工作
快速测试以确认代理连接:
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() 确保页面通过代理完全加载
对于高并发,使用不同代理启动多个浏览器实例
适用于以下场景
FAQ
Puppeteer 比 Selenium 更适合与代理一起使用吗?+
Puppeteer 的原生代理支持比 Selenium 更易于配置。它还有内置的 page.authenticate() 用于代理认证。对于 Node.js 项目,Puppeteer 通常是更好的选择。
我可以在无头模式下使用这些代理运行 Puppeteer 吗?+
可以。在启动选项中使用 headless: 'new'。代理在无头和有头模式下工作方式完全相同。对于隐身,添加 puppeteer-extra-plugin-stealth。
通过手机代理爬取时如何处理验证码?+
手机 IP 显著减少验证码频率。大多数网站向手机运营商 IP 提供更少的验证码。对于剩余的验证码,集成如 2Captcha 的解决服务或使用隐身插件。
我可以使用不同代理运行多个 Puppeteer 实例吗?+
可以。在 args 中为每个浏览器实例启动带有不同 Proxy Poland 代理的单独浏览器实例。这非常适合带 IP 隔离的并行爬取。
Playwright 也可以与这些代理一起工作吗?+
可以。Playwright 有内置代理支持:browser.launch({ proxy: { server: 'socks5://ip:端口', username: '用户', password: '密码' } })。相同的代理凭据适用于 Puppeteer 和 Playwright。