Python中如何使用selenium在不关闭浏览器的情况下更换代理IP?

(也可以这么讲:在不关闭的情况下更换 option 里面的 IP,更换 UA ? )
Python中如何使用selenium在不关闭浏览器的情况下更换代理IP?

6 回复

更换 代理不需要重启 driver


from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import time

# 设置Chrome选项
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://proxy_ip:proxy_port')  # 初始代理

# 启动浏览器
driver = webdriver.Chrome(options=chrome_options)
driver.get("http://httpbin.org/ip")
print("初始IP:", driver.find_element("tag name", "body").text)
time.sleep(2)

# 创建新的Chrome选项对象(关键步骤)
new_options = Options()
new_options.add_argument('--proxy-server=http://new_proxy_ip:new_proxy_port')  # 新代理

# 重新创建driver实例(这是核心方法)
driver.quit()  # 关闭旧实例
driver = webdriver.Chrome(options=new_options)  # 创建新实例

driver.get("http://httpbin.org/ip")
print("更换后IP:", driver.find_element("tag name", "body").text)

# 保持浏览器打开
input("按回车键关闭浏览器...")
driver.quit()

核心原理:Selenium本身没有直接更换代理的API,但可以通过重新创建driver实例来实现。关键是要在创建新实例时传入新的代理配置。

替代方案:如果使用Chrome DevTools Protocol,可以通过execute_cdp_cmd动态修改代理:

# 在已有driver实例中执行(需要Chrome 86+)
driver.execute_cdp_cmd("Network.setExtraHTTPHeaders", {
    "headers": {"Proxy-Authorization": "..."}
})

总结:直接重建driver实例是最可靠的方案。

感谢您的回复!更换代理是哪个函数呢?如果放进 option 中是需要重新创建的。

试试 requests ?

感谢您的回复!如果 requests 能拿到就不用 selenium 啦!

请问楼主解决了吗?

回到顶部