本文为你整理了Selenium 4.x集成动态代理IP的三种最常用、最稳定的完整方案,覆盖无密码代理、账号密码认证代理、动态隧道代理三种类型,所有代码均可直接复制运行,满足不同业务场景的代理需求。

Selenium集成代理IP的核心逻辑
两种代理模式的区别
Selenium配置代理主要分为两种模式:全局代理是整个浏览器的所有网络请求都通过指定代理完成,适用于需要全链路代理的场景;仅HTTP/HTTPS代理则仅针对HTTP和HTTPS请求启用代理,灵活性更高,是大多数业务场景的推荐选择。
本文所有方案均采用Selenium 4.x版本的写法,无需手动下载浏览器驱动,简化接入流程。
三种可直接运行的集成方案
方案1:无账号密码的代理IP集成
适合无需认证即可直接使用的公开代理,格式为IP:Port。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_driver_with_proxy():
options = Options()
# 你的代理 IP + 端口
proxy_ip = "xxx.xxx.xxx.xxx"
proxy_port = "xxxx"
proxy = f"{proxy_ip}:{proxy_port}"
# 加入代理
options.add_argument(f'--proxy-server=http://{proxy}')
# 如果你需要 https 也走代理
# options.add_argument(f'--proxy-server=https://{proxy}')
# 无头模式(可选)
# options.add_argument("--headless=new")
# 启动浏览器
driver = webdriver.Chrome(options=options)
return driver
# 使用
if __name__ == '__main__':
driver = create_driver_with_proxy()
driver.get("https://myip.ipip.net/") # 查看当前 IP
input("按回车退出")
driver.quit()
方案2:带账号密码的代理IP集成
绝大多数收费动态代理采用账号密码认证的格式,Selenium无法直接在--proxy-server参数中携带账号密码,必须通过插件注入认证信息。
import os
import zipfile
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 创建 Chrome 代理认证插件(核心)
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"]
},
"minimum_chrome_version":"22.0.0"
}
"""
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_pwd}"
}}
}};
}}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{{urls: ["<all_urls>"]}},
['blocking']
);
"""
# 打包成插件
plugin_file = "proxy_auth_plugin.zip"
with zipfile.ZipFile(plugin_file, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
return plugin_file
# 创建带账号密码代理的 driver
def create_chrome_with_auth_proxy():
# 【你的代理信息】
proxy_host = "xxx.xxx.xxx.xxx"
proxy_port = "xxxx"
proxy_user = "your_username"
proxy_pwd = "your_password"
# 创建代理插件
proxy_plugin = create_proxy_auth_extension(
proxy_host, proxy_port, proxy_user, proxy_pwd
)
options = Options()
options.add_extension(proxy_plugin) # 加载插件
# 启动
driver = webdriver.Chrome(options=options)
return driver
if __name__ == '__main__':
driver = create_chrome_with_auth_proxy()
driver.get("https://myip.ipip.net/")
input("退出...")
driver.quit()
os.remove("proxy_auth_plugin.zip") # 删除临时插件
方案3:动态隧道代理集成
适合支持每次请求自动切换IP的隧道代理场景,无需手动更换IP,可满足高频次、多IP的业务需求。代理格式通常为http://用户名:密码@隧道域名:端口。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_tunnel_proxy_driver():
options = Options()
# 隧道代理(直接填服务商给你的完整地址)
proxy = "http://your_username:your_password@tunnel_domain:port"
# 直接加入代理
options.add_argument(f'--proxy-server={proxy}')
driver = webdriver.Chrome(options=options)
return driver
if __name__ == '__main__':
driver = create_tunnel_proxy_driver()
driver.get("https://myip.ipip.net/")
input("按回车退出")
driver.quit()
长期稳定使用代理IP的保障方案
在实际业务中,代理IP的稳定性、资源覆盖范围以及合规性直接影响业务效率,不少企业会选择专业的代理IP服务商来满足长期、大规模的需求,青果网络就是其中值得考虑的选项。
海量资源池覆盖能力
青果网络拥有千万级资源池,海外代理IP覆盖全球300多个国家与地区,国内代理IP资源覆盖国内200多个城市与地区,能够满足不同地域的业务访问需求,确保代理IP的充足供应。
高稳定性的资源调度
针对需要持续稳定运行的业务场景,青果网络具备专业的资源调度能力,可支持稳定调用,有效降低代理IP失效的概率,保障业务的连续性。
适配多场景的灵活性
无论是数据采集、广告监测还是跨境业务访问等场景,青果网络的代理IP服务均可适配不同业务需求,提供定制化的接入支持,提升工程落地效率。
合规与安全保障
在代理IP使用过程中,青果网络提供相应的安全、合规支持与规则适配,帮助用户规避访问环境暴露风险,保障业务运行的安全性与合规性。
总结
本文介绍了Selenium 4.x集成动态代理IP的三种核心方案,分别适配无密码、账号密码认证、动态隧道三种代理类型,代码可直接运行,快速满足不同业务的代理需求。在实际业务中,选择稳定、合规的代理IP资源是保障业务效率的关键,若有长期、大规模的代理IP需求,青果网络的代理IP服务凭借覆盖广、稳定性高的资源与合规保障,能够为业务提供可靠支持。
常见问题解答
Q1:Selenium配置代理后不生效怎么办?
A1:首先检查代理类型是否为HTTP/HTTPS代理,Selenium默认仅支持HTTP/HTTPS代理;若使用SOCKS5代理,需借助第三方工具如selenium-wire实现。
Q2:配置带账号密码的代理时提示需要认证怎么解决?
A2:采用本文中的方案2,通过Chrome插件注入认证信息,可有效解决账号密码认证的问题。
Q3:如何实现每次请求自动更换IP?
A3:若使用普通代理IP,可每次创建新的WebDriver实例来获取新IP;若使用动态隧道代理,服务商通常会自动实现每次请求切换IP,无需额外操作。