← 返回探针|API 文档
/api/ech-check

ECH 支持检测 API

检测指定域名是否启用了加密客户端问候(Encrypted Client Hello,ECH)。 支持两种检测模式:通过多 DNS 解析器查询 HTTPS 记录(DNS 模式),以及通过 TLS 握手 Hello Retry Request 直接从服务器获取 ECH 配置(HRR 模式)。

免费无需鉴权CORS 已开放

端点

http
GET  /api/ech-check?domain=example.com
POST /api/ech-check

参数

domain*
string

目标域名,不含协议头和路径。例如:example.com

mode
"dns" | "hrr" | "all"默认:dns

检测模式。dns — 通过多 DoH 解析器查询 HTTPS DNS 记录; hrr — 通过 TLS Hello Retry Request 直接获取; all — 并行运行两种模式。

resolvers
string[]默认:Cloudflare, Google, Alibaba, Tencent

仅 DNS 模式有效。逗号分隔的解析器名称(GET),或数组(POST)。可选值:Cloudflare、Google、Alibaba、Tencent、Custom。


响应格式

json
{
  "domain": "meta.com",
  "mode": "dns",
  "supported": true,
  "results": [
    {
      "resolver": "Cloudflare",
      "detected": true,
      "error": null,
      "details": {
        "version": "ECHConfig draft-18 (0xfe0d)",
        "configId": 42,
        "kemId": "DHKEM(X25519, HKDF-SHA256)",
        "publicKeyLength": 32,
        "publicKeyFingerprint": "a3f2...",
        "publicName": "meta.com",
        "hpkeSuite": {
          "kem": "DHKEM(X25519, HKDF-SHA256)",
          "kdf": "HKDF-SHA256",
          "aead": "AES-128-GCM"
        },
        "rawECHConfig": "0045fe0d..."
      }
    }
  ],
  "summary": {
    "total": 4,
    "detected": 3,
    "consistent": false
  }
}
domainstring查询的域名
modestring使用的检测模式
supportedboolean至少一个来源检测到 ECH 配置则为 true
resultsarray每个解析器/来源的检测结果
results[].resolverstring解析器名称
results[].detectedboolean是否检测到 ECH 配置
results[].errorstring | null错误信息,无错误时为 null
results[].detailsobject | nullECH 配置详情,未检测到时为 null
summary.totalnumber总检测来源数量
summary.detectednumber检测到 ECH 的来源数量
summary.consistentboolean所有来源结果是否一致

示例

GET — DNS 模式(默认)

http
GET /api/ech-check?domain=meta.com

GET — HRR 模式

http
GET /api/ech-check?domain=meta.com&mode=hrr

GET — 两种模式并行

http
GET /api/ech-check?domain=meta.com&mode=all

GET — 指定解析器

http
GET /api/ech-check?domain=meta.com&resolvers=Cloudflare,Google

POST — 完整请求体

http
POST /api/ech-check
Content-Type: application/json

{
  "domain": "meta.com",
  "mode": "all",
  "resolvers": ["Cloudflare", "Google"]
}

cURL

http
curl "https://your-deployment.vercel.app/api/ech-check?domain=meta.com&mode=all"

JavaScript (fetch)

http
const res = await fetch('/api/ech-check?domain=meta.com&mode=dns');
const data = await res.json();
console.log(data.supported); // true or false

错误码

状态码原因响应体
400缺少 domain 参数或域名格式非法{ "error": "Missing required parameter: domain" }
405请求方法不受支持(仅 GET/POST){ "error": "Method not allowed" }
500服务器内部错误(DNS 查询失败等){ "error": "..." }

注意事项

  • HRR 模式在 Vercel 生产环境中通过独立的 Go Serverless Handler 运行,需部署后方可使用。
  • DNS 模式通过标准 DoH(DNS-over-HTTPS)查询,结果受各解析器缓存影响,TTL 通常为 60–300 秒。
  • 所有请求均已开放 CORS,可从浏览器前端直接调用。
  • 本 API 无速率限制,但请避免高频滥用。