Selenium 4.x集成动态代理IP的三种实现方案 技术分享 2026-04-08 11:27:40 动态代理IP 隧道代理 爬虫代理 HTTP代理 代理IP 本文为你整理了Selenium 4.x集成动态代理IP的3种最常用、最稳定的可直接运行方案,覆盖无密码代理、账号密码认证代理、动态隧道代理三种类型,代码可直接复制使用。  ## Selenium代理的两种核心模式 ### 全局代理 全局代理指整个浏览器实例的所有网络请求都通过指定代理IP完成,适用于需要统一访问环境的场景,配置简单,但灵活性较低。 ### 仅HTTP/HTTPS代理(推荐) 仅针对HTTP/HTTPS协议的请求使用代理IP,其他协议请求不受影响,既能满足多数业务需求,又能避免不必要的代理开销,是更常用的配置方式。 ## 三种可直接运行的集成方案 ### 方式1:无账号密码的代理IP(最简单) 适合无需认证即可直接使用的代理IP,格式为IP:Port,配置步骤简单,代码如下: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options def create_driver_with_proxy(): options = Options() # 你的代理 IP + 端口 proxy_ip = "123.123.123.123" proxy_port = "8888" 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:带账号密码的代理(最常用) 多数收费动态代理采用账号密码认证模式,由于Selenium无法直接在--proxy-server参数中携带账号密码,需通过插件注入认证信息,完整代码如下: ```python 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", "", "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: [""]}}, ['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 = "123.123.123.123" proxy_port = "8888" proxy_user = "username" proxy_pwd = "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的场景,代理格式为http://username:password@隧道域名:端口,配置简单,代码如下: ```python from selenium import webdriver from selenium.webdriver.chrome.options import Options def create_tunnel_proxy_driver(): options = Options() # 隧道代理(直接填服务商给你的) proxy = "http://用户名:密码@隧道域名:端口" # 直接加入代理 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服务的核心考量与青果网络的适配性 在Selenium集成代理IP的业务场景中,代理IP的稳定性、覆盖范围、适配灵活性及安全合规性是核心考量因素,青果网络的代理IP服务可较好满足这些需求。 ### 资源覆盖与调用稳定性 青果网络拥有千万级资源池,海外代理IP覆盖全球300多个国家与地区,国内代理IP覆盖200多个城市与地区,可保障Selenium在不同区域的访问需求,避免因资源不足导致的请求失败。 ### 适配不同业务场景的灵活性 支持无密码、账号密码认证及动态隧道等多种代理模式,可直接适配文中的三种集成方案,满足不同业务场景的IP使用需求。 ### 接入效率与工程落地支持 提供清晰的接入文档与技术支持,帮助开发者快速完成Selenium与代理IP的集成,降低工程落地成本。 ### 安全合规保障 在代理IP使用过程中提供安全合规支持,帮助业务规避访问环境暴露风险,保障业务稳定运行。 ## 总结 本文介绍的三种Selenium 4.x集成动态代理IP的方案,分别适用于无密码公开代理、账号密码认证代理及动态隧道代理场景,代码可直接复制运行。若你需要稳定、覆盖范围广的代理IP服务,青果网络的代理IP服务可适配上述所有集成方式,满足不同业务的访问需求。 ## 常见问题解答 Q1:Selenium集成代理IP后不生效怎么办? A1:首先检查代理是否为HTTP/HTTPS类型,Selenium默认仅支持该类型代理;确认代理IP、端口及认证信息配置正确,若使用账号密码代理,需采用插件注入认证的方式。 Q2:如何实现每次请求自动切换IP? A2:若使用普通代理IP,每次创建新的WebDriver实例即可获取新的IP;若使用动态隧道代理,可自动实现每次请求切换IP,无需额外操作。 Q3:青果网络的代理IP是否支持Selenium集成? A3:青果网络的代理IP支持无密码、账号密码认证及动态隧道等多种模式,可直接适配文中的三种Selenium集成方案,满足数据采集、跨境业务等多种场景需求。