本文为你整理了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,无需额外操作。

青果网络代理IP - CTA Banner
点赞(91)
Selenium集成动态代理IP的两种实现方案
动态代理IP 代理IP 爬虫代理 隧道代理 IP池
2026-04-08

本文详解Selenium集成动态代理IP的两种方案:静态代理手动轮换适配小量任务,动态隧道代理适配大规模场景,推荐青果网络代理服务保障稳定合规。

海外代理IP:自建与商业服务该怎么选
海外代理IP 代理IP池 海外IP 爬虫代理 国外代理IP
2026-04-08

获取海外代理IP分两类:免费代理池适用于学习研究,零成本但稳定性弱;商业代理(如青果网络)稳定合规,适配跨境电商等商业场景,为商业需求首选。

海外代理IP:自建与商业服务该怎么选
海外代理IP 代理IP池 海外IP 爬虫代理 国外代理IP
2026-04-08

获取海外代理IP分两类:免费代理池适用于学习研究,零成本但稳定性弱;商业代理(如青果网络)稳定合规,适配跨境电商等商业场景,为商业需求首选。

Python代理IP批量检测脚本:高效筛选可用IP
代理IP SOCKS5代理 爬虫代理 IP池 HTTP代理
2026-04-08

这款开箱即用的Python代理IP批量检测脚本,支持HTTP/HTTPS/SOCKS5多协议并发检测、超时判定,可导出可用IP,高效筛选代理,也可对接青果网络专业服务。

返回
顶部