查看: 3141|回复: 3

[经验分享] DNSPOD的API接口实现DDNS解析

[复制链接]

26

主题

202

帖子

295

积分

高恪VIP内测组

Rank: 6Rank: 6

积分
295

内测达人

发表于 2018-3-25 00:08:04 | 显示全部楼层 |阅读模式
高恪AK系列硬件AP隆重上市
本帖最后由 情绪21度 于 2018-3-25 00:25 编辑

高恪不支持DNSPOD真是一大遗憾。
暂时打算用以下方案来顶替一下。
资料来自网络,我只是转一下,听说最近很多人搞了5年的腾讯云主机,应该可以把这个PHP放上去用了。
以下为正题:
把以下代码保存为dnspod_v2.php,放到自己的网站中。
  1. <?php

  2. $realip      = getIP();
  3. $code        = $_GET['code'];
  4. $token       = $_GET['token'];
  5. $domain_id   = $_GET['domain_id'];
  6. $record_id   = $_GET['record_id'];
  7. $sub_domain  = $_GET['sub_domain'];
  8. $value       = $_GET['value'];
  9. $record_type = $_GET['record_type'];
  10. $record_line = $_GET['record_line'];

  11. if (empty($code))  { exit('code empty.'); }
  12. if (empty($token)) { exit('token empty.'); }
  13. if (empty($domain_id)) { exit('domain_id empty.'); }
  14. if (empty($record_id)) { exit('record_id empty.'); }
  15. if (empty($sub_domain)) { $sub_domain = "routeos"; }
  16. if (empty($record_type)) { $record_type = "A"; }
  17. if (empty($record_line)) { $record_line = "默认"; }
  18. if (empty($value)) { $value = $realip; }
  19. $ip = checkIP($code, $token, $domain_id, $record_id);
  20. if (empty($ip)) { exit('ip empty.'); }
  21. if ($ip == $value) { exit("IP一致."); }

  22. $ch            = curl_init();
  23. curl_setopt($ch, CURLOPT_URL, "https://dnsapi.cn/Record.Modify");
  24. curl_setopt($ch, CURLOPT_POST, 1);
  25. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  26. curl_setopt($ch, CURLOPT_POSTFIELDS, "login_token=" . $code . "," . $token . "&format=json&domain_id=" . $domain_id . "&record_id=" . $record_id . "&sub_domain=" . $sub_domain . "&value=" . $value . "&record_type=" . $record_type . "&record_line=" . "$record_line");
  27. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  28. $server_output = curl_exec($ch);
  29. curl_close($ch);
  30. exit('ok');

  31. function checkIP($code, $token, $domain_id, $record_id ) {
  32.     $ch            = curl_init();
  33.     curl_setopt($ch, CURLOPT_URL, "https://dnsapi.cn/Record.Info");
  34.     curl_setopt($ch, CURLOPT_POST, 1);
  35.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  36.     curl_setopt($ch, CURLOPT_POSTFIELDS, "login_token=" . $code . "," . $token . "&format=json&domain_id=" . $domain_id . "&record_id=" . $record_id . "");
  37.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  38.     $server_output = curl_exec($ch);
  39.     curl_close($ch);
  40.     $json          = json_decode($server_output, TRUE);
  41.     return $json['record']['value'];
  42. }

  43. function getIP(){
  44.     if (@$_SERVER["HTTP_X_FORWARDED_FOR"])
  45.         $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  46.     else if (@$_SERVER["HTTP_CLIENT_IP"])
  47.         $ip = $_SERVER["HTTP_CLIENT_IP"];
  48.     else if (@$_SERVER["REMOTE_ADDR"])
  49.         $ip = $_SERVER["REMOTE_ADDR"];
  50.     else if (@getenv("HTTP_X_FORWARDED_FOR"))
  51.         $ip = getenv("HTTP_X_FORWARDED_FOR");
  52.     else if (@getenv("HTTP_CLIENT_IP"))
  53.         $ip = getenv("HTTP_CLIENT_IP");
  54.     else if (@getenv("REMOTE_ADDR"))
  55.         $ip = getenv("REMOTE_ADDR");
  56.     else
  57.         $ip = "Unknown";
  58.     return $ip;
  59. }
复制代码



DNSPOD的API申请地址:https://support.dnspod.cn/Kb/showarticle/tsid/227/

完整的请求地址为:http://网址/dnspod_v2.php?code=(API ID)&token=(API Token)&domain_id=(域名ID)&record_id=(解析ID)&sub_domain[域名解解析名]&record_type=[域名解析类型]&record_line=[域名解析线路]&value=[域名解析地址]

强制赋值变量为:

code,token,domain_id,record_id

可选变量为:

sub_domain,record_type,record_line,value

当变量sub_domain为空时,PHP自动赋值为:『routeos』

当变量record_type为空时,php自动赋值为:『A』

当变量record_line为空时,PHP自动赋值为:『默认』

当变量value为空时,php自动获取当前请求的IP为其值


以上功能还在完善中,慢慢搞出来吧,无奈
回复

使用道具 举报

101

主题

4332

帖子

4948

积分

高恪技术支持

Rank: 4

积分
4948

活跃会员热心达人推广达人内测达人方案之王突出贡献优秀版主荣誉管理论坛元老

QQ
发表于 2018-3-25 10:54:38 | 显示全部楼层
高恪AK系列硬件AP隆重上市
大神
回复

使用道具 举报

11

主题

48

帖子

71

积分

中级玩家

Rank: 2

积分
71
QQ
发表于 2018-3-31 11:42:24 | 显示全部楼层
不支持dnspod实在郁闷,实在不想用免费域名
回复 支持 反对

使用道具 举报

26

主题

202

帖子

295

积分

高恪VIP内测组

Rank: 6Rank: 6

积分
295

内测达人

 楼主| 发表于 2018-4-1 13:57:31 | 显示全部楼层
locly 发表于 2018-3-31 11:42
不支持dnspod实在郁闷,实在不想用免费域名

还可以用CNAME的方式转发到高恪免费域名临时用用国际动态域名
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表