Callback Provider 是一个通用的自定义回调接口,允许您将 DDNS 更新请求转发到任何自定义的 HTTP API 端点或者webhook。这个 Provider 非常灵活,支持 GET 和 POST 请求,并提供变量替换功能。
参数 | 说明 | 必填 | 示例 |
---|---|---|---|
id |
回调URL地址,支持变量替换 | ✅ | https://api.example.com/ddns?domain=__DOMAIN__&ip=__IP__ |
token |
POST 请求参数(JSON对象或JSON字符串),为空时使用GET请求 | 可选 | {"api_key": "your_key"} 或 "{\"api_key\": \"your_key\"}" |
{
"id": "https://api.example.com/ddns?domain=__DOMAIN__&ip=__IP__",
"token": "",
"dns": "callback",
"ipv4": ["sub.example.com"],
"ipv6": ["ipv6.example.com"]
}
当 token
为空或未设置时,使用 GET 请求方式:
{
"id": "https://api.example.com/update?domain=__DOMAIN__&ip=__IP__&type=__RECORDTYPE__",
"token": "",
"dns": "callback"
}
实际请求示例:
GET https://api.example.com/update?domain=sub.example.com&ip=192.168.1.100&type=A
当 token
不为空时,使用 POST 请求方式。token
可以是 JSON 对象或 JSON 字符串,作为 POST 请求体:
JSON 对象格式:
{
"id": "https://api.example.com/ddns",
"token": {
"api_key": "your_secret_key",
"domain": "__DOMAIN__",
"value": "__IP__",
"type": "__RECORDTYPE__",
"ttl": "__TTL__"
},
"dns": "callback"
}
JSON 字符串格式:
{
"id": "https://api.example.com/ddns",
"token": "{\"api_key\": \"your_secret_key\", \"domain\": \"__DOMAIN__\", \"value\": \"__IP__\"}",
"dns": "callback"
}
实际请求示例:
POST https://api.example.com/ddns
Content-Type: application/json
{
"api_key": "your_secret_key",
"domain": "sub.example.com",
"value": "192.168.1.100",
"type": "A",
"ttl": "300"
}
Callback Provider 支持以下内置变量,在请求时会自动替换:
变量 | 说明 | 示例值 |
---|---|---|
__DOMAIN__ |
完整域名 | sub.example.com |
__IP__ |
IP地址(IPv4或IPv6) | 192.168.1.100 或 2001:db8::1 |
__RECORDTYPE__ |
DNS记录类型 | A 、AAAA 、CNAME |
__TTL__ |
生存时间(秒) | 300 、600 |
__LINE__ |
解析线路 | default 、unicom |
__TIMESTAMP__ |
当前时间戳 | 1634567890.123 |
配置:
{
"id": "https://api.example.com/ddns/__DOMAIN__?ip=__IP__&ts=__TIMESTAMP__",
"token": {
"domain": "__DOMAIN__",
"record_type": "__RECORDTYPE__",
"ttl": "__TTL__",
"timestamp": "__TIMESTAMP__"
},
"dns": "callback"
}
实际请求:
POST https://api.example.com/ddns/sub.example.com?ip=192.168.1.100&ts=1634567890.123
Content-Type: application/json
{
"domain": "sub.example.com",
"record_type": "A",
"ttl": 300,
"timestamp": 1634567890.123
}
将 DDNS 更新通知发送到自定义 webhook:
{
"id": "https://hooks.example.com/ddns",
"token": {
"event": "ddns_update",
"domain": "__DOMAIN__",
"new_ip": "__IP__",
"record_type": "__RECORDTYPE__",
"timestamp": "__TIMESTAMP__"
},
"dns": "callback"
}
当需要动态构造复杂的 JSON 字符串时:
{
"id": "https://api.example.com/ddns",
"token": "{\"auth\": \"your_key\", \"record\": {\"name\": \"__DOMAIN__\", \"value\": \"__IP__\", \"type\": \"__RECORDTYPE__\"}}",
"dns": "callback"
}
Callback Provider 会记录详细的日志信息:
{
"id": "https://api.example.com/update?key=your_api_key&domain=__DOMAIN__&ip=__IP__&type=__RECORDTYPE__",
"token": "",
"dns": "callback",
"ipv4": ["home.example.com", "server.example.com"],
"ipv6": ["ipv6.example.com"],
"debug": true
}
{
"id": "https://api.third-party-dns.com/v1/records",
"token": {
"auth_token": "your_api_token",
"zone": "example.com",
"name": "__DOMAIN__",
"content": "__IP__",
"type": "__RECORDTYPE__",
"ttl": "__TTL__"
},
"dns": "callback",
"ipv4": ["*.example.com"],
"ipv6": ["*.example.com"],
"debug": true
}
id
包含完整的HTTP/HTTPS URLtoken
的JSON格式是否正确
{"key": "value"}
"{\"key\": \"value\"}"
(注意转义双引号)"debug": true
可以使用在线工具测试回调功能:
# 使用 curl 测试 GET 请求
curl "https://httpbin.org/get?domain=test.example.com&ip=192.168.1.1"
# 使用 curl 测试 POST 请求
curl -X POST "https://httpbin.org/post" \
-H "Content-Type: application/json" \
-d '{"domain": "test.example.com", "ip": "192.168.1.1"}'