当前位置:首页 > 技术博客 > 其他 > 使用 DnsPod 简单实现域名 DDNS

使用 DnsPod 简单实现域名 DDNS

5年前 (2021-09-22)其他920

DNSpod 免费版 TTL 最短时间是 10 分钟,配合宝塔的计划任务,挂个间隔 10 分钟的任务刚刚好。

效果图


计划任务


把脚本放到合适的路径,添加一个 10 分钟的计划任务

/usr/bin/php /www/wwwroot/dnspod/main.php

3882646494.png

源代码

<?php
// Dnspod token,获取地址 https://console.dnspod.cn/account/token/token
$token     = '235678,f485d8729df9397c719e0fe8f5802xxx';
// 需要解析的域名
$domain    = 'xxx.com';
// 解析记录
$record    = 'panel.nas';
$api       = 'https://dnsapi.cn/Record.List';
$post      = [
'login_token' => $token,
'format'      => 'json',
'lang'        => 'cn',
'domain'      => domain,
];
$record_id = null;
$res       = getCurl($api, ['post' => $post]);
$data      = json_decode($res, true);
// 获取记录ID
foreach ($data['records'] as $itm) {
if ($record == $itm['name']) {
$record_id = $itm['id'];
}
}
if (empty($record_id)) {
exit("记录 [$record] 未找到,请检查!\n");
}
// 获取公网IP
$ip = file_get_contents('https://www.bt.cn/Api/getIpAddress');
if (empty($ip)) {
exit("公网IP获取失败 \n");
}
echo "当前公网IP:$ip \n";
// 修改域名A记录
$api  = 'https://dnsapi.cn/Record.Modify';
$post = [
'login_token' => $token,
'format'      => 'json',
'lang'        => 'cn',
'domain'      => $domain,
'record_id'   => $record_id,
'sub_domain'  => $record,
'record_type' => 'A',
'record_line' => '默认',
'value'       => $ip,
'mx'          => 20,
];
$res  = getCurl($api, ['post' => $post]);
$data = json_decode($res, true);
if ($data['status']['code']) {
echo "修改成功:{$data['status']['message']} \n";
}
function getCurl($url, $opt = [])
{
$cookie = '';
if (is_array($opt['cookie'])) {
foreach ($opt['cookie'] as $k => $v) {
$cookie .= $k . '=' . $v . '; ';
}
}
$cookie = (mb_substr($cookie, 0, mb_strlen($cookie) - 2));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Expect:"]);
curl_setopt($ch, CURLOPT_NOBODY, $opt['nobody']);
curl_setopt($ch, CURLOPT_HEADER, $opt['header'] ?? false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $opt['headers'] ?? []);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, $opt['rtime'] ?? 10000);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, $opt['ctime'] ?? 10000);
curl_setopt($ch, CURLOPT_REFERER, $opt['refer'] ?? 'https://user.qzone.qq.com/');
curl_setopt($ch, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36');
if (isset($opt['post'])) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, is_array($opt['post']) ? http_build_query($opt['post']) : $opt['post']);
}
if (isset($opt['proxy']) && is_array($opt['proxy'])) {
curl_setopt($ch, CURLOPT_PROXY, $opt['proxy']['ip']);
curl_setopt($ch, CURLOPT_PROXYPORT, $opt['proxy']['port']);
}
$res   = curl_exec($ch);
$error = curl_error($ch);
$code  = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($opt['detail']) {
return ['code' => $code, 'error' => $error, 'resp' => $res,];
}
return $res;
}




版权声明:本文由 LzxBlog 发布,如需转载请注明出处。

本文链接:https://www.liuzhixi.cn/html/157.html

标签: dnsddns

相关文章

中国汉字有多少?有人说是8万多,有人说有9万多,但常用的字只有3000左右。这里是使用频度最高的3000个常用汉字

中国汉字有多少?有人说是8万多,有人说有9万多,但常用的字只有3000左右。这里是使用频度最高的3000个常用汉字

中国汉字有多少?有人说是8万多,有人说有9万多,但常用的字只有3000左右。这里是使用频度最高的3000个常用汉字的一是了不在有人上这大我国来们和个他中说到地为...

网页默认字体如何替换成好看的字体

网页默认字体如何替换成好看的字体

这两天有几个朋友问我博客字体是怎么弄得,怎么才能替换成自己喜欢的字体?下面我就来说说怎么替换web页面的字体:1、首先需要找到自己喜欢的字体并下载下来,现在浏览...

给自己的网站简单加个壁纸页

给自己的网站简单加个壁纸页

演示页面: https://www.liuzhixi.cn/90.html 点击查看效果。这个通过360壁纸的API是现实,废话不多说,开凎...

随机背景图片php源码

随机背景图片php源码

不知道写点啥了,所以。。。,懂得都懂说明一下:虽然有水的成分但是保证99%内容为原创,都是php常用方法,和别人的有些类似很正常,声明一下不是网上抄袭的!淦新建...

必应Bing每日一图,API代码

必应Bing每日一图,API代码

在网站根目录新建一个php文件,例如:bing.php,然后复制下面的代码。Api源码:<?php //判断是否随机调用 if ($_GET...

禁止浏览器直接访问程序模板文件代码

禁止浏览器直接访问程序模板文件代码

很多cms的程序主题模板文件默认情况下在浏览器中输入模板文件的路径可以直接访问,并会显示模板的源代码,因此很容易被一些不良主题模板开发者窃取劳动成果,所以在制作...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。