You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium ChromeDriver:如何不重启驱动设置代理IP?(自问自答)

提问:Selenium无头浏览器怎么不重启驱动就切换不同外部IP发请求?

解决方案

我们手里有一台带多个外部IP的服务器,折腾了几天终于找到不用重启Selenium驱动就能切换IP的方法——核心是在服务器上搭建专属本地代理,通过动态切换代理绑定的IP实现需求。

步骤1:在服务器上搭建多IP绑定的本地代理(以Nginx为例)

给每个外部IP配置一个独立的Nginx代理端口,比如服务器有IP1、IP2、IP3三个外部IP,对应开放8081、8082、8083端口,每个端口绑定一个专属外部IP。

简化的Nginx配置片段:

# 绑定IP1的代理端口8081
server {
    listen 8081;
    resolver 8.8.8.8;
    location / {
        proxy_pass $scheme://$host$request_uri;
        proxy_bind 1.2.3.4; # 替换为你的实际外部IP1
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# 绑定IP2的代理端口8082
server {
    listen 8082;
    resolver 8.8.8.8;
    location / {
        proxy_pass $scheme://$host$request_uri;
        proxy_bind 5.6.7.8; # 替换为你的实际外部IP2
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

配置完成后重启Nginx生效:sudo systemctl restart nginx

步骤2:Selenium动态切换代理(Chrome无头浏览器为例)

利用Chrome DevTools Protocol(CDP)的Network.setProxy命令,无需重启浏览器即可动态修改代理设置,直接上代码示例:

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

# 初始化无头浏览器,无需预先设置代理
service = Service('/path/to/chromedriver')
options = webdriver.ChromeOptions()
options.add_argument('--headless=new')
driver = webdriver.Chrome(service=service, options=options)

def switch_proxy(driver, proxy_host, proxy_port):
    # 通过CDP命令设置新代理
    driver.execute_cdp_cmd('Network.setProxy', {
        'proxyType': 'manual',
        'httpProxy': f'{proxy_host}:{proxy_port}',
        'httpsProxy': f'{proxy_host}:{proxy_port}'
    })
    # 验证IP切换结果(可选)
    driver.get('https://api.ipify.org')
    print(f"当前出口IP: {driver.page_source}")

# 切换到IP1对应的代理(服务器内网IP+8081端口)
switch_proxy(driver, '192.168.1.100', 8081)
# 执行业务操作,如页面爬取、表单提交等...

# 切换到IP2对应的代理
switch_proxy(driver, '192.168.1.100', 8082)
# 继续执行另一项业务操作...

driver.quit()

关键注意事项

  • 确保服务器的每个外部IP均可正常访问公网,且防火墙已放开对应的Nginx代理端口。
  • 若使用Firefox浏览器,可通过driver.profile.set_preference动态修改代理设置,逻辑一致,无需重启驱动。
  • CDP命令是实现无需重启驱动切换IP的核心,直接绕过了传统方式中修改代理必须重启浏览器的限制。

内容的提问来源于stack exchange,提问作者Anton Slastuhin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:00:27