driver.get() 卡住,最后报 Timed out receiving message from renderer
检查 第一个页面是不是在代理要求认证时用经典的 driver.get() 打开的?
处理 先注册 add_auth_handler,第一个页面用 browsing_context.navigate(..., wait="complete"),之后的 driver.get() 会沿用凭据。
Chrome 不认代理设置里的「用户名:密码」,Selenium 自带的 BiDi 认证处理可以替你应答代理的密码请求。
Selenium Grid 和 CI 机器上的每个浏览器会话,都从机器自己的 IP 发出。会话一多,网站就会对这个地址限流(HTTP 429),而依赖地区的测试永远只能看到机器所在国家的页面。
Selenium 通过浏览器选项设置代理,但 Chrome 只取其中的地址和端口:写在代理设置里的账号密码它不会用,SOCKS5 认证也不支持。所以带密码的代理,需要有人来应答它的 407 认证请求。
Selenium 已经内置了这一步:打开 WebDriver BiDi 后,driver.network.add_auth_handler(用户名, 密码) 会应答认证请求,我们实测包括代理的认证。用 ChromeDriver 153 时有个坑:代理还在要求输入密码时直接用经典的 driver.get(),会一直卡住;改用 browsing_context.navigate 打开就正常,之后的 driver.get() 会沿用已认证的凭据。另一个坑:写进 options.proxy 的代理,Selenium 还会交给 Selenium Manager 去下载 ChromeDriver,而且不带密码,所以代码改用 Chrome 的 --proxy-server 参数。
可使用方向键横向滚动,阅读完整内容。
| 比较项目 | 选择 | 原因 |
|---|---|---|
| 产品 | 静态机房代理 | 单 IP 最快最便宜,租期内固定,适合回归测试、Grid 和 CI |
| 网站封服务器 IP 时 | 动态住宅,低价线路 | 真实家庭宽带 IP,US$1.50/GB 起,按流量计费 |
| 买几条 IP | 一个并发会话或一个 Grid 节点一条 | 会话之间不共用地址和频率限制 |
| 国家 | 测试要覆盖的市场;机房 IP 可选美国、加拿大、英国、德国、荷兰、日本、韩国、新加坡 | 按地区变化的页面要从对应国家看 |
| 协议 | HTTP | Chrome 不支持 SOCKS5 认证 |
| 代理写在哪 | ChromeOptions 里的 --proxy-server 参数 | 写进 options.proxy 的话,Selenium Manager 下载驱动也会走这个代理,而且不带密码 |
| 认证方式 | Selenium 自带的 BiDi 认证处理 | Selenium 4 内置,不用额外安装、不怕插件失效 |
下面的按钮会打开「静态机房代理」并选好「AI 与自动化」场景,付款前选好地区、租期、协议和「数量」(一次最多 100 个 IP)。
可使用方向键横向滚动,阅读完整内容。
| 比较项目 | 静态 ISP | 动态住宅 | 机房(数据中心) |
|---|---|---|---|
| 你得到什么 | 一条独享的家庭宽带 IP,租期内一直归你 | 真实家庭宽带 IP:可轮换出口,也可在指定国家或城市保持粘性会话 | 速度快的固定机房 IP,支持 HTTP / SOCKS5 |
| 价格 | 按 IP 和租期,下单页实时报价 | 低价线路 US$1.50/GB(100 GB 套餐 US$1.35/GB);优质线路 US$5.00/GB | 按 IP 和租期,单 IP 成本最低 |
| 最适合 Selenium | 需要长时间保持同一 IP 的登录测试 | 测试或采集拦截服务器 IP 的网站 | 回归测试、Grid、CI |
价格以美元计。钱包充值一次,各类线路都从钱包付款;不会自动续费,想保留 IP 请在「我的资产」里续费。
国内网络无法直接连接海外代理:本机运行时先打开 控制台 → 连接工具 → 辅助工具;在服务器或 CI 上运行时,用境外机器。
点下面的按钮,打开「静态机房代理」(按 IP 和租期),场景已选「AI 与自动化」。在「连接配置」里选「地区」和「租期」,「协议」选 HTTP,「数量」按并发会话数填(一次最多 100 个),点「确认费用并生成」。
在「我的资产」点「复制」,得到「地址:端口:用户名:密码」。地址、端口填进 PROXY_HOST、PROXY_PORT,用户名、密码填进 PROXY_USER、PROXY_PASS。
ChromeOptions 里设 enable_bidi = True,并添加参数 --proxy-server=http://地址:端口(不要带用户名和密码);驱动启动后调用 driver.network.add_auth_handler(用户名, 密码)。
用 driver.browsing_context.navigate(context=driver.current_window_handle, url=..., wait="complete") 打开第一个页面,之后正常用 driver.get()。
预期结果 api.ipify.org 显示的是代理 IP,不是你本机的 IP。
可使用方向键横向滚动,阅读完整内容。
# pip install -U selenium (Selenium Manager fetches a matching ChromeDriver)
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
# From Proxy302 → My assets → Copy (host:port:user:password); use the HTTP endpoint
endpoint = f"{os.environ['PROXY_HOST']}:{os.environ['PROXY_PORT']}"
options = webdriver.ChromeOptions()
options.enable_bidi = True # the auth handler below runs over WebDriver BiDi
# A Chrome flag, not options.proxy: Selenium Manager would fetch ChromeDriver through options.proxy, without the password
options.add_argument(f"--proxy-server=http://{endpoint}")
driver = webdriver.Chrome(options=options)
try:
# Chrome ignores user:pass written into proxy settings, so answer the 407 challenge instead
driver.network.add_auth_handler(os.environ["PROXY_USER"], os.environ["PROXY_PASS"])
# Navigate over BiDi: a classic driver.get() can stall while the proxy challenge is pending
driver.browsing_context.navigate(
context=driver.current_window_handle,
url="https://api.ipify.org?format=json",
wait="complete",
)
print(driver.find_element(By.TAG_NAME, "body").text) # the proxy's exit IP
finally:
driver.quit()2026-10-18 用 Selenium 4.41.0 和 4.51.0、Chromium / ChromeDriver 153 经本地带密码的代理实测 HTTP 和 HTTPS 页面:密码正确时页面能打开,密码错误时打不开;首次运行时 Selenium Manager 下载 ChromeDriver 不经过代理。
检查 第一个页面是不是在代理要求认证时用经典的 driver.get() 打开的?
处理 先注册 add_auth_handler,第一个页面用 browsing_context.navigate(..., wait="complete"),之后的 driver.get() 会沿用凭据。
检查 启动驱动前设了 enable_bidi 吗?是不是把「用户名:密码@」写进了 --proxy-server?
处理 设置 options.enable_bidi = True,--proxy-server 只填 http://地址:端口,用户名和密码交给 add_auth_handler。
检查 辅助工具开着吗?同一台机器上 curl -x http://用户名:密码@地址:端口 https://api.ipify.org 能通吗?
处理 国内网络先开辅助工具;curl 也不通时检查防火墙和出站规则,或把任务放到境外服务器上跑。
检查 装的 Selenium 是哪个版本?
处理 用 pip install -U selenium 升级;我们实测过 4.41.0 和 4.51.0。
检查 代理是不是写进了 options.proxy?这样 Selenium Manager 下载 ChromeDriver 也会走这个代理,而且不带密码。
处理 按上面的代码改用 --proxy-server 参数;国内网络下载驱动前先开辅助工具,仍然失败就用 Service('chromedriver 路径') 指定已下载好的驱动。
ChromeOptions 里用 --proxy-server 参数只填代理的「地址:端口」,打开 BiDi,调用 driver.network.add_auth_handler(用户名, 密码),第一个页面用 browsing_context.navigate 打开,上面的代码就是完整写法。
Chrome 不使用代理设置里嵌入的账号密码,SOCKS5 代理也不支持任何认证方式。
不需要。认证处理是 Selenium 自带的功能,不用装额外的库或插件,也不用担心它们和浏览器版本不兼容。
Selenium Manager 会联网下载 ChromeDriver。代理如果写在 options.proxy 里,它也会走这个不带密码的代理,下载被拒(407),这时设 SE_PROXY 也没用:浏览器选项里的代理优先。上面的代码用 --proxy-server 参数,只有 Chrome 走代理,驱动直接下载。国内网络先打开辅助工具再运行;仍然失败时,用 Service('chromedriver 路径') 指定已下载好的驱动。
网站接受服务器 IP 就用机房,单 IP 最快最便宜;网站拦截或频繁验证服务器 IP 时用动态住宅。
官方文档 · 核对于:
官方文档 · 核对于:
官方文档 · 核对于:
官方文档 · 核对于:
官方文档 · 核对于:
官方文档 · 核对于:
产品观察 · 核对于:
动态住宅按 GB 价格以价格页和控制台为准(低价线路 US$1.50/GB,100 GB 套餐 US$1.35/GB;优质线路 US$5.00/GB;1 PTC = 1 美元)。静态 ISP 和机房 IP 按数量和租期实时报价。
产品观察 · 核对于:
选项名称、计费方式与限制以 2026-10-18 线上控制台为准:线路(优质 / 低价)、出口模式、地区、州 / 省、城市、协议(HTTP / SOCKS5)、数量(1–500)、租期、自动续租 IP(暂未开放),我的资产 → 复制 / 轮换 / 续费 / 复制给 AI。动态住宅入口为 proxy.proxy302.com:2222(HTTP)和 :3333(SOCKS5)。 2026-10-18 只读核对生产目录:静态机房 IP 在售 8 个国家——美国、加拿大、英国、德国、荷兰、日本、韩国、新加坡。
本地示例 · 核对于:
2026-10-18 在本地带密码的代理夹具上运行了本段代码(凭据错误时返回 407),分别打开 HTTP 页面和经 CONNECT 隧道的 HTTPS 页面;Selenium 4.41.0 和 4.51.0,Chromium / ChromeDriver 153.0.8010.12。加认证处理并用 BiDi 导航时,页面经代理正常打开;密码错误时打不开。代理还在要求认证时直接用经典的 driver.get(),会一直卡到页面加载超时;第一次 BiDi 导航认证成功后,后续 driver.get() 正常。Selenium Manager 缓存为空时,本段代码直接下载 ChromeDriver 并正常运行;同一脚本改用 options.proxy 时失败,因为 Selenium Manager 把下载请求发给了代理,却不带密码。
本地实测只证明配置写法和认证路径正确,不代表能访问任何具体网站、国家或平台。
产品观察 · 核对于:
控制台「连接工具」页提供辅助工具(Windows / macOS 全局代理);「我的资产 → 复制给 AI」生成的说明写明:在中国大陆使用代理前需先打开辅助工具或已连上 VPN。
注册账号、一次充值,即可选择动态住宅、静态 ISP 或数据中心出口。动态住宅覆盖 195+ 国家与地区。