方案 1:IP 白名单(推荐用于服务器)#
在「访问管理」中提交服务器实际出口的公网 IPv4,等待管理员启用。NAT 或 VPN 可能改变网关看到的源地址。只有该条目针对交付服务确认生效后,才能使用免密码连接。地区和会话选项需另外确认;源 IP 白名单不会发送用户名参数。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument("--proxy-server=http://res.proxy-cyber.com:9000")
opts.add_argument("--headless=new")
driver = webdriver.Chrome(options=opts)
driver.get("https://api.ipify.org")
print(driver.find_element("tag name", "body").text)
driver.quit()方案 2:WebDriver BiDi 认证 #
示例采用 Selenium 持续维护的 WebDriver BiDi API:enable_bidi 与 network.add_auth_handler。执行任务前,请使用已安装的浏览器和驱动验证 HTTP 代理认证。该处理器不限于单一主机,因此应在没有其他认证提示的独立浏览器会话中使用。若当前版本组合不支持代理认证,请改用已启用的 IP 白名单。
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.enable_bidi = True
options.add_argument("--proxy-server=" + os.environ["PROXY_SERVER"])
with webdriver.Chrome(options=options) as driver:
handler = driver.network.add_auth_handler(
os.environ["PROXY_USER"], os.environ["PROXY_PASSWORD"]
)
try:
driver.get("https://api.ipify.org")
print(driver.find_element("tag name", "body").text)
finally:
driver.network.remove_auth_handler(handler)Firefox#
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_preference("network.proxy.type", 1)
opts.set_preference("network.proxy.http", "res.proxy-cyber.com")
opts.set_preference("network.proxy.http_port", 9000)
opts.set_preference("network.proxy.ssl", "res.proxy-cyber.com")
opts.set_preference("network.proxy.ssl_port", 9000)
opts.set_preference("media.peerconnection.enabled", False) # 防止 WebRTC 泄漏
driver = webdriver.Firefox(options=opts) # 服务器已加入白名单,无提示框实用规则#
- 如果交付的网关支持会话标识,请为每个独立流程使用不同标识。允许的持续时间和地区参数应以连接信息为准。住宅设备可能提前离线,因此持续会话不保证数日使用同一 IP。需要固定地址时,应比较独享静态产品。
- 在 Chrome 中使用
--headless=new;旧版无头模式具有很容易识别的指纹。 - 不同会话标识只区分路由偏好,不会隔离浏览器 Cookie 或应用状态。先用少量并发任务测量错误率和流量,再按照订单确认的限额及目标网站限制逐步增加。限定城市或运营商可能减少可用容量。
大家常问的问题#
使用 Selenium 时,Chrome 为什么会显示代理登录提示框?
固定服务器可使用已启用的源 IP 白名单,也可测试当前 Selenium 的 WebDriver BiDi 认证处理器与浏览器的兼容性。新集成不应依赖已归档的 Selenium Wire。