无需 KYC —— 无需身份证、自拍、文件证明。支持加密货币支付:BTC, USDT, USDC, ETH, SOL, LTC
语言: 简体中文
开始使用

代理错误参考 · 浏览器和客户端错误

net::ERR_TUNNEL_CONNECTION_FAILED出现的原因及解决方法

Chromium网络错误:每个工具中的精确错误信息、可能原因排序及有效解决方案。

最后更新:

快速回答

代理中的ERR_TUNNEL_CONNECTION_FAILED是什么意思?

net::ERR_TUNNEL_CONNECTION_FAILED表示Chrome请求代理开启到HTTPS站点的隧道,代理未响应200 Connection established。浏览器隐藏了真实状态码。在 CrawlRelay住宅代理中,通常因Playwright或Puppeteer缺少凭证,或目标无法访问网关。用curl -v重现查看真实状态码。

ERR_TUNNEL_CONNECTION_FAILED一览

错误ERR_TUNNEL_CONNECTION_FAILED
类型Chromium网络错误
发送方在代理拒绝或连接失败后浏览器报错
定义于CONNECT method: RFC 9110, section 9.3.6
要重试吗?先确认背后的状态码
先检查用curl -v重现以查看CONNECT的真实状态

ERR_TUNNEL_CONNECTION_FAILED是什么意思?

要通过HTTP代理加载HTTPS页面,浏览器先发送CONNECT host:443请求。代理若回应200,浏览器在隧道内启动TLS连接;其它状态,如407、403或502,会终止尝试,Chromium报一个通用错误。

因此这个错误提示的是失败位置(隧道)但不指明原因。原因即代理返回的状态码,curl能帮你看见。

在Python、curl、Node.js和浏览器中ERR_TUNNEL_CONNECTION_FAILED是什么样?

每个工具中相同的失败会有不同的提示信息。请在日志中搜索以下信息:

  • Playwright: page.goto: net::ERR_TUNNEL_CONNECTION_FAILED at https://...
  • Puppeteer: Error: net::ERR_TUNNEL_CONNECTION_FAILED at https://...
  • Chrome 地址栏: 显示“无法访问此网站”及代码 ERR_TUNNEL_CONNECTION_FAILED
  • 使用 Selenium 和 Chrome: 出现同样代码,包含在 WebDriverException 中

导致ERR_TUNNEL_CONNECTION_FAILED的原因是什么?

最可能的首要原因:

  • 未发送凭据(隐藏的 407)。Chrome 会忽略 --proxy-server 中的用户名和密码。
  • 目标拒绝访问(隐藏的 403),如代理使用政策所阻止的类别。
  • 目标无法到达(隐藏的 502 或 504):死主机、拼写错误或出口的 DNS 失败。
  • 端口错误:将浏览器指向 SOCKS5 端口当作 HTTP,或反之。

如何一步步诊断ERR_TUNNEL_CONNECTION_FAILED?

  1. 使用带有 -v 的 curl 运行相同 URL(命令如下)并读取 CONNECT 后的行。
  2. 407 表示需要凭据;403 表示目标被拒绝;502 或 504 表示目标或出口问题。
  3. 确认浏览器为 http:// 代理服务器使用 HTTP 端口。
  4. 在访问真实目标前,先测试简单页面如 https://api.ipify.org。
用curl测试失败的URL(HTTP端口,详细模式)
# Use the URL that fails; with https://api.ipify.org instead, you test the gateway alone.
# "HTTP/1.1 200 Connection established" first, then the site's own status: the site answered.
curl -v -x http://USERNAME:[email protected]:7777 https://TARGET_URL

# Same test through the SOCKS5 port, with DNS resolved at the exit
curl -v --socks5-hostname gw.crawlrelay.com:7778 --proxy-user USERNAME:PASSWORD https://TARGET_URL

如何修复ERR_TUNNEL_CONNECTION_FAILED?

  • Playwright: 在 proxy 选项中传递 server、username 和 password,可针对浏览器或上下文。详见 Playwright 指南。
  • Puppeteer: 使用 --proxy-server=http://host:port 启动,并在首次 goto 前调用 page.authenticate()。详见 Puppeteer 指南。
  • Selenium: 运行一个本地小转发器,添加凭据。详见 Selenium 指南。
  • 检查目标 是否符合我们的 可接受使用政策。
Playwright(Python):凭证作为独立字段
from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(proxy={
        "server": "http://gw.crawlrelay.com:7777",
        "username": "USERNAME-country-us",
        "password": "PASSWORD",
    })
    page = browser.new_page()
    response = page.goto("https://api.ipify.org")
    print(response.status, page.inner_text("body"))
    browser.close()

遇到ERR_TUNNEL_CONNECTION_FAILED后要重试吗?

仅当已知隐藏状态时才重试。隐藏的 407 或 403 会一直重复;需修正配置。隐藏的 502 或 504 可在新出口重试,类似任何网关错误。

ERR_TUNNEL_CONNECTION_FAILED如何应用于CrawlRelay?

CrawlRelay 的 HTTP 端口通过 CONNECT 隧道传递 HTTPS,所有基于 Chromium 的工具均支持。浏览器请使用 HTTP 端口:Chromium 不支持带用户名和密码的 SOCKS5。

网关:gw.crawlrelay.com,端口7777(通过CONNECT的HTTP、HTTPS)和端口7778(SOCKS5)。用户名格式:USERNAME-country-{cc}-state-{state}-city-{city}-zip-{zip}-asn-{asn}-session-{id}-ttl-{minutes}。相关内容:407 代理认证要求 · ERR_PROXY_CONNECTION_FAILED · Playwright 指南。

ERR_TUNNEL_CONNECTION_FAILED:开发者常问的问题

为什么 curl 能用而 Playwright 显示 ERR_TUNNEL_CONNECTION_FAILED?

因为 curl 会从代理 URL 传递凭据,而 Chromium 会忽略写在代理服务器地址中的凭据。在 Playwright 中,需将 username 和 password 作为 proxy 选项的独立字段传递。在 Puppeteer 中,在导航前调用 page.authenticate()。

我能在 Chrome 中使用带身份验证的 SOCKS5 代理吗?

不直接支持。Chromium 支持 SOCKS5 代理,但不支持 SOCKS5 用户名密码认证。改用网关的 HTTP 端口,该端口通过 CONNECT 隧道处理 HTTPS,或运行本地转发器为浏览器认证。

ERR_TUNNEL_CONNECTION_FAILED 是不是网站引起的?

很少直接。隧道位于浏览器和代理之间,所以错误发生在网站看到 TLS 握手之前。网站可能是间接原因,当它无法访问时,代理会对 CONNECT 请求返回 502 或 504。

本参考中的其他代理错误

HTTP 状态码

浏览器和客户端错误

连接和 TLS 错误

带有涵盖失败案例文档的住宅代理

来自US$0.50/GB的CrawlRelay住宅代理,流量永不过期。

从 US$0.50/GB 开始 · 无需 KYC

开始使用