dnspupdnspup全球网络探测服务

dnspup Customer API v1

面向客户系统的探测与网站监控接口,支持一次性 Ping、TCPing、HTTP、DNS、DNS 传播、Find Ping、MTR、路由追踪和网站体检,以及 HTTP、PING、TCPING、DNS、DNS 传播、SSL 监控任务。访问凭证由管理员审核并分配。

API 基址 https://api.dnspup.com版本 v1认证 X-API-Key + X-API-Secret来源 单一 IP 或域名白名单

来源白名单

新密钥只能绑定一个固定公网 IP 或一个完整服务器域名;管理员编辑旧密钥时也必须补充来源。

固定 IP:请求必须从管理员填写的公网 IP 发出,服务端按可信代理链判断来源。
服务器域名:域名不能单独证明网络来源,因此每次请求还必须提供 X-API-Source-Domain、X-API-Timestamp、X-API-Nonce 和 X-API-Signature。签名覆盖请求方法、转义路径、原始查询串、时间戳、nonce、规范化域名和原始请求体 SHA-256,具体拼接规则见项目文档。
域名来源的普通自定义请求头可以被伪造,不能作为安全边界。请使用随机 nonce、90 秒内时间戳和 HMAC 签名;签名失败、来源不匹配或 nonce 重放不会消耗月配额。

请求生成器

生成可直接复制的 curl 命令,凭证仅通过本机环境变量读取。

API 基址(固定官方地址)https://api.dnspup.com
运行命令前,请在本机终端安全设置 DNSPUP_API_KEY 与 DNSPUP_API_SECRET 环境变量。本页不会要求、接收、存储或复制真实凭证。

接口列表

健康检查无需认证;监控接口要求 API Key 已绑定用户。

异步检测与结果查询

六类探测沿用现有参数;先确认账号能力,再创建一次任务并查询结果。

仅当 GET /v1/account 返回 data.capabilities.asyncProbesV1 为 true 时使用异步创建;字段缺失或为 false 时继续使用原同步接口。节点目录的 capabilities.ipVersions 和 capabilities.tools 表示当前密钥可用的节点能力,最终以创建时校验为准。
POST /v1/probes
Prefer: respond-async
Idempotency-Key: 9a7db0e5-3ec0-4ee9-9544-3ef909565c64
Content-Type: application/json

{"type":"ping","target":"example.com","count":4,"ipVersion":"4"}

GET /v1/probes/{requestId}
以上仅展示新增请求头与路径,仍需携带凭证并通过来源校验。每次有意发起的新检测应生成并保存一个 1–128 位、不含空格的可打印 ASCII 幂等键。相同密钥、幂等键和规范化参数重放返回原任务,不重复执行或扣费;参数改变返回 409 idempotency_conflict。仅添加 Idempotency-Key 不会使同步请求具备幂等性。
新任务返回 202,重放返回 200;保存 data.requestId 后,仅用 GET 查询。创建响应丢失且未获得任务编号时,保留未知状态,重试必须沿用原幂等键与参数。域名绑定的每次 POST 或 GET 都需重新生成时间戳、nonce 和签名;GET 按空请求体签名。
{"data":{
  "requestId":"req_0123456789abcdef01234567",
  "status":"running",
  "completedNodes":0,
  "totalNodes":2,
  "createdAt":"2026-10-13T00:00:00Z",
  "updatedAt":"2026-10-13T00:00:01Z",
  "expiresAt":"2026-10-14T00:00:00Z",
  "queryUrl":"/v1/probes/req_0123456789abcdef01234567"
}}
状态包括 queued、running、completed、partial、timeout、failed、unknown。completedNodes 是已终结节点数,包含超时节点,不等于成功数。result 可包含阶段结果,其结构为原同步响应的 data 正文,不再嵌套 data;检测完成不代表目标可达,unknown 或 failed 仍可能保留部分结果。
查询不消耗检测额度,使用每把密钥每分钟 180 次的独立查询限流。建议每 2 秒查询一次并遵守 Retry-After;多任务共用此限额。只允许查询同一密钥创建的任务,其他密钥与不存在的任务均返回 404 task_not_found。
结果自创建起保留 24 小时,幂等记录保留 30 天。结果过期后查询和同键重放返回 410 result_expired,不重新执行或扣费。收到任务编号后不得降级为同步 POST;查询失败、超时或 unknown 均不能自动换新键重跑。
幂等机制防止重复受理和扣费,不承诺 Agent 恰好执行一次。执行证据丢失时可能返回 unknown;需要再次检测时,应由调用方明确发起新任务。

错误与限制

所有错误均使用稳定的 JSON error envelope,便于客户系统统一处理。

HTTP错误码说明
400invalid_request / invalid_nodes / trusted_dns_resolution_failed参数、目标、节点选择或可信公网 DNS 解析无效
400invalid_idempotency_key异步幂等请求头缺失、重复或格式无效
401unauthorized密钥缺失、停用、到期或已撤销
401signature_required / malformed_signature / bad_signature / stale_signature域名来源调用缺少签名、签名格式错误、内容被篡改或时间戳过期
403source_forbidden / owner_required / target_restricted / tool_not_allowed来源 IP/域名不匹配、密钥未绑定用户、目标不允许探测,或密钥未开通该工具
409replay域名来源请求的 nonce 已经使用
404task_not_found任务不存在或不属于当前密钥
409idempotency_conflict同一幂等键已用于不同的规范化参数
410result_expired检测结果已过期,原任务不会重新执行或扣费
409entitlement_exceeded监控任务数量、周期、节点或月度节点额度超限
429quota_exceeded本月套餐请求配额已用完
429rate_limited / capacity_limited密钥频率或当前节点探测容量达到上限
503service_unavailable客户 API 暂停服务
503async_unavailable异步创建未启用或暂不可用
每次新受理的探测请求消耗 1 次 API 月配额,异步任务查询及同一幂等键的重放不重复扣费;监控轮次另按本轮选中节点数计入监控 units。两种额度独立,以 GET /v1/account 与监控接口返回的 entitlement 为准。节点筛选、批量容量和为单次探测预留槽位的规则与站内公开工具一致。