/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 无速率限制,但请避免高频滥用。