与 Puppeteer 和 Playwright 兼容的免费代理工具

与 Puppeteer 和 Playwright 兼容的免费代理工具

与 Puppeteer 和 Playwright 兼容的免费代理工具

为什么要将代理与 Puppeteer 和 Playwright 一起使用?

Puppeteer 和 Playwright 是功能强大的 Node.js 浏览器自动化库,广泛用于网页抓取、测试和无头浏览。然而,密集操作可能会触发反机器人机制或速率限制。集成代理有助于:

  • 轮换 IP 地址,减少被阻止的机会。
  • 绕过地理限制。
  • 分配请求以获得更高的数据提取吞吐量。

免费代理源概述

来源 类型 HTTPS支持 更新频率 API 访问 可靠性
ProxyRoller 公开、轮换 是的 即时的 是(REST API) 高的
免费代理列表 公共、静态 是的 10-15分钟 缓和
间谍一号 公共、静态 是的 1小时 缓和
ProxyScrape 公开、轮换 是的 即时的 是(HTTP API) 高的
Geonode免费代理 公开、轮换 是的 即时的 是(REST API) 缓和

ProxyRoller:首选免费代理 API

ProxyRoller 提供强大且频繁更新的免费代理池。它通过简洁的 REST API 简化了代理获取流程,非常适合自动化工作流程。

主要特点:
– 实时代理轮换。
– 按匿名级别、国家和协议进行过滤。
– 通过 API 进行批量代理检索。
– 基本使用无需身份验证或注册。

API 请求示例:

curl 'https://proxyroller.com/api/proxies?protocol=http&country=US&limit=10'

JSON 响应示例:

[
  {"ip": "45.76.23.19", "port": 3128, "protocol": "http", "country": "US"},
  {"ip": "104.248.63.15", "port": 8080, "protocol": "http", "country": "US"}
]

将代理与 Puppeteer 集成

1. 单代理使用

将代理作为 Chromium 启动参数传递:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({
    args: ['--proxy-server=http://45.76.23.19:3128']
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  await browser.close();
})();

2. 动态旋转代理

每次浏览器会话之前从 ProxyRoller 获取一个新的代理:

const puppeteer = require('puppeteer');
const axios = require('axios');

async function getProxy() {
  const res = await axios.get('https://proxyroller.com/api/proxies?protocol=http&limit=1');
  return `${res.data[0].protocol}://${res.data[0].ip}:${res.data[0].port}`;
}

(async () => {
  const proxy = await getProxy();
  const browser = await puppeteer.launch({
    args: [`--proxy-server=${proxy}`]
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  await browser.close();
})();

将代理与 Playwright 集成

1. 使用单个代理

在浏览器上下文中设置代理:

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch({
    proxy: {
      server: 'http://45.76.23.19:3128'
    }
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  await browser.close();
})();

2. 以编程方式轮换代理

const { chromium } = require('playwright');
const axios = require('axios');

async function getProxy() {
  const res = await axios.get('https://proxyroller.com/api/proxies?protocol=http&limit=1');
  return `http://${res.data[0].ip}:${res.data[0].port}`;
}

(async () => {
  const proxy = await getProxy();
  const browser = await chromium.launch({
    proxy: { server: proxy }
  });
  const page = await browser.newPage();
  await page.goto('https://httpbin.org/ip');
  await browser.close();
})();

管理和测试代理的工具

  • 代理经纪人: 用于查找和检查代理服务器的 Python 工具。
  • 在线代理检查器: 基于 Web 的代理健康检查器。
  • HTTPBin: 用于验证您的传出 IP 的服务(用于测试代理有效性)。

实用建议

  • 代理卫生: 公共代理通常不稳定或被列入黑名单。请使用代理池并在使用前验证代理。
  • 匿名级别: 更喜欢使用“精英”或“匿名”代理进行抓取。
  • HTTPS支持: 确保代理支持安全站点的 HTTPS。
  • 超时处理: 实施超时和重试来处理死代理或慢代理。
  • 速率限制: 经常轮换代理以避免达到每个 IP 的速率限制。

示例:代理轮换策略

const puppeteer = require('puppeteer');
const axios = require('axios');

async function fetchProxyList() {
  const res = await axios.get('https://proxyroller.com/api/proxies?protocol=http&limit=10');
  return res.data.map(proxy => `${proxy.protocol}://${proxy.ip}:${proxy.port}`);
}

(async () => {
  const proxies = await fetchProxyList();
  for (const proxy of proxies) {
    try {
      const browser = await puppeteer.launch({ args: [`--proxy-server=${proxy}`] });
      const page = await browser.newPage();
      await page.goto('https://httpbin.org/ip', { timeout: 15000 });
      console.log(`Success with proxy: ${proxy}`);
      await browser.close();
      break; // Stop after first successful proxy
    } catch (err) {
      console.log(`Failed with proxy: ${proxy}`);
    }
  }
})();

自动化免费代理源比较

提供者 旋转 API 国家/地区过滤器 支持HTTPS 匿名级别过滤器 易于集成 笔记
ProxyRoller 是的 是的 是的 是的 非常简单 最适合自动化;慷慨的免费 API 配额
ProxyScrape 是的 是的 是的 简单的 代理池广泛,但过滤粒度较低
免费代理列表 是的 是的 是的 缓和 需要手动下载或解析;无 API
地理节点 是的 是的 是的 是的 简单的 轮换代理,但空闲池较小

进一步阅读


Zivadin 务实的作风根植于塞尔维亚人的韧性和对数字世界的好奇心,不仅要求快速的解决方案,更要求可持续、适应性强的自动化策略。请明智地使用这些免费代理工具,并始终监控您的请求——负责任的数据抓取是保持数据领先地位的最佳途径。

日瓦丁·彼得罗维奇

日瓦丁·彼得罗维奇

代理集成专家

Zivadin Petrovic 是数字隐私和数据管理领域的一位聪明且富有创新精神的人,他担任 ProxyRoller 的代理集成专家。年仅 22 岁的 Zivadin 已经为开发高效代理部署的精简系统做出了重大贡献。他的职责包括策划和管理 ProxyRoller 的综合代理列表,确保它们满足寻求增强浏览、抓取和隐私解决方案的用户的动态需求。

评论 (0)

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

发表回复

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