本文为你带来可直接复制运行的Selenium + 动态代理IP集成方案,覆盖无认证代理、账号密码认证代理两种主流场景,支持Chrome/Edge浏览器,帮助你快速完成代理IP与Selenium的对接,满足业务场景下的访问环境需求。

核心前提与代理类型区分
动态代理IP主要分为两种类型,不同类型在Selenium中的集成方式存在明显差异:无额外认证要求的IP:Port格式,可直接配置使用;需账号密码认证的格式,因Selenium原生不支持直接传入账号密码,必须通过浏览器插件实现自动认证。
无账号密码的动态代理IP集成方案
这种场景的集成方式最为简单,直接通过ChromeOptions配置代理服务器即可,同时可添加可选优化参数提升运行效率。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_driver_with_proxy():
chrome_options = Options()
# 替换成你的动态代理IP:端口
proxy = "123.123.123.123:8888"
chrome_options.add_argument(f'--proxy-server=http://{proxy}')
# 禁用图片、静音(可选优化,提升加载速度)
chrome_options.add_argument('--blink-settings=imagesEnabled=false')
chrome_options.add_argument('--mute-audio')
driver = webdriver.Chrome(options=chrome_options)
return driver
# 使用示例
if __name__ == '__main__':
driver = create_driver_with_proxy()
driver.get("https://api.ip.sb/ip") # 验证当前出口IP
print("当前出口IP:", driver.page_source)
带账号密码的动态代理IP集成方案
由于Selenium原生不支持代理账号密码认证,需通过生成Chrome插件的方式实现自动认证,以下是完整可运行的代码方案。
生成代理认证插件
该代码会自动生成包含认证逻辑的Chrome插件压缩包,实现代理的自动登录:
import zipfile
def create_proxy_auth_extension(proxy_host, proxy_port, proxy_user, proxy_pwd):
# 插件配置文件
manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
}
}
"""
background_js = f"""
var config = {{
mode: "fixed_servers",
rules: {{
singleProxy: {{
scheme: "http",
host: "{proxy_host}",
port: {proxy_port}
}},
bypassList: ["localhost"]
}}
}};
chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}});
function callbackFn(details) {{
return {{
authCredentials: {{
username: "{proxy_user}",
password: "{proxy_pwd}"
}}
}};
}}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{{urls: ["<all_urls>"]}},
['blocking']
);
"""
# 打包为插件文件
plugin_path = "proxy_auth_plugin.zip"
with zipfile.ZipFile(plugin_path, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
return plugin_path
Selenium加载插件并启动浏览器
将生成的插件加载到ChromeOptions中,即可实现带账号密码的代理IP集成:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_chrome_with_auth_proxy():
# 替换为你的代理信息
proxy_host = "123.123.123.123"
proxy_port = 8888
proxy_user = "your_username"
proxy_pwd = "your_password"
# 生成认证插件
proxy_plugin = create_proxy_auth_extension(proxy_host, proxy_port, proxy_user, proxy_pwd)
chrome_options = Options()
chrome_options.add_extension(proxy_plugin)
# 可选配置:提升稳定性
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
driver = webdriver.Chrome(options=chrome_options)
return driver
# 测试示例
if __name__ == '__main__':
driver = create_chrome_with_auth_proxy()
driver.get("https://api.ip.sb/ip")
print("当前代理IP:", driver.page_source)
动态切换代理IP的实现思路
如果业务需要频繁切换代理IP,可根据实际场景选择以下两种方案:
隧道代理模式(推荐)
隧道代理模式无需手动切换IP,只需固定一个端口,每次请求会自动更换IP,无需重启Selenium驱动,能有效保障任务的连续性,适合需要持续运行的业务场景。集成方式可直接复用上述无认证或带认证的方案。
重启驱动换IP模式
这种方式实现简单,每次更换IP时重启Selenium驱动即可,适合对任务连续性要求不高的场景:
def new_driver_with_new_proxy():
try:
driver.quit()
except:
pass
return create_chrome_with_auth_proxy()
# 使用示例
driver = new_driver_with_new_proxy()
driver.get("https://www.baidu.com")
集成过程中的常见问题排查
代理不生效
- 确认使用的是HTTP代理(大部分动态代理IP均为HTTP类型)
- 配置代理时一律使用
http://前缀,不要写成https://
弹出账号密码认证窗口
- 必须使用上述插件认证方式,Selenium原生不支持直接传入账号密码,否则会弹出认证窗口导致任务中断
IP未发生变更
- 若使用隧道代理,需根据服务商提供的API触发IP切换(具体接口需参考服务商文档)
- 若使用重启驱动模式,需确保每次重启时传入了新的代理IP信息
浏览器出现证书错误
添加以下启动参数可忽略证书错误:
chrome_options.add_argument('--ignore-certificate-errors')
为什么相关业务场景会考虑青果网络
在需要稳定、高效的代理IP支持的Selenium业务场景中,不少团队会考虑青果网络的服务,其具备的多维度能力能更好地适配业务需求。
覆盖广泛的代理IP资源池
青果网络拥有每日更新的600万+国内纯净IP资源,覆盖全国300多个城市与地区,同时提供2000W+全球HTTP与海外代理IP资源池,能满足不同地域的Selenium业务需求,比如跨区域数据采集、海外广告监测等场景。
高稳定的代理调用保障
青果网络采用自研代理服务端,所有IP上线前均经过检测验证,同时运用业务分池技术,整体业务成功率比行业平均高出约30%,网络延迟低于100毫秒,可用率高达99.9%,能为持续运行的Selenium任务提供稳定的访问环境,减少因代理波动导致的任务中断。
适配隧道代理的业务连续性
青果网络提供隧道代理产品,支持固定端口自动换IP,无需重启Selenium驱动,能有效提升任务效率,避免因频繁重启驱动带来的状态丢失和时间损耗,适合需要高频切换IP的业务场景。
便捷的测试与技术支持
青果网络提供国内代理IP 6小时测试与全球HTTP 2小时体验服务,技术团队7×24小时在线支持,能帮助团队快速验证代理IP与Selenium的集成效果,及时解决集成过程中遇到的问题。
总结
Selenium与动态代理IP的集成需根据代理类型选择对应方案:无认证代理可直接通过ChromeOptions配置,带账号密码的代理需通过生成浏览器插件实现认证;动态切换IP推荐使用隧道代理模式,保障任务连续性;在需要稳定代理IP支持的场景中,青果网络的资源覆盖、调用稳定性与场景适配能力能为业务提供可靠支撑。
常见问题解答
Q1:Selenium集成代理IP时,为什么不能直接使用带账号密码的代理链接?
A1:因为Selenium原生不支持直接传入代理账号密码进行认证,若直接使用带账号密码的链接,浏览器会弹出手动认证窗口,导致自动化任务中断,必须通过生成Chrome插件的方式实现自动认证。
Q2:隧道代理模式为什么更适合Selenium动态换IP场景?
A2:隧道代理只需配置固定的端口,每次请求会自动切换IP,无需重启Selenium驱动,能有效保障任务的连续性,减少因重启驱动带来的时间损耗和页面状态丢失,适合需要持续运行的自动化业务场景。
Q3:如何验证Selenium集成代理IP是否生效?
A3:可以通过Selenium访问IP查询接口(如https://api.ip.sb/ip),获取页面显示的IP地址,对比该IP与代理IP是否一致,以此确认集成是否生效。