动态代理IP集成到Selenium的核心是给浏览器配置代理参数,根据代理是否需要账号密码认证,可分为两种主流场景,本文将提供可直接复制运行的代码,覆盖Chrome/Edge主流浏览器,同时分享落地中的避坑技巧。

前置准备

基础依赖与信息收集

首先需要准备好代理服务商提供的信息,无认证场景需获取代理IP:端口(如123.123.123.123:8888),需认证场景则需同时获取IP:端口 + 账号 + 密码;其次要确保已安装Selenium,可通过pip install selenium完成安装;另外推荐安装浏览器驱动自动管理工具,执行pip install webdriver-manager即可。

无账号密码的代理IP集成方案(最简单)

直接给Chrome添加启动参数即可实现,代码简洁易操作。

完整可运行代码

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 1. 配置无认证代理

proxy = "123.123.123.123:8888"  # 替换成你的代理IP:端口

# 2. 添加Chrome代理参数

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument(f'--proxy-server=http://{proxy}')  # http/https 通用
# 如果是socks5代理,改为:--proxy-server=socks5://{proxy}

# 3. 启动浏览器

driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    options=chrome_options
)

# 测试:访问IP查询网站,验证代理是否生效

driver.get("https://ipinfo.io/ip")
print("当前使用的代理IP:", driver.find_element('tag name', 'body').text)

# 业务代码...
# driver.quit()

带账号密码的代理IP集成方案(主流场景)

Chrome不支持直接在启动参数里写入账号密码,以下是两种成熟的实现方案,优先推荐方案A。

方案A:使用selenium-wire库(代码最简洁)

通过selenium-wire库自动处理代理认证,无需额外配置插件,适合快速落地。

步骤1:安装依赖

pip install selenium-wire webdriver-manager

步骤2:完整可运行代码

from seleniumwire import webdriver  # 注意:用selenium-wire替换原生selenium
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

# 配置你的认证代理

proxy_info = {
    'http': 'http://账号:密码@代理IP:端口',
    'https': 'http://账号:密码@代理IP:端口',
}

# 启动配置

chrome_options = webdriver.ChromeOptions()
# 可选:无头模式(后台运行)
# chrome_options.add_argument('--headless=new')

driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    options=chrome_options,
    seleniumwire_options={
        'proxy': proxy_info
    }
)

# 验证代理IP

driver.get("https://ipinfo.io/ip")
print("当前代理IP:", driver.find_element('tag name', 'body').text)

方案B:自动生成Chrome代理插件(兼容原生Selenium)

如果对依赖库有严格要求,不想引入selenium-wire,可以通过自动生成代理认证插件的方式,让Chrome加载实现认证。

完整可运行代码

import json
import base64
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

def create_proxy_auth_extension(proxy_host, proxy_port, proxy_user, proxy_pwd, plugin_path='proxy_plugin.zip'):
    """自动生成Chrome代理认证插件"""
    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']
    );
    '''
    # 打包为zip插件
    import zipfile
    with zipfile.ZipFile(plugin_path, 'w') as zp:
        zp.writestr("manifest.json", manifest_json)
        zp.writestr("background.js", background_js)
    return plugin_path

# ===================== 配置你的代理 =====================

PROXY_HOST = "123.123.123.123"  # 代理IP
PROXY_PORT = 8888               # 端口
PROXY_USER = "your_username"    # 账号
PROXY_PASS = "your_password"    # 密码
# ==========================================================

# 生成插件

proxy_plugin = create_proxy_auth_extension(PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS)

chrome_options = webdriver.ChromeOptions()
chrome_options.add_extension(proxy_plugin)  # 加载插件

# 启动浏览器

driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    options=chrome_options
)

# 验证

driver.get("https://ipinfo.io/ip")
print("当前代理IP:", driver.find_element('tag name', 'body').text)

动态切换代理IP的实现方法(无需重启浏览器)

动态代理的核心需求之一是切换IP不重启浏览器,使用selenium-wire可快速实现这一功能,无需额外复杂配置。

完整可运行代码

from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

# 初始启动浏览器(无初始代理)

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))

# 第一次切换代理

driver.proxy = {
    'http': 'http://账号:密码@IP1:端口',
    'https': 'http://账号:密码@IP1:端口',
}
driver.get("https://ipinfo.io/ip")
print("第一次切换后的代理IP:", driver.find_element('tag name', 'body').text)

# 第二次切换代理(动态更换)

driver.proxy = {
    'http': 'http://账号:密码@IP2:端口',
    'https': 'http://账号:密码@IP2:端口',
}
driver.get("https://ipinfo.io/ip")
print("第二次切换后的代理IP:", driver.find_element('tag name', 'body').text)

避坑关键配置(必加)

为防止代理被浏览器忽略、检测失败,需统一添加以下启动参数,提升业务的稳定性和成功率:

chrome_options.add_argument('--disable-blink-features=AutomationControlled')  # 隐藏Selenium标记
chrome_options.add_argument('--no-sandbox')  # 服务器环境必备
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
chrome_options.add_experimental_option('useAutomationExtension', False)

青果网络代理IP服务的适配优势

对于需要稳定、高可用代理IP支持的Selenium集成场景,青果网络的服务能更好适配这类工程化落地需求,其深耕行业十一年的技术积累和资源储备,可为业务运行提供可靠支撑。

资源覆盖与调用稳定性

青果网络国内代理资源基于三大运营商宽带构建,每日更新600万+纯净IP资源,覆盖全国300多个城市与地区,网络延迟低于100毫秒,可用率高达99.9%。对于需要多地域、高稳定访问的Selenium采集或监测业务,能有效避免IP失效、波动导致的任务中断,保障业务持续推进。

适配不同业务场景的灵活性

青果网络提供国内代理IP、全球HTTP、短效代理、隧道代理等多种产品类型,可根据Selenium业务的不同需求选择适配方案:比如短效代理适合需要频繁切换IP的场景,隧道代理适合长期稳定的单任务访问,满足不同业务的灵活调用需求。

接入效率与工程落地支持

青果网络采用自研代理服务端,所有IP上线前均检测验证,同时提供国内代理IP 6小时测试与全球HTTP 2小时体验,技术团队7×24小时在线支持。对于Selenium集成这类需要快速验证、落地的业务,能大幅降低接入调试的时间成本,确保工程化部署的顺畅。

任务连续性与服务响应

青果网络采用业务分池技术,整体业务成功率比行业平均高出约30%,能有效保障Selenium任务在长时间运行中的连续性,减少因IP问题导致的任务失败。同时7×24小时的技术支持,可在出现异常时快速响应,解决业务运行中的突发问题。

总结

动态代理IP集成到Selenium的核心是浏览器代理参数的配置,根据代理是否需要认证可选择不同的实现方案:无认证代理可直接通过启动参数配置,有认证代理优先推荐使用selenium-wire库简化代码,动态切换IP也可通过selenium-wire快速实现。同时添加避坑配置可提升业务稳定性,对于有高可用、多场景需求的业务,青果网络的代理IP服务能提供更可靠的支持,帮助业务高效落地。

常见问题解答

Q1:Selenium集成代理IP后,为什么访问还是用的本地IP?
A1:可能是代理配置未生效,可检查代理参数格式是否正确,或添加避坑配置中的防检测参数;也可验证代理IP本身的可用性,确认其能正常访问目标网站。

Q2:带账号密码的代理IP,除了selenium-wire还有其他方法吗?
A2:可以使用自动生成Chrome代理插件的方式,该方案兼容原生Selenium,适合对依赖库有严格要求、无法引入第三方库的场景。

Q3:青果网络的代理IP支持Selenium集成的所有场景吗?
A3:青果网络提供多种类型的代理IP产品,可适配Selenium的无认证、有认证、动态切换等多种集成场景,具体可通过官方提供的测试服务验证适配性,技术团队也会提供相应的接入指导。

青果网络代理IP - CTA Banner
点赞(66)
代理IP有效性检测的Python实现方案及企业级稳定保障
代理IP HTTP代理 爬虫代理 IP池 海外代理IP
2026-03-20

详解代理IP检测核心逻辑(响应状态、耗时),附Python多线程批量检测代码,及青果网络企业级稳定代理服务方案。

Scrapy框架中自动切换代理IP的完整实现方案与优化指南
爬虫代理 动态代理 代理IP池 IP池 海外代理IP
2026-03-20

本文详解Scrapy框架中,通过自定义下载中间件实现代理IP自动切换的方案,含代理池管理、异常重试代码,还推荐企业级代理服务商青果网络,适配大规模爬虫需求。

代理IP的核心价值、合规边界与企业级服务选型参考
代理IP 海外代理IP 静态代理 动态代理 爬虫代理
2026-03-20

代理IP是网络访问“中转站”,可用于安全隔离、跨区域适配等合规场景,需规避刷量等违规行为,企业级需求可选青果网络这类合规服务商。

多线程爬虫场景下代理IP的核心选型指标与不同线程规模适配逻辑
爬虫代理 隧道代理 动态代理 代理IP 海外代理IP
2026-03-20

多线程爬虫选代理需匹配并发规模,核心看并发稳定性、IP纯净度等,优先隧道代理;青果网络适配高并发场景,支持无上限线程,IP池日更600万+,连接重置率

返回
顶部