如何使用 SeleniumBase 代理

如何在 Python 中使用 SeleniumBase 代理

在本指南中,我将介绍如何使用 SeleniumBase 在 Python 中。有了这种方法,您的网络搜索将变得更加高效和可靠,让您可以绕过常见的障碍,顺利收集到所需的数据。

什么是 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 - 灵活轮换、精确定位、全天候支持,起价 $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 BaseCase
class ProxyTest(BaseCase):
def test_with_proxy(self):
# Specify the proxy server
proxy = "http://your_proxy_ip:port"
# Add proxy options
chrome_options = {
"proxy": {
"httpProxy": 代理,
"sslProxy": 代理,
"proxyType": "MANUAL",
}
}
# Open the browser with proxy settings
self.open("http://example.com", chrome_options=chrome_options)
# Verify the page title or other actions
self.assert_title("示例域名")

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

轮流代理

对于大型搜索项目,您可能需要轮换使用代理,以避免被发现。下面介绍了如何使用代理列表,并为每个请求在代理之间进行切换:

import random
from seleniumbase import BaseCase
class RotatingProxyTest(BaseCase):
def test_with_rotating_proxies(self):
# List of proxies
proxies = [
"http://proxy1_ip:port",
"http://proxy2_ip:port",
"http://proxy3_ip:port"
]
# Choose a random proxy from the list
proxy = random.choice(proxies)
# Add proxy options
chrome_options = {
"proxy": {
"httpProxy": 代理,
"sslProxy": 代理,
"proxyType": "MANUAL",
}
}
# Open the browser with proxy settings
self.open("http://example.com", chrome_options=chrome_options)
# Perform actions as needed
self.assert_title("示例域名")

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

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

如果您的代理需要身份验证,您必须在使用代理前设置凭证。具体方法如下:

from selenium.webdriver import ChromeOptions
from seleniumbase import BaseCase
class AuthProxyTest(BaseCase):
def test_with_auth_proxy(self):
# Set proxy and credentials
proxy = "proxy_ip:port"
username = "your_username"
password = "your_password"
# Setup Chrome options
chrome_options = ChromeOptions()
chrome_options.add_argument(f' - proxy-server={proxy}')
# Bypass proxy authentication using a Chrome extension
chrome_options.add_extension(proxy_auth_plugin.zip)
## Open browser with options
self.driver = self.get_new_driver(chrome_options=chrome_options)
self.open("http://example.com")
# Check some condition
self.assert_title("示例域名")

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

在 SeleniumBase 中使用代理的挑战和最佳实践

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

  1. 避免使用免费代理: 免费代理通常不可靠、速度慢,而且可能已经被网站标记。投资信誉良好的付费代理服务,效果会更好。
  2. 监控代理健康状况: 定期检查代理的状态,确保它们按预期运行。
  3. 随机化请求时间: 在请求之间增加随机延迟,而不是一次性发送所有请求,以降低被拦截的风险。
  4. 明智使用无头模式 虽然使用无头模式可以加快搜索速度,但也会增加被标记为僵尸的可能性。请谨慎使用,并将其与用户代理欺骗等其他技术相结合。
  5. 处理验证码挑战: 如果网站存在验证码问题,您可能需要集成验证码解决服务。

使用代理进行搜索的其他技术

将代理服务器的使用与其他技术相结合,可以使你的搜索工作更有效率。下面介绍几种先进的策略:

  • 用户代理欺骗: 随机化用户代理字符串,以模拟来自不同浏览器或设备的请求。
  • 会议管理: 有效管理 cookie 和会话,避免触发反僵尸机制。
  • 无头浏览器设置 使用无头浏览器在不显示图形界面的情况下进行刮擦,但要修改浏览器指纹设置以避免被检测到。

结论

代理是克服反抓取措施和高效收集数据的强大工具。有了 SeleniumBase,无论你是需要单个代理进行测试,还是需要轮换系统进行大规模抓取,配置代理都非常简单。切记要遵循最佳实践,并持续监控代理的性能。将代理与用户代理欺骗和会话管理等技术相结合,可以最大限度地减少路障并收集所需的数据。

类似文章