使用PHP实现Namesilo动态解析DDNS
这里是记录如何通过PHP来更新Namesilo里面的域名解析,实现自动动态更新。
首先当然你得有Namesilo的域名并且添加过解析了,怎么申请和添加解析就不去讲了,网上多的是。
Namesilo官网:https://www.namesilo.com/
然后,是申请APIkey,登录账号后,在“My account”里面找到"api manager",进入后,勾选最底下选项后点击"Generate",就能生成APIkey了,复制保存好。
下面就是在服务器上新建一个php文件,把下面代码放进去,更改成你的内容后,保存
<?php //修改后面的APIKEY,域名和子域名前缀即可$ipnow = ipnow(); //获取服务器公网IPif($ipnow == null || $ipnow == ''){ //判断是否获取成功公网IPecho 'IP获取失败,稍后再试'; }else{if(!file_exists(("ipfile.txt")) || filesize("ipfile.txt") ==0){ //判断ip暂存文件是否存在或者是空文件$ipfile = fopen("ipfile.txt", "w") or die("Unable to open file!");fwrite($ipfile, $ipnow); //将当前服务器IP写入临时文件,用于后续判断是否更改fclose($ipfile);echo updatedns($ipnow);}else{$ipfile = fopen("ipfile.txt", "r") or die("Unable to open file!");$iprecord = fread($ipfile,filesize("ipfile.txt")); //获取ip暂存文件内记录的ip//echo $iprecord;if($iprecord == $ipnow){ //如果当前IP与记录的一致时,就不执行更新echo '现在服务器IP为:'.$iprecord.',没有改变,无需更新!';fclose($ipfile);}else{ //反之,更新解析中的ip$ipfile = fopen("ipfile.txt", "w") or die("Unable to open file!");echo updatedns($ipnow);fwrite($ipfile, $ipnow);fclose($ipfile);}}}function updatedns($ipnow){$APIkey = "这里换成你的APIKEY"; //你的namesilo apikey$domain = "这里放根域名,前面不要加www等前缀,比如baidu.com"; //需要更新的域名$rrhosts = ['www','img']; //需要更新的子域名前缀数组,在方括号里用英文引号和逗号分隔$record = "dyn"; //不用改$rrttl = 3600; //不用改$results = simplexml_load_string(file_get_contents('https://www.namesilo.com/api/dnsListRecords?version=1&type=xml&key='.$APIkey.'&domain='.$domain)); //通过apikey获取到当前域名下面所有解析清单$test = json_decode(json_encode($results),true); //把获取到的数据转变成数组$resource_record = $test['reply']['resource_record']; //筛选只获取解析记录清单数组$record_ids = [];for($i=0;$i<count($resource_record);$i++){ $record_ids[$resource_record[$i]['host']] = $resource_record[$i]['record_id']; //重新拼接变成新数组:[子域名]=>[record_id]}//下面就是循环更新每个子域名解析for($ii=0;$ii<count($rrhosts);$ii++){$subdomain = $rrhosts[$ii].'.'.$domain; //拼接成子域名$recordid = $record_ids[$subdomain]; //获取当前子域名的record_id$rrhost = $rrhosts[$ii];return httpGet('https://www.namesilo.com/api/dnsUpdateRecord?version=1&type=xml&key='.$APIkey.'&domain='.$domain.'&rrid='.$recordid.'&rrhost='.$rrhost.'&rrvalue='.$ipnow.'&rrttl='.$rrttl);}}//获取服务器公网IPfunction ipnow(){$ipnow = httpGet("http://httpbin.org/ip"); //这个网址是获取服务器IP用的,可以更换成其他的接口$ipnow = json_decode($ipnow,true);return $ipnow['origin'];}//curl方法function httpGet($url){$curl = curl_init();curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_TIMEOUT, 500);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true);curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HTTPHEADER, Array("Content-Type:text/xml; charset=utf-8"));$res = curl_exec($curl);curl_close($curl);return $res;}?>
最后,通过访问这个PHP文件,就能实现更新解析的功能啦。比如可以通过宝塔面板里的计划任务,设置定时访问url来自动执行。
使用PHP实现Namesilo动态解析DDNS相关推荐
- fetchtype 动态控制_RouterOS利用aliyun的API接口实现DDNS动态解析
本文主要讲解如何借助阿里云aliyun的云解析API接口来实现RouterOS(以下简称ROS)的DDNS动态解析. 一.创建访问控制RAM的AccessKey 我这边简单的讲讲如何申请开通: 1.阿 ...
- python3实现阿里云DDNS域名动态解析
一. 前言 家里部署了一台NAS服务器,在公司平时都是通过IP访问的,现在想更改为用域名去访问,但是家里的宽带都是动态的公网IP,每次IP变了都需要手动解析一次域名,这样就比较麻烦,那怎么办了?这个时 ...
- linux ipv6动态解析,家庭宽带ipv6搭建外网访问方案,ddns动态解析ipv6,ipv6建站等
注意:ipv6和ipv4之间不可互相访问!!! 如题: 1.先确认我们本地是否有公网ipv6地址 Windows查看方法:打开cmd.输入ipconfig 看到有2开头的就是公网ipv6了 linux ...
- ddns 动态解析 - 阿里云api自动解析家用服务器动态ip
2019独角兽企业重金招聘Python工程师标准>>> 过年回老家办了带宽,大家都知道家用带宽是没有固定ip的一般使用花生壳之类的动态解析域名: 但是花生壳现在不好用,我使用阿里云a ...
- DNS(四)DDNS动态解析的配置
一.DNS的动态解析 DNS+DHCP=DDNS 服务端搭建 DHCP 配置文件内容 注意:DHCP 更新DNS时,必须要实现DNS的加密更改. 做好配置后重启DNS和DHCP服务
- RouterOS利用aliyun的API接口实现DDNS动态解析
本文主要讲解如何借助阿里云aliyun的云解析API接口来实现RouterOS(以下简称ROS)的DDNS动态解析. 一.创建访问控制RAM的AccessKey 我这边简单的讲讲如何申请开通: 1.阿 ...
- 利用NAS免费部署动态解析实现内网穿透
想要从外网访问家中的NAS等设备,一般来说我们需要知道家中路由器的公网IP. 现在固定的公网IP基本上很难免费申请到了,但是一般来说运营商可以免费提供一个动态变化的公网IP:当路由设备重启时,运营 ...
- DNS部署之动态域名解析DDNS
DNS部署之动态域名解析DDNS dns+dhcp=ddns=动态域名解析=花生壳 DDNS: DDNS:之前的远程更新是基于静态网络做的,但是如果我们用动态网络获取ip,dns就不能及时更新到ip的 ...
- NAT-DDNS内网穿透技术,快解析DDNS的优势
进行 NAT 穿透,是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机.对于穿透类型,一般分为两大类,一是基础NAT,另一个是NAPT,大家可能并不怎么了 ...
- 开机自动拨号,断线重连,并且动态解析dns记录,java版
上一篇文章讲到:开机自动拨号与DDNS 它的实现方式是win10自带的批处理文件,但在我使用的过程中发现,这个批处理文件有些时候会失效,因为在那个批处理文件是以异常的产生才执行对应操作,但在使用的过程 ...
最新文章
- VSCode环境下配置ESLint 对Vue单文件的检测
- 《深入理解Hadoop(原书第2版)》——1.3大数据的编程模型
- Java NIO 学习笔记(三)----Selector
- string和C语言字符串之间的相互转换以及string常用函数
- python删除空白没有显示_删除Python字符串中的空白
- c程序设计语言选修难吗,欢迎大家选修C语言程序设计这门课,本帖解释一下一些常见的问题...
- python-3.8.0 新特性之赋值表达式
- 靠能力赚大钱,是最最可笑的谎言
- 56 - II. 数组中数字出现的次数 II
- 【算法】斐波那契(黄金分割法) 查找算法
- python数学实验与建模_Python数学
- 舆情监测平台TOOM
- Ubuntu 安装 peek 动态截图软件
- java 弹出软键盘_android软键盘弹出定位
- Windows远程桌面无法最大化问题
- 数据库---数据库恢复技术
- 如何给word 文章的每段段尾添加 脚注
- 阿里在职7年高级测试工程师整理出的软件测试自学指南
- 谈一谈“读万卷书,行万里路”
- [本地调试]Error: errCode: 40013 | errMsg: invalid appid, rid: 6229ba44-300699c6-69a0065e
热门文章
- Jenkins——Jenkins+harbor+gitlab(git) 部署maven项目
- 从盘古开天辟地说起JVM性能调优
- 【情感分析:挖掘观点、情感和情绪】读书笔记-01
- 二维码图片生成(带文字显示)
- 紫罗兰计算机音乐,【Animenz】紫罗兰永恒花园ed みちしるべ
- Azure实现虚拟机的自动开关机
- 笔记本共享网络给台式机
- 帝国cms tag生成html,帝国CMS TAG标签伪静态化
- 三星S8 隐藏Android功能键,三星S8获系统更新 新增虚拟按键隐藏功能
- 幸福家庭杂志幸福家庭杂志社幸福家庭教育部2022年第1期目录