让信仰走进生活。让基督更新生命,让爱温暖你心。
使用 DnsPod 简单实现域名 DDNS
  • 首页 > 技术分享
  • 作者:醉清风
  • 2021年11月6日 1:18 星期六
  • 浏览:6294566
  • 字号:
  • 评论:0
  • DNSpod 免费版 TTL 最短时间是 10 分钟,配合宝塔的计划任务,挂个间隔 10 分钟的任务刚刚好。

    效果图

    AEimg-1631081881-88.png

    计划任务

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

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

    AEimg-1631081881-65.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;
    } 
    原文地址:https://qzone.work/codes/641.html
      您阅读这篇文章共花了:  
    本文作者:醉清风      文章标题: 使用 DnsPod 简单实现域名 DDNS
    本文地址:http://www.ndxy.cc/?post=32
    版权声明:若无注明出处,本文皆为“七十二棵棕树-让信仰走进生活。”原创,转载请保留文章出处。