·

打破黑箱:近来开发的ECH支持检测网页工具ECH Probe

 对于检测某个网站的ECH支持情况,目前对普通用户来说类似黑箱。一般来说可以用dig命令查HTTPS记录或者用Openssl来获取HRR的数据,但配置较复杂且结果不直观。我们先前开发的Github https://github.com › coolapijust › SniViewer 翻译此结果 固然可以做到,但刚需本地软件运行。它还需要你手上有一个可访问的无污染DoH。

为了降低检测门槛,我们推出了一个功能全面且走完整逻辑的网页工具ECH Probe。它还能帮助检测某些DNS是否存在对HTTPS记录的污染。

目前存在的网页ECH探测要么是只检测浏览器是否在与该网站连接启用ECH,要么是简单地对目标网站报一个支持。同时,HRR探测没有被集成。我们的工具给了较完整的检测和解析功能,同时提供了api用于批量检测。

ECH Probe有两种工作模式:

方式一:DNS 查询(常规模式)

大多数网站通过 DNS 的 HTTPS 记录发布 ECH 配置:

$ dig HTTPS example.com

;; ANSWER SECTION:
example.com. 300 IN HTTPS 1 . alpn="h3,h2" ech="AEj+DQB..."

ECH Probe 会同时查询多个 DNS 解析器(Cloudflare、Google、AliDNS 以及DNSPod),对比结果是否一致,帮助发现 潜在的DNS 污染问题。

方式二:Hello Retry Request(HRR 模式)

某些网站部署了ECH支持而未公开(如 Meta 的服务)。它们的 ECH 配置不会出现在 DNS 记录中。它们只在 TLS 握手过程中通过 Hello Retry Request 机制下发。

工作原理:

  1. 客户端发送无效的 ECH 公钥给服务器

  2. 服务器返回 ECHRejectionError,附带正确的 ECH 配置

  3. 客户端从响应中提取真实的公钥

可简单理解为故意说错密码,让服务器告诉你正确的密码格式。

ECH Probe支持可视化解析echconfig,它会展示:

版本 (Version)

  • 标识 ECH 协议版本号

    配置 ID (Config ID)

  • 1 字节整数,范围 0-255 最大域名长度 (Maximum Name Length)

  • 表示该 ECH 配置支持加密的最大域名长度

KEM (Key Encapsulation Mechanism)

  • 密钥封装机制,决定如何安全地交换密钥

HPKE 套件组合

Public Name

  • ECH 配置对应的域名,客户端在握手时使用此域名进行外层 SNI

  • Base64 编码的原始 ECHConfig

  • 技术实现

  • 前端: Next.js + TypeScript + Tailwind CSS

  • DNS 查询: 基于Node.js的后端 DoH 代理,避免前端直连被阻断

  • HRR 模式: Go 1.25+ 的 crypto/tls ECH 支持,部署在 Vercel Serverless Functions

    通过运行在Vercel Serverless Functions的后端,可避免DNS连不上,ip被阻断,sni阻断等一堆问题,快速地展示目标网站支持情况。

    我们无任何日志记录。欢迎自行部署上Vercel。api调用方法请阅读README.md

立即体验

🔗 在线工具: https://future.softx.eu.org

📦 开源代码: https://github.com/coolapijust/Ech-probe

ECH 是互联网隐私的重要进步。目前而言,它还没有被大规模阻断,因此可以利用它的特性做很多事。


本文介绍的项目 ECH Probe 是一个开源的 ECH 配置检测工具,支持常规 DNS 查询和 HRR 模式两种检测方式。