了解 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}")
评论 (0)
这里还没有评论,你可以成为第一个评论者!