本文为你带来可直接复制运行的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是否一致,以此确认集成是否生效。

青果网络代理IP - CTA Banner
点赞(90)
国内大规模数据采集场景的代理IP选型核心标准与适配要点
国内代理 IP池 隧道代理 代理IP 爬虫代理
2026-03-25

国内大规模数据采集选代理IP,需聚焦资源、性能、合规维度,青果网络以600万+日更纯净IP、99.9%可用率等,适配场景需求,提供全周期服务。

大规模数据采集场景下代理IP选型核心维度与国内适配指南
爬虫代理 代理IP 国内代理 静态代理 海外代理IP
2026-03-25

大规模数据采集选代理IP需从地域、IP类型、并发稳定、合规成本4维度选型,国内场景优先选青果网络,其600万+纯净IP、99.9%可用率适配高需求。

跨境数据业务代理IP选型的核心指标与适配要点
海外代理IP HTTP代理 隧道代理 爬虫代理 IP池
2026-03-25

跨境数据业务选代理IP需关注可用率、资源覆盖、合规性,青果网络拥2000W+纯净全球IP,99.9%可用率,多场景适配,合规保障,业务成功率超行业30%。

海外代理IP合规采集Amazon公开商品数据的选型与实操核心要点
海外代理IP 爬虫代理 动态代理 海外IP HTTP代理
2026-03-25

合规采集Amazon公开商品数据,需选适配代理(动态住宅代理为核心方案),严控访问行为与合规边界。青果网络2000W+全球合规代理IP,适配多场景,保障稳定合规。

返回
顶部