当前位置:首页>python>如何在 Python 中将代理与 SeleniumBase 一起使用

如何在 Python 中将代理与 SeleniumBase 一起使用

  • 2026-10-04 10:24:16
如何在 Python 中将代理与 SeleniumBase 一起使用

如何在 Python 中将代理与 SeleniumBase 一起使用

在本指南中,我将说明如何在 Python 中为 SeleniumBase 设置代理。通过这种方法,你的网页抓取会变得更高效、更可靠,让你能够绕过常见障碍,并顺利收集所需数据。

什么是 SeleniumBase?

SeleniumBase 是一个构建在 Selenium WebDriver 之上的框架,提供增强的网页自动化功能。它通过提供用于管理浏览器交互的工具,简化浏览器自动化、测试和网页抓取。它非常适合创建端到端测试套件,以及执行涉及复杂浏览器交互的网页抓取任务,例如处理弹窗、表单提交和动态内容加载。

为什么在网页抓取中使用代理?

网站通常会限制单个 IP 在短时间内可发出的请求数量。如果你的脚本发送了过多请求,网站可能会屏蔽该 IP 地址。使用代理可以通过以下方式帮助你避免这种情况:

  1. IP 轮换: 定期更换 IP 地址,让请求看起来来自不同来源。

  2. 地理定位: 使用来自特定位置的代理,访问仅限某些地区的内容。

  3. 匿名性: 隐藏你的 IP 地址,避免被标记为机器人。

与 SeleniumBase 搭配使用的最佳代理服务

知道如何在 SeleniumBase 中设置代理还不够。我想在这里介绍一些最可靠的代理服务,重点是住宅代理。住宅代理让你可以轻松管理轮换,并且是网页抓取中最安全的 IP 类型。

  • Bright Data — 最大的提供商、精准定位、代理管理工具,起价 $5.04/GB

  • Oxylabs — 庞大的网络、精准定位、专属支持,起价 $4/GB

  • Smartproxy — 大型代理池、广泛地区覆盖、自助服务,起价 $2.2/GB

  • Webshare — 自定义选项、自助服务、价格实惠,起价 $4.5/GB

  • SOAX — 灵活轮换、精准定位、24/7 支持,起价 $2.2/GB

可在这里阅读更详细的内容。我与这些提供商均无关联 :)

设置 SeleniumBase

在使用 SeleniumBase 之前,请确保你的机器上已安装 Python。按照以下步骤设置 SeleniumBase:

通过 pip 安装 SeleniumBase:

pip install seleniumbase

安装网页浏览器驱动。

对于 Chrome,你可以安装 ChromeDriver:

seleniumbase install chromedriver

验证安装:

运行一个简单命令,检查 SeleniumBase 是否已正确安装。

sbase verify

在 SeleniumBase 中使用代理

要配置 SeleniumBase 代理,你必须将代理详细信息传递给浏览器会话。SeleniumBase 允许通过修改浏览器选项来设置代理。下面是以不同方式配置代理的步骤:

为单个请求设置代理

你可以在设置浏览器时指定代理服务器,为一次性请求配置代理。下面是一个基本示例:

from seleniumbase import BaseCaseclass ProxyTest(BaseCase):def test_with_proxy(self):# Specify the proxy serverproxy = "http://your_proxy_ip:port"# Add proxy optionschrome_options = {"proxy": {"httpProxy": proxy,"sslProxy": proxy,"proxyType": "MANUAL",}}# Open the browser with proxy settingsself.open("http://example.com", chrome_options=chrome_options)# Verify the page title or other actionsself.assert_title("Example Domain")

将“your_proxy_ip:port”替换为你的代理服务器 IP 地址和端口。

动态代理

对于较大的抓取项目,你可能需要轮换代理以避免被检测。下面介绍如何使用代理列表,并在每次请求之间切换代理:

import randomfrom seleniumbase import BaseCaseclass RotatingProxyTest(BaseCase):def test_with_rotating_proxies(self):# List of proxiesproxies = ["http://proxy1_ip:port","http://proxy2_ip:port","http://proxy3_ip:port"]# Choose a random proxy from the listproxy = random.choice(proxies)# Add proxy optionschrome_options = {"proxy": {"httpProxy": proxy,"sslProxy": proxy,"proxyType": "MANUAL",}}# Open the browser with proxy settingsself.open("http://example.com", chrome_options=chrome_options)# Perform actions as neededself.assert_title("Example Domain")

采用这种方法,脚本会为每次请求从列表中选择不同的代理,从而帮助最大限度降低被检测的风险。

使用受身份验证保护的代理

如果你的代理需要身份验证,则必须在使用代理之前设置凭据。下面是操作方法:

from selenium.webdriver import ChromeOptionsfrom seleniumbase import BaseCaseclass AuthProxyTest(BaseCase):def test_with_auth_proxy(self):# Set proxy and credentialsproxy = "proxy_ip:port"username = "your_username"password = "your_password"# Setup Chrome optionschrome_options = ChromeOptions()chrome_options.add_argument(f' - proxy-server={proxy}')# Bypass proxy authentication using a Chrome extensionchrome_options.add_extension('proxy_auth_plugin.zip')# Open browser with optionsself.driver = self.get_new_driver(chrome_options=chrome_options)self.open("http://example.com")# Check some conditionself.assert_title("Example Domain")

上述代码使用 Chrome 扩展来处理代理身份验证,这需要创建一个包含凭据的扩展文件(proxy_auth_plugin.zip)。

将代理与 SeleniumBase 一起使用时的挑战和最佳实践

使用代理并非没有挑战。以下是一些在网页抓取中充分利用代理的技巧和策略:

  1. 避免使用免费代理: 免费代理通常不可靠、速度慢,并且可能已经被网站标记。投资信誉良好的付费代理服务,以获得更好的结果。

  2. 监控代理健康状况: 定期检查代理状态,确保它们按预期工作。

  3. 随机化请求时间: 在请求之间添加随机延迟,而不是一次性全部发送,以降低被屏蔽的风险。

  4. 谨慎使用无头模式: 虽然使用无头模式可能会加快抓取速度,但也可能增加被标记为机器人的可能性。请谨慎使用,并将其与用户代理伪装等其他技术结合起来。

  5. 处理 CAPTCHA 挑战: 如果网站显示 CAPTCHA 挑战,你可能需要集成 CAPTCHA 破解服务。

使用代理进行抓取的其他技术

将代理使用与其他技术结合起来,可以让你的抓取工作更高效。以下是一些高级策略:

  • 用户代理伪装: 随机化 user-agent 字符串,以模拟来自不同浏览器或设备的请求。

  • 会话管理: 有效管理 Cookie 和会话,避免触发反机器人机制。

  • 无头浏览器设置: 使用无头浏览器在不显示图形界面的情况下进行抓取,但要修改浏览器指纹设置以避免被检测。

结论

代理是绕过反抓取措施并高效收集数据的强大工具。使用 SeleniumBase 配置代理非常直接,无论你是需要用于测试的单个代理,还是用于大规模抓取的轮换系统。请记住遵循最佳实践,并持续监控代理性能。将代理与用户代理伪装、会话管理等技术结合起来,可以最大限度减少障碍,并收集你所需的数据。

可在这里了解用于网页抓取的用户代理。还有其他问题吗?欢迎在评论中告诉我!感谢阅读 :)

对其他网页抓取指南感兴趣?

  • 使用 Scrapy 进行网页抓取

  • 使用 Selenium 进行网页抓取

  • 用于网页抓取的 JavaScript 与 Python 对比

  • 使用 Python lxml 进行网页抓取

  • 使用 Excel 进行网页抓取

  • 使用 Python 进行网页抓取

  • 使用 C# 进行网页抓取

  • 抓取 Amazon 畅销商品

  • 使用 Google Sheets 进行网页抓取

  • 为网页抓取绕过 Cloudflare

  • 请求限速指南

如需阅读其他精彩文章,请访问我的个人主页 — Data Journal ❤️

最新文章

随机文章