
一、适用场景短链Short URL在社交媒体、营销、二维码分享中被广泛使用但其真实跳转链路往往对用户不透明。对于安全分析人员、运营人员或开发者来说还原短链的全部跳转过程有助于钓鱼链接溯源分析恶意短链经过多少次重定向最终指向哪个域名判断其是否安全。效果分析查看短链在跳转过程中是否经过中间页如跳转统计页以及每跳的耗时优化用户触达路径。二维码内容核对扫描二维码得到短链后展开还原实际目标地址防止被劫持。CDN/网关调试定位跳转失败的节点判断是服务端问题还是客户端重定向逻辑问题。本接口提供完整的跳转链路还原输出每一跳的状态码、跳转方式Location 或者 Meta-Refresh以及耗时适合深度追踪。二、接口能力边界接口名称短链还原unshort请求方法GET端点https://v1.apizero.cn/api/unshortQPS 上限5 次/秒超过会被限流最大跳转深度max_hops1 到 30默认 10。超过设定深度后停止追踪并返回已收集的链路。该接口的核心能力是完整还原链路的每一跳并区分跳转方式HTTP 响应头中的Location跳转常见 301/302/307/308以及 HTMLmeta http-equivrefresh跳转。后者在某些短链服务中用于统计或防爬传统工具可能只追踪 HTTP 重定向而忽略 Meta-Refresh本接口弥补了这一盲区。能力局限性接口只接受合法的 HTTP/HTTPS 短链无法处理非 HTTP 协议如磁力链、mailto。对于需要 JavaScript 执行才能跳转的短链如某些使用 JS 重定向的第三方服务本接口不会执行 JS因此无法还原这些链路。如果短链指向一个需要登录或 Cookie 才能继续跳转的页面接口只会返回该页面的状态如 200不会模拟登录。最大超时时间以文档为准。三、请求参数与鉴权方式鉴权通过请求头X-API-Key传递 API Key。需先获取有效的 API Key本教程不涉及申请流程请查阅官方文档。Query 参数参数名必填类型说明示例url是string要展开的短链需 URL 编码https://t.cn/A6abcdmax_hops否number最大跳转次数1-30默认 1015注意url参数必须是一个有效的、可访问的短链地址。接口会对 URL 进行规范化处理但建议调用方自行编码非 ASCII 字符。四、Curl 接入示例以下是一个完整的 curl 请求示例请将$APIZERO_API_KEY替换为真实 Keycurl -sS \ -X GET \ -H X-API-Key: $APIZERO_API_KEY \ https://v1.apizero.cn/api/unshort?urlhttps://t.cn/A6abcd如果需要指定最大跳转深度例如追踪最多 5 跳curl -sS \ -X GET \ -H X-API-Key: $APIZERO_API_KEY \ https://v1.apizero.cn/api/unshort?urlhttps://t.cn/A6abcdmax_hops5Python 请求示例使用 requests 库import requests api_key your-api-key url https://t.cn/A6abcd max_hops 10 headers {X-API-Key: api_key} params {url: url, max_hops: max_hops} resp requests.get(https://v1.apizero.cn/api/unshort, headersheaders, paramsparams) data resp.json() print(data)JavaScript浏览器或Node.js示例const apiKey your-api-key; const url https://t.cn/A6abcd; fetch(https://v1.apizero.cn/api/unshort?url${encodeURIComponent(url)}, { headers: { X-API-Key: apiKey } }) .then(res res.json()) .then(data console.log(data));五、响应数据模型解读接口返回 JSON 对象结构示例与素材一致{ code: 0, msg: 成功, data: { original_url: https://t.cn/A6abcd, final_url: https://example.com/landing, hops: 2, is_redirect: true, total_time_ms: 412, chain: [ { hop: 1, url: https://t.cn/A6abcd, status: 302, method: Location, next: https://example.com/landing, duration_ms: 120 }, { hop: 2, url: https://example.com/landing, status: 200, method: final, duration_ms: 292 } ] } }字段说明code业务状态码0 表示成功非 0 参见错误码列表。msg状态描述。data.original_url传入的原始短链。data.final_url最终到达的 URL可能是 200 页面或重定向链的最后一跳。data.hops实际发生的跳转次数包括最终响应步骤。data.is_redirect布尔值表示是否发生了重定向即是否至少有一次跳转。data.total_time_ms从请求原始短链到获取最终响应的总耗时毫秒包含所有跳转的耗时。data.chain跳转链路数组按顺序排列。每个元素包含hop当前跳序号从1开始。url当前步骤请求的URL。statusHTTP 状态码。method跳转方式。可能值LocationHTTP 重定向头、Meta-RefreshH5 meta 标签、final最后一步非跳转。duration_ms当前步骤的耗时毫秒。特别说明如果遇到 Meta-Refresh 跳转method会显示为Meta-Refresh此时接口会模拟浏览器解析 meta 标签并继续追踪。这是本接口区别于普通 curl 调用的关键能力。六、常见错误码与排查思路codemsg 含义可能原因与解决0成功-1参数错误url 为空或格式不正确max_hops 超出范围或不是数字。检查请求参数。2API Key 无效或缺失请求头未提供 X-API-Key或者 Key 已过期。3请求频率过高超过 QPS 5/s请降低并发或增加延迟。4目标 URL 不可达短链域名无法解析、连接超时或被拒绝。检查网络或确认短链地址有效。5跳转次数超过最大限制实际跳转超过设置的 max_hops返回已收集的链路。可增大 max_hops 再试。6内部错误服务端异常可稍后重试。排查技巧如果返回空链或 hops 为 0检查 URL 是否真的是一个短链或者是否已被屏蔽。如果长时间没有响应检查网络环境和 API 端点可达性。注意接口对 HTTPS 的要求如果短链是 http可能被重定向到 https但接口会自动跟随。七、工程化使用注意事项API Key 管理不要将 Key 硬编码在客户端代码中建议使用环境变量或密钥管理服务。对于前端调用应通过后端代理隐藏 Key。错误重试对于 code 3限流和 code 6内部错误可采用指数退避策略重试如等待 1s、2s、4s...最多 3 次。超时设置每个请求的总耗时受跳转次数和网络影响建议客户端超时时间设为 30 秒以上视 max_hops 而定。URL 编码确保传入的 url 参数已经 URL 编码尤其是包含特殊字符时。使用encodeURIComponent()或urllib.parse.quote()。数据存储如果需分析历史短链建议将每次请求的original_url、final_url、hops和total_time_ms存入数据库便于后续报表。日志记录记录每次请求的 API Key脱敏后、请求参数、耗时和结果以便审计和排错。合规使用不要使用本接口对大量未经授权的短链进行批量扫描以免触发对方反爬措施或法律风险。应仅在自身业务范围内合理调用。八、参考文档短链还原 API 文档https://apizero.cn/aidocs/unshort原始文档Markdownhttps://apizero.cn/aidocs/unshort/raw.md