nurl-key 短链管理
nurl-key 工具使用指南,通过无头 API 远程管理短链
nurl-key 是 Short_NURL 的远程短链管理工具,通过无头 API(headless)远程操作短链,需要网络连接。
| 工具 | 定位 | 依赖网络 | 用途 |
|---|---|---|---|
nurl | 本地管理工具 | 否 | 密钥生成/查看/撤销、清理过期数据(点此跳转) |
nurl-key | 远程短链客户端 | 是 | 通过无头 API 查看/创建/删除短链 |
本文档使用 {花括号} 标记占位符,使用时请替换为实际值:
| 占位符 | 含义 | 示例 |
|---|---|---|
{你的域名} | 短链服务部署的域名 | s.example.com |
{su_你的Key} | 你的 API Key | su_aBcDeFgH1234 |
{长链接} / {目标长链接} | 要缩短的原始 URL | https://example.com/very/long/path |
{短链后缀} | 短链路径部分;普通密钥 1–4 位,服务密钥最长 5 位 | a1b2 |
{完整短链地址} | 生成的完整短链 URL | https://s.example.com/a1b2 |
{ISO 8601 过期时间} | 链接过期时间,ISO 8601 格式 | 2026-05-20T12:00:00+08:00 |
{永久/临时短链当前数量} | 当前已有的短链数量 | 12 |
{永久/临时短链配额上限} | 配额上限值 | 10000 |
一、运行方式
cd {项目目录}
php nurl-key -h二、命令总览
| 操作 | 说明 |
|---|---|
-list | 查看所有短链 |
-stat | 查看配额状态 |
-get "code" | 查看单条短链 |
-add | 创建短链 |
-rm | 删除短链 |
-v | 查看 nurl-key 客户端内部版本 |
-h / -help | 显示帮助信息 |
-insecure | 跳过 SSL 证书验证(仅用于内网/自签名证书) |
三、参数
参数支持两种赋值格式:
| 格式 | 示例 | 说明 |
|---|---|---|
| 空格分隔 | -key "su_xxx" | 经典格式,值紧随标志 |
| 冒号分隔(v2.1 新增) | -key:"su_xxx" | 紧凑格式,同一参数内赋值 |
| 参数 | 说明 | 示例 |
|---|---|---|
-key "su_xxx" | API Key(必填) | -key "su_aBcDe..." 或 -key:"su_aBcDe..." |
-url "https://..." | 目标长链接(-add 必填) | -url "https://..." 或 -url:"https://..." |
-ttl N | 有效期秒数(默认 0=永久) | -ttl 604800 或 -ttl:604800 |
-code "abc" | 自定义短链后缀;普通密钥 1-4 位,服务密钥 1-5 位(可选) | -code "demo" 或 -code:"demo" |
-len 4|5 | 自动生成短码的长度;仅服务密钥生效 | -len 5 或 -len:5 |
-len 只影响未指定 -code 时的自动短码。nurl-key 仅接受 4 或 5;服务端只对服务密钥应用该参数,常驻密钥和一次性密钥即使传入 -len 5,仍生成 4 位短码。服务密钥的自定义 -code 最长 5 位,其他密钥最长 4 位。
四、使用示例
1. 创建短链
php nurl-key -key:"{su_你的Key}" -add -url:"{目标长链接}" -ttl:0正在创建短链...
创建成功 ✓
短链:{完整短链地址}TTL 常用值:0 永久 · 1800 30分钟 · 3600 1小时 · 86400 1天 · 604800 7天
创建接口成功时固定返回 HTTP 200,响应字段如下:
| 字段 | 含义 |
|---|---|
short_url | 完整短链地址 |
exp | 永久短链为 null;临时短链为 ISO 8601 时间 |
dedup | true 表示复用已有永久短链,未新增冷存储记录 |
synced | 热存储是否同步成功;false 时短链暂时可能无法跳转 |
warning | 同步失败时的说明;正常时为 null |
key_consumed | 是否消费了一次性密钥 |
当 synced=false 时,nurl-key 会在标准错误中显示服务端的 warning;当 key_consumed=true 时,会提示该一次性密钥不可再次使用。
2. 查询短链
php nurl-key -key:"{su_你的Key}" -list列表接口返回 permanent 和 temporary 两个数组。每条记录均包含 id、url、lurl、exp;永久短链的 exp 为字符串 "permanent",临时短链为 ISO 8601 时间。过期临时短链会被过滤。
3. 删除短链
php nurl-key -key:"{su_你的Key}" -rm -code:"{短链后缀}"删除接口返回 { "ok": true, "synced": true|false }。当 synced=false 时,冷存储已经删除成功,但热存储可能仍在短时间内保留旧条目,客户端会显示缓存延迟警告。
4. 查看单条短链
php nurl-key -key:"{su_你的Key}" -get "{短链后缀}"单条查询返回 id、url、lurl、exp。永久短链的 exp 为 "permanent";临时短链为 ISO 8601 时间;已过期临时短链返回 404 expired。
5. 查看配额状态
php nurl-key -key:"{su_你的Key}" -stat配额接口以冷存储计数为准,返回 perm_count、temp_count、perm_limit、temp_limit、hot_available;热存储可用时还会返回 hot_perm_count、hot_temp_count。当前 nurl-key 只显示前四项,且接口中的 perm_limit / temp_limit 是普通用户配额字段,不会改写为服务密钥的 svc_perm_limit / svc_temp_limit。
6. 密钥权限
| 操作 | 常驻密钥 | 一次性密钥 | 服务密钥 |
|---|---|---|---|
-add | 允许 | 允许,认证时立即消费 | 允许,按服务密钥配额阈值检查并支持 -len 4|5 |
-get | 允许 | 允许,认证时立即消费 | 允许 |
-list | 允许 | 禁止,返回 403 onetime_forbidden | 允许 |
-stat | 允许 | 禁止,返回 403 onetime_forbidden | 允许 |
-rm | 允许 | 禁止,返回 403 onetime_forbidden | 允许 |
一次性密钥由服务端在认证阶段立即消费。参数校验失败、短码冲突、查询不存在,甚至调用 -list / -stat / -rm 后收到 403,都不会返还或自动补充该密钥。请通过 php nurl -full 手动补充密钥池。
五、错误处理
| 错误信息 | 原因 |
|---|---|
缺少密钥 | 未指定 -key |
缺少目标链接 | -add 未指定 -url |
网络错误:... | 无法连接到服务 |
错误 (invalid_key): 密钥失效或不正确 [HTTP 406] | Key 无效或过期 |
错误 (onetime_forbidden): 一次性密钥无权进行短链管理 [HTTP 403] | 一次性密钥调用了列表、配额或删除接口;该密钥已经被消费 |
错误 (invalid_url): 目标链接无效 [HTTP 400] | URL 不是有效的 HTTP / HTTPS 地址 |
错误 (private_url): 目标链接指向内网地址,已被拒绝 [HTTP 400] | SSRF 防护拒绝内网或保留地址 |
错误 (url_too_long): 目标链接过长(最大 2048 字符) [HTTP 400] | URL 超过长度限制 |
错误 (invalid_ttl): TTL 必须为整数 [HTTP 400] | API 收到非整数 TTL |
错误 (ttl_exceeded): TTL 超限 [HTTP 400] | TTL 小于 0 或超过服务端 ttl_max |
错误 (invalid_code): 后缀格式错误 [HTTP 400] | 后缀字符或长度不符合当前密钥类型限制 |
错误 (reserved_code): 保留字 [HTTP 400] | 使用了 API / Nginx 路由保留短码 |
错误 (conflict): 已占用 [HTTP 409] | 自定义后缀冲突 |
错误 (quota_exceeded): 已达上限 [HTTP 429] | 配额已满 |
错误 (not_found): 该短链不存在 [HTTP 404] | 短码不存在 |
错误 (expired): 该短链已过期 [HTTP 404] | 查询的临时短链已经过期 |
错误 (data_inaccessible): 数据文件不可访问,请检查文件权限 [HTTP 430] | 服务端数据文件不可读写 |
错误 (data_corrupted): 数据文件损坏,请检查服务端日志 [HTTP 500] | 服务端 JSON 数据损坏 |
错误:-len 必须为 4 或 5 | 客户端在发起请求前拒绝了非法 -len |
nurl-key 通过无头 API(X-Headless-Token)通信,支持常驻密钥、一次性密钥和服务密钥三种类型。服务密钥在前端面板 API 中会被拒绝,但在此工具中可正常使用。nurl-key -v 显示的是客户端脚本自身的内部版本,不等同于 Short_NURL 发行包版本。