开发文档

v3.6.9

把短链能力接进你自己的程序:一次 GET 请求就能生成短链, 支持纯文本 / JSON / JSONP 三种返回,参数与主流短链平台保持一致。

快速开始

  1. 注册并登录,进入「用户中心 → API 接口」拿到你的 API Key;
  2. 把下面的地址换成你的 Key,浏览器打开就是一条短链:
https://dwz.dnfsf.vip/api.htm?url=https%3A%2F%2Fwww.example.com%2Fvery%2Flong%2Fpath&key=你的API_KEY

返回纯文本短链。想要结构化结果就加上 &format=json。

Key 与账号绑定,调用会占用套餐里的「API 次数/月」额度,请勿写进前端 JS 或公开仓库。 Key 泄露后可在「用户中心 → 账号设置」重置。

接口一览

能力地址鉴权
生成短链(推荐) https://dwz.dnfsf.vip/api.htm key 参数
生成 / 统计 / 列表 / 账户 https://dwz.dnfsf.vip/api.php?action=… key 参数
兼容老脚本的 POST 调用 https://dwz.dnfsf.vip/api.php 无需 key(走游客规则)
上传文件生成媒体短链 https://dwz.dnfsf.vip/upload.php 需登录 Cookie

不传 domain 时,短链挂在哪个域名

dwz.dnfsf.vip

兼容接口 /api.htm

最常用

GET 或 POST 均可。参数名与常见短链平台(3wt、新浪短链那一类)一致,老代码基本不用改。

https://dwz.dnfsf.vip/api.htm

请求参数

参数必填说明
url是要缩短的地址,建议 urlencode,如 http%3A%2F%2Fwww.baidu.com
key是你的 API Key
format否json / jsonp;不传返回纯文本
callback否format=jsonp 时的回调函数名,如 cb
expireDate否如 2030-03-31 或 2030-03-31 18:00:00;留空默认 3 个月;≥ 2040-01-01 表示永久
domain否域名编号(见下表,如 3 或 u8),也可直接写完整域名;留空用默认域名(开了「短链不使用主域名」时是共享域名里的第一个,否则是主站域名)
protocol否1 = 带 http(s)://(默认);0 = 不带
alias否自定义短码(需套餐允许、长度符合站点规则)
title否短链备注名,方便自己在后台辨认
tinyUrlGroupId否分组 ID,本系统暂不分组,传了只做记录,不影响结果

返回字段

字段说明
code字符串 "0" 成功,"1" 失败
url生成的短网址;失败时原样返回你传进来的 url
err失败原因,成功时为空字符串

域名编号(domain 填这一列)

编号域名
3 dw.dnfsf.vip

共享域名写编号(如 &domain=3); 自己的专属域名加前缀 u(如 &domain=u8),避免和共享域名重号。

调用示例 · 纯文本

GET https://dwz.dnfsf.vip/api.htm?url=https%3A%2F%2Fwww.example.com&key=你的KEY&expireDate=2030-03-31

→ https://dwz.dnfsf.vip/Ab3xY9

调用示例 · JSON

GET https://dwz.dnfsf.vip/api.htm?format=json&url=https%3A%2F%2Fwww.example.com&key=你的KEY

→ {"code":"0","url":"https://dwz.dnfsf.vip/Ab3xY9","err":""}

调用示例 · JSONP(跨域直接用 script 标签)

GET https://dwz.dnfsf.vip/api.htm?format=jsonp&url=https%3A%2F%2Fwww.example.com&callback=cb&key=你的KEY

→ cb({"code":"0","url":"https://dwz.dnfsf.vip/Ab3xY9","err":""});

curl

curl "https://dwz.dnfsf.vip/api.htm?format=json&key=你的KEY" \
     --data-urlencode "url=https://www.example.com/very/long/path"

PHP

<?php
$api = 'https://dwz.dnfsf.vip/api.htm';
$q = http_build_query(array(
    'key'    => '你的KEY',
    'format' => 'json',
    'url'    => 'https://www.example.com/very/long/path',
));
$json = json_decode(file_get_contents($api . '?' . $q), true);
echo $json['code'] === '0' ? $json['url'] : ('失败:' . $json['err']);

Node.js(18+)

const api = 'https://dwz.dnfsf.vip/api.htm';
const qs  = new URLSearchParams({ key: '你的KEY', format: 'json', url: 'https://www.example.com' });
const r   = await fetch(`${api}?${qs}`).then(r => r.json());
console.log(r.code === '0' ? r.url : r.err);

Python 3

import requests
r = requests.get('https://dwz.dnfsf.vip/api.htm', params={
    'key': '你的KEY', 'format': 'json',
    'url': 'https://www.example.com/very/long/path',
}).json()
print(r['url'] if r['code'] == '0' else r['err'])

通用接口 /api.php

带 action 参数时走这一套,返回统一 JSON: {"code":200,"msg":"ok","data":{…}}。

action作用主要参数
shorten生成短链 / 密语url 或 message、alias、password、expires、domain、device、region
stats单条短链的访问统计code
list我的短链列表(分页)page、per
account账户与额度信息—

参数

参数说明
keyAPI Key(必填)
actionshorten / stats / list / account
urlaction=shorten:目标网址
messageaction=shorten:密语内容(与 url 二选一)
alias自定义短码
password访问密码
expires过期时间,YYYY-MM-DD
max_clicks最大访问次数,0 为不限
codeaction=stats:短码

示例:生成短链

POST https://dwz.dnfsf.vip/api.php
key=你的KEY
action=shorten
url=https://example.com/very/long/path

返回

{
  "code": 200,
  "msg": "ok",
  "data": { "shorturl": "https://dwz.dnfsf.vip/Ab3xY9", "code": "Ab3xY9" }
}

上传文件(媒体短链)

需要先登录(带浏览器 Cookie)。multipart/form-data POST:

POST https://dwz.dnfsf.vip/upload.php
file=@photo.jpg
kind=image            # image | audio | video | file

→ {"ok":true,"code":"Ab3xY9","url":"https://dwz.dnfsf.vip/Ab3xY9","name":"photo.jpg","size":102400,"kind":"image"}

错误码与提示

兼容接口(code 为 "0"/"1")

err 内容原因 / 处理
缺少 url 参数url 没传或为空
缺少 key 参数…未带 key,去用户中心拿
key 无效或已被重置Key 写错或在别处重置过,请重新复制
该账号已被停用账号被封禁,联系管理员
本月 API 调用次数已用完套餐额度用完,下月 1 日重置或升级套餐
expireDate 格式不正确用 2030-03-31 这种格式
domain 参数无效…编号不存在 / 不是你的专属域名 / 未通过验证
接口已关闭站长在后台关掉了开放 API

通用接口(code 为数字)

code含义
200成功
400参数错误或生成失败(看 msg)
401key 缺失 / 无效
403接口关闭,或账号被停用
404短码不存在或不属于当前账号
429超出套餐的每月调用次数

额度、规则与限制

  • 调用成功才计一次额度;额度按自然月统计,每月 1 日 00:00 重置。
  • 目标地址必须以 http:// 或 https:// 开头,javascript:、data: 等伪协议会被拒绝。
  • 短码区分大小写,长度与字符集由站长在后台配置;默认字符集为大小写字母 + 数字。
  • 同一账号重复提交相同的「内容 + 类型 + 密码」会直接复用已有的短链,不会重复占用额度。
  • 演示站可能开启了「访问验证」「防红跳转」「广告插页」,这些属于站点策略,不影响接口返回的短链。

常见问题:短链打开 404

短链(域名/短码)在服务器上并不存在真实文件, 需要「伪静态」把请求转交给 index.php。没配置好就会全站 404。

Nginx(宝塔 / 1Panel):网站 → 设置 → 伪静态,粘贴

location / {
    if (!-e $request_filename){
        rewrite ^/(.*)$ /index.php?id=$1 last;
    }
}

Apache / LiteSpeed

安装包根目录已带 .htaccess,上传到网站根目录即可(隐藏文件,FTP 要开启显示隐藏文件)。

子域名(go.xxx.com / qwe.xxx.com)打开也是 404?

A 记录解析到服务器只是第一步,还得让服务器「愿意接」这个域名。两种做法:
· 省事做法(推荐,一次配好以后不用再加):把本站设成默认站点 —— 宝塔「网站 → 站点列表上方 默认站点 → 选本站」,或 Nginx 写 listen 80 default_server; server_name _;。 之后任何指向本机的域名都会进本站,用户加多少域名都不用改服务器。
· 逐个做法:宝塔:网站 → 主站 → 设置 → 域名管理 → 添加域名(不要用「新建站点」单独建一个)。
配完在后台「短链域名 → 接入检测」确认;程序侧默认开启域名白名单,只有登记过的域名才会解析短链。

还不行?按顺序排查

  • 后台「系统设置 → 站点信息」里的站点地址,是否和你实际访问的域名完全一致(含 http/https、有无 www、有无子目录);
  • 后台「系统工具 → 短链访问自检」,看检测结果给出的具体原因;
  • CDN / 防火墙(宝塔 WAF、安全狗)是否拦截了不存在的路径,先关掉试一次;
  • 页面显示「链接不存在」而不是 404,说明伪静态是通的,是短码本身错误 / 过期 / 被删。

更完整的规则(IIS、子目录部署、缓存排查)见安装包里的 伪静态规则.txt。

接口有能力升级或参数变更时,本页会同步更新。v3.6.9