如何在 Puppeteer 中使用免费代理

如何在 Puppeteer 中使用免费代理

理解 Puppeteer 环境中的代理

Puppeteer,这套 Chrome 的木偶戏工具包,优雅地在数字舞台上旋转——但有时它的舞蹈必须披上一件斗篷,一个面具:代理。免费代理,这些散布在网络上的昙花一现的幽灵,可以保护你的 IP 地址或解锁受区域限制的内容。但是,就像互联网这片宝地里的所有礼物一样,它们是双刃剑——脆弱、通常不可靠,有时对粗心大意的人来说就像海妖之歌。

表 1:免费代理类型及其优缺点

代理类型 描述 优点 缺点
HTTP 仅路由 HTTP 流量 简单、广泛支持 没有HTTPS,安全性较低
HTTPS/SSL 使用 SSL/TLS 保护 HTTP 流量 安全、加密 有时速度较慢,更为罕见
SOCKS4/5 路由任何流量(TCP),而不仅仅是 HTTP 多才多艺,匿名 Puppeteer 需要额外的配置
透明的 向目标服务器透露你的 IP 容易找到 不匿名
匿名的 隐藏您的 IP,但标识为代理 基本隐私 可能仍会被阻止
精英/高级匿名者 隐藏您的 IP,不识别为代理 最佳隐私 最难找到

步骤 1:获取免费代理

让我们从源头开始:整理一份代理列表。许多在线聚合器,例如 免费代理列表,列出 IP 和端口表,如下所示:

IP地址 端口 协议 匿名 国家 195.154.161.130 8080 HTTP Elite FR 103.216.82.198 6667 HTTPS 匿名 IN

对于勇敢者,建议自动执行代理检索和验证 - 以免您的脚本偶然发现一个无效地址并在数字绝望中崩溃。

步骤 2:配置 Puppeteer 使用代理

咒语简单,但魔法精准。傀儡师接受 --代理服务器 浏览器启动时的参数:

const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=195.154.161.130:8080'] // 替换为你的代理 }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); console.log(await page.content()); await browser.close(); })();

就这样,木偶在新的面具后面跳舞。

步骤 3:身份验证——代理凭证的仪式

有些代理需要提供用户名和密码。Puppeteer,这位乐于助人的指挥家,可以通过以下方式提供这些信息: 页面验证:

const browser = await puppeteer.launch({ args: ['--proxy-server=proxy.example.com:3128'] }); const page = await browser.newPage(); await page.authenticate({ username: 'myuser', password: 'mypassword' }); await page.goto('https://httpbin.org/ip');

在您第一次导航之前调用此功能 - 以免守门人禁止您进入。

步骤 4:旋转阴影 - 使用多个代理

依赖单一代理是自大狂妄之举;明智的做法是精心安排轮换。以下是一个极简的编排方案,循环使用一系列代理:

const proxies = [ '195.154.161.130:8080', '103.216.82.198:6667', // ... 更多代理 ]; for (const proxy of proxies) { const browser = await puppeteer.launch({ args: [`--proxy-server=${proxy}`] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); console.log(`Proxy ${proxy}:`, await page.content()); await browser.close(); }

对于更复杂的芭蕾舞,请考虑随机化、健康检查和错误恢复。

步骤5:测试和验证代理有效性

代理人的承诺就像仲夏的梦一样转瞬即逝。信任之前务必先测试:

  • 使用类似端点 https://httpbin.org/ip 或者 https://api.ipify.org 确认你的IP地址。
  • 观察响应时间——免费代理通常反应迟缓或反复无常。
  • 在脚本中实现超时和重试。

表 2:代理验证清单

测试 Puppeteer 实现示例
IP变更 访问 https://httpbin.org/ip 并解析响应
HTTP(S) 支持 尝试 HTTP 和 HTTPS URL
延迟 措施 日期.now() 导航前后
块检测 检查响应中的 HTTP 403/429 或 CAPTCHA
代理认证 如果需要,可以使用/不使用凭证进行测试

步骤6:处理代理故障和错误恢复

这条道路充满危险;你的脚本必须具有弹性:

尝试 { await page.goto('https://example.com', {timeout: 30000}); } catch (error) { console.log('代理失败:', proxy, error.message); // 可选,使用新的代理重试 }

如果代理反复失败,请考虑自动从池中删除代理,以避免无限循环。

安全与道德思考

免费代理就像野花一样——美丽动人,但有时也含有毒素。切勿通过不受信任的代理发送敏感数据;嗅探器可能潜伏在另一端。仅用于公共或非敏感浏览。始终秉承法国哲学家的精神,尊重 robots.txt 文件和数字公共资源。

表 3:免费代理与付费代理

方面 免费代理 付费代理
可靠性 低,经常离线 保证高正常运行时间
速度 变化多端,通常进展缓慢 快速、一致
匿名 值得怀疑 强大、可配置
安全 不受信任,有风险 值得信赖,提供支持
成本 自由的 订阅或按次付费
长寿 短暂的 长期、稳定

附录:自动获取代理列表

自动化程序的诗意触感:每天用简单的方式获取新鲜的代理 axios 请求并解析 再见:

const axios = require('axios'); const cheerio = require('cheerio'); 异步函数 fetchProxies() { const res = await axios.get('https://free-proxy-list.net/'); const $ = cheerio.load(res.data); const proxies = []; $('#proxylisttable tbody tr').each((i, row) => { const cols = $(row).find('td'); const ip = $(cols[0]).text(); const port = $(cols[1]).text(); const https = $(cols[6]).text() === 'yes'; proxies.push(`${ip}:${port}`); }); 返回代理;}

让您的脚本每天早晨从代理草地吸入最新鲜的空气,并以微妙和优雅的方式呼出其网络自动化。

泰奥菲尔·博韦

泰奥菲尔·博韦

代理分析师

21 岁的 Théophile Beauvais 是 ProxyMist 的代理分析师,他专门负责整理和更新来自世界各地的代理服务器综合列表。凭借与生俱来的技术和网络安全天赋,Théophile 已成为团队中不可或缺的一员,确保向全球用户免费提供可靠的 SOCKS、HTTP、精英和匿名代理服务器。Théophile 在风景如画的里昂市出生和长大,从小就对数字隐私和创新充满热情。

评论 (0)

这里还没有评论,你可以成为第一个评论者!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注