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 啦!
请问楼主解决了吗?

