如何在 Undetected ChromeDriver 中配置代理服务器
在本指南中,我将向你展示如何使用 Undetected ChromeDriver 设置代理,包括处理代理身份验证、轮换代理以及提高整个过程的效率。让我们开始吧
为什么在 Undetected ChromeDriver 中使用代理?"
代理在网络抓取时至关重要,因为它们可以让您
- 绕过 IP Blocking: 网站通常 封杀IP 被检测为机器人。使用代理服务器可以避免这些阻止,并保持对网站的访问。
- 避免速率限制: 代理有助于绕过网站对单个 IP 施加的流量限制,从而防止您的刮擦器受到限制。
- 保持匿名性: 代理服务器会隐藏你的真实 IP 地址,确保你的搜索活动匿名且不被发现。
使用Undetected ChromeDriver 设置代理服务器
开始使用 Bright Data代理 以及 Undetected ChromeDriver,请按以下简单步骤操作:
安装所需程序库
在使用 Bright Data 代理与 Undetected ChromeDriver 之前,请先安装必要的库:
pip install undetected-chromedriver selenium
在 Chrome 浏览器选项中配置代理
接下来,在 Chrome 浏览器选项中添加代理设置。你将使用 Selenium 的 add_argument() 方法来配置代理。
下面介绍如何设置基本代理:
import 未检测到铬驱动程序 as uc
from selenium.webdriver.common.by import By
# 定义您的 Bright Data 代理详细信息
proxy = "http://:@:"
if __name__ == "__main__":
# 套铬选项
选项 = uc.ChromeOptions()
# 在无头模式下运行 Chrome 浏览器
options.headless = True
# 在 Chrome 浏览器选项中添加代理
options.add_argument(f" - proxy-server={proxy}")
# 创建 Chrome 浏览器实例
驱动程序 = uc.Chrome(
options=options、
使用子进程False,
)
# 访问测试 URL 检查您的代理 IP
driver.get("https://httpbin.io/ip")
# 选择包含当前 IP 地址的正文标签
ip_address = driver.find_element(By.TAG_NAME、 "正文").文本
# 打印您当前的 IP
print(ip_address)
运行代码时,您应该会看到代理服务器的 IP 地址,从而确认代理设置已正常运行。
使用Bright Data处理代理身份验证
使用 Bright Data 代理服务器需要进行身份验证。您需要用户名、密码、代理主机和端口,这些在您注册服务时都会提供。
经过验证的代理 URL 将如下所示:
http://<用户名>:<暗号>@<代理 IP>:<代理端口>
以下是如何使用 Selenium 和 Undetected ChromeDriver 设置经过身份验证的代理。
安装Selenium Wire
要管理代理身份验证,需要使用 selenium-wire。它扩展了 Selenium 的功能,使处理代理身份验证变得更容易。
使用此命令安装 selenium-wire:
pip install selenium-wire
添加代理身份验证
现在,您可以使用 `selenium-wire` 为 Bright Data 代理传递身份验证凭据:
import seleniumwire.undetected_chromedriver as uc
from selenium.webdriver.common.by import By
# 定义您的 Bright Data 代理证书
代理用户名 = ""
proxy_password = ""
代理主机 = ""
代理端口 = ""
# 形成代理地址
代理地址 = f "http://{proxy_username}:{代理密码}@{代理主机}:{代理端口}"
# 在代理选项中添加代理地址
proxy_options = {
"proxy": {
"http"代理地址、
"https"代理地址、
}
}
if __name__ == "__main__":
# 套铬选项
选项 = uc.ChromeOptions()
# 在无头模式下运行 Chrome 浏览器
options.headless = True
# 使用代理选项创建 Chrome 浏览器实例
驱动程序 = uc.Chrome(
seleniumwire_options=proxy_options、
options=options、
use_subprocess=False,
)
# 访问测试 URL 检查您的代理 IP
driver.get("https://httpbin.io/ip")
# 选择包含当前 IP 地址的正文标签
ip_address = driver.find_element(By.TAG_NAME、 "正文").文本
# 打印您当前的 IP
print(ip_address)
该代码用于验证您的 Bright Data 代理服务器,并用于网络搜索。访问测试 URL 时,您将看到代理服务器的 IP 地址。
用Bright Data旋转代理
单个代理不足以进行大规模搜索。请求次数过多后,网站可能会屏蔽你的 IP。为避免这种情况,您需要轮流使用代理,这样就不会只依赖一个 IP。
轮流代理 它可以帮助你将请求分发到多个 IP 地址,模仿不同用户的行为,降低被拦截的几率。
下面介绍如何使用 Bright Data 实现代理旋转:
定义代理列表
创建一个 Bright Data 代理地址列表。您可以从 Bright Data 仪表盘中获取这些地址。
import itertools
import random
# 定义 Bright Data 代理列表
proxy_pool = [
"http://:@:",
"http://:@:",
"http://:@:",
]
# 旋转代理的功能
def 旋转代理(代理列表):
random.shuffle(proxy_list)
return itertools.cycle(proxy_list)
使用旋转代理
现在,在脚本中使用旋转后的代理:
# 从列表中创建代理生成器
proxy_generator = rotate_proxy(proxy_pool)
if __name__ == "__main__":
# 套铬选项
选项 = uc.ChromeOptions()
# 在 Chrome 浏览器选项中添加旋转代理
options.add_argument(f" - proxy-server={下一个(proxy_generator)}")
# 在无头模式下运行 Chrome 浏览器
options.headless = True
# 创建 Chrome 浏览器实例
驱动程序 = uc.Chrome(
options=options、
使用子进程False,
)
# 访问测试 URL 检查您的代理 IP
driver.get("https://httpbin.io/ip")
# 选择包含当前 IP 地址的正文标签
ip_address = driver.find_element(By.TAG_NAME、 "正文").文本
# 打印当前 IP 地址
print(ip_address)
该代码每次运行时都会从代理池中随机选择一个代理,确保您的 IP 随每次请求而变化。进一步了解 旋转代理和静态代理.
来自 Bright Data 的高级住宅代用指标
Bright Data 和其他公司提供高质量的住宅代理服务器,是网络搜索的理想选择。与免费代理相比,这些代理被屏蔽的可能性更小,因为它们是分配给真正的居民用户的。这使得网站更难检测到它们。
使用 Bright Data,您将获得
- 可靠的代理: 这些代理服务器很少被拦截,因为它们使用的是真实用户的 IP。
- 自动旋转: Bright Data 会自动轮换代理,因此您无需在代码中手动处理。
- 地理定位: 您可以针对特定区域从特定国家或城市发出请求,这对本地化搜索非常有用。
将 Bright Data 代理集成到 Undetected ChromeDriver 中
要使用 Bright Data 住宅区代理,您需要注册一个账户,生成代理凭据,并在您的 ChromeDriver 脚本中使用这些凭据。
下面介绍如何将 Bright Data 代理与您的脚本集成:
import seleniumwire.undetected_chromedriver as uc
from selenium.webdriver.common.by import By
# 定义您的 Bright Data 代理证书
代理用户名 = ""
proxy_password = ""
代理主机 = ""
代理端口 = ""
# 形成代理地址
代理地址 = f "http://{proxy_username}:{代理密码}@{代理主机}:{代理端口}"
# 在代理选项中添加代理地址
proxy_options = {
"proxy": {
"http"代理地址、
"https"代理地址、
}
}
if __name__ == "__main__":
# 套铬选项
选项 = uc.ChromeOptions()
# 在无头模式下运行 Chrome 浏览器
options.headless = True
# 使用代理选项创建 Chrome 浏览器实例
驱动程序 = uc.Chrome(
seleniumwire_options=proxy_options、
options=options、
use_subprocess=False,
)
# 访问测试 URL 检查您的代理 IP
driver.get("https://httpbin.io/ip")
# 选择包含当前 IP 地址的正文标签
ip_address = driver.find_element(By.TAG_NAME、 "正文").文本
# 打印您当前的 IP
print(ip_address)
运行此代码时,它将使用你的 Bright Data 住宅代理并打印代理服务器的 IP 地址,从而确保你的网页抓取保持匿名且不受阻拦。
结论
在网络抓取工作流程中使用代理对于避免被发现和提高抓取任务的效率至关重要。按照上述步骤,您可以轻松集成 住宅代理 使用 Undetected ChromeDriver 并毫无问题地开始抓取!

