如何在 Selenium 或 Puppeteer 中使用免费代理

如何在 Selenium 或 Puppeteer 中使用免费代理

了解 Web 自动化中的代理

代理服务器就像互联网的秘密特工,隐藏你的 IP 地址,让你能够巧妙地穿梭于数字世界。在网络自动化领域——Selenium 和 Puppeteer 等工具在浏览器后台翩翩起舞——代理服务器对于绕过速率限制、地理限制和监控至关重要。免费代理服务器虽然不稳定且短暂,但足以满足轻量级、非关键性的数据抓取或测试场景的需求。.

代理的类型及其特征

代理类型 匿名级别 支持的协议 典型用例 可靠性
HTTP 低至中等 HTTP、HTTPS 简单的网络爬虫 低的
SOCKS4/5 高的 SOCKS4,SOCKS5 复杂的协议,HTTPS 中等的
透明的 无(会泄露 IP 地址) HTTP、HTTPS 缓存,内部使用 非常低
精英/匿名 高的 HTTP、HTTPS 绕过地理封锁 中等的

如需免费代理列表,请浏览以下内容: https://free-proxy-list.net/ 或者 https://www.sslproxies.org/.

使用 Selenium (Python) 连接免费代理

1. 安装依赖项

pip安装硒

下载最新版本 ChromeDriver 与您的Chrome版本兼容。.

2. 在 Selenium 中配置代理

浏览器,这个数字傀儡,可以通过以下方式进行操控:

from selenium import webdriver from selenium.webdriver.chrome.options import Options proxy = "186.121.235.66:8080" # 替换为你的免费代理 options = Options() options.add_argument(f'--proxy-server=http://{proxy}') driver = webdriver.Chrome(options=options) driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()

表格:常用的 Chrome 代理开关

选项 描述
--proxy-server=http://IP:PORT 设置 HTTP 代理
--proxy-server=https=IP:PORT 设置 HTTPS 代理
--proxy-bypass-list=localhost;127.0.0.1 从代理中排除地址

3. 使用代理进行身份验证

免费且带身份验证功能的代理服务器非常罕见,但如果您碰巧遇到一个:

from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # 已认证代理需要 Chrome 扩展程序解决方法 from selenium.webdriver.common.by import By import zipfile proxy_host = 'proxy.example.com' proxy_port = 8000 proxy_user = 'user' proxy_pass = 'pass' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome 代理", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", " ", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] } } """ background_js = f""" var config = {{ mode: "fixed_servers", rules: {{ singleProxy: {{ scheme: "http", host: "{proxy_host}", port: parseInt({proxy_port}) }}, bypassList: ["localhost"] }} }}; chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}}); function callbackFn(details) {{ return {{ authCredentials: {{ username: "{proxy_user}", password: "{proxy_pass}" }} }}; }} chrome.webRequest.onAuthRequired.addListener( callbackFn, {{urls: [" "]}}, ['blocking'] ); """ # 创建代理扩展插件文件 pluginfile = 'proxy_auth_plugin.zip' with zipfile.ZipFile(pluginfile, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) chrome_options = Options() chrome_options.add_extension(pluginfile) driver = webdriver.Chrome(options=chrome_options) driver.get('https://httpbin.org/ip')

参考: Selenium 代理身份验证(GitHub Gist)

在 Puppeteer (Node.js) 中使用免费代理

1. 安装 Puppeteer

npm 安装 puppeteer

2. 使用代理启动 Puppeteer

让浏览器戴上新的面具:

const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://186.121.235.66:8080'] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();

3. 处理代理身份验证

当守门人要求提供凭证时:

const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://proxy.example.com:8000'] }); const page = await browser.newPage(); await page.authenticate({ username: 'user', password: 'pass' }); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();

4. Puppeteer 中的旋转代理

一场由转瞬即逝的身份构成的芭蕾舞,其编排方式如下:

const proxies = [ 'http://proxy1:port', 'http://proxy2:port', 'http://proxy3:port' ]; const puppeteer = require('puppeteer'); (async () => { 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'); const body = await page.content(); console.log(`Proxy: ${proxy}\n${body}\n`); await browser.close(); } })();

免费代理资源

姓名 网址 特征
免费代理列表 https://free-proxy-list.net/ 大型 HTTP/S 列表,已更新
SSL代理 https://www.sslproxies.org/ HTTPS代理,快速更新
ProxyScrape https://proxyscrape.com/free-proxy-list 多种协议
间谍一号 http://spys.one/en/ 高级过滤

最佳实践和局限性

  • 短暂的自然: 免费代理服务器经常会在毫无预兆的情况下消失;请使用诸如此类的工具监控它们的有效性。 代理检查器.
  • 速度和可靠性: 可能会出现延迟、超时和偶尔的死机情况。.
  • 安全: 切勿使用免费代理服务器登录敏感账户——中间人攻击潜伏在暗处。.
  • 法律和伦理方面的考量: 务必遵守 robots.txt 文件和服务条款。.

代理验证示例(Python)

在启动浏览器之前,请先测试代理服务器的运行状况:

import requests proxy = "186.121.235.66:8080" proxies = {"http": f"http://{proxy}", "https": f"http://{proxy}"} try: response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=5) print(response.json()) except Exception as e: print(f"代理失败:{e}")

资源链接

泰奥菲尔·博韦

泰奥菲尔·博韦

代理分析师

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

评论 (0)

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

发表回复

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