QQ登录

只需一步,快速开始

终极精品

查看: 886|回复: 0
打印 上一主题 下一主题

[网络技术] 腾讯域名 ddns 实现动态域名解析支持ipv6和ipv4

[复制链接]
[至尊红钻3级]发帖数量≥1000篇 [至尊黄钻5级]威望≥3000点 [至尊蓝钻3级]在线时间≥800小时 [至尊绿钻5级]贡献度≥3000点 [至尊紫钻6级]金币≥200000个 [未点亮至尊粉钻]精华贴数不足10贴 [未点亮至尊黑钻]活跃不足8个
 等级: 
 级别: 管理员
 UID:  1   [未点亮普号显示]钻石不足3个
 积 分: 407416
 威 望: 3806
 贡 献: 3745
 活 跃: 0
 发 贴: 1401 (4)
 终极币: 394653  
性 别: I'm 火星人!
阅读权限: 200
在线时长: 1151 小时
注册时间: 2014-7-25
最后登录: 2025-4-29
go
楼主
发表于 2022-11-18 23:26:15 |只看该作者 |倒序浏览

查看完整版请注册登录浏览

您需要 登录 才可以下载或查看,没有帐号?点击注册

x
简介
DDNS是动态域名服务(Dynamic Domain Name Server)的缩写,可以实现固定域名到动态IP地址之间的解析。 通常情况下,用户每次连接因特网时都会从ISP得到一个动态IP地址,即用户每次连接因特网得到的IP地址都不同。
前期准备
首先你要有一个腾讯云的域名,进入腾讯云的DNSPOD然后点击右上角头像选择api秘钥进入后点击腾讯云api秘钥在点击新建秘钥

新建完成后会有2个参数,一个是SecretId另一个是SecretKey,我们吧这两个参数记下来。

然后去域名解析那里解析一个域名,如果用ipv6的地址就设置解析记录类型为AAAA,先随便填写一个记录值(简单点的记录值,fe80::ac34),ipv4同理
最后来安装腾讯云的Python包
  1. 1 pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python
复制代码

至此准备工作完成

import json,os,requests,sys,netifaces,time
#from gmail import email
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.dnspod.v20210323 import dnspod_client, models
def start(ym,jlz):
    try:
        cred = credential.Credential("这里填写上面获取得SecretId", "这里填写SecretKey")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "dnspod.tencentcloudapi.com"
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = dnspod_client.DnspodClient(cred, "", clientProfile)
        req = models.DescribeRecordListRequest()
        params = {
            "Domain": ym,
            "Subdomain": jlz
        }
        req.from_json_string(json.dumps(params))
        resp = client.DescribeRecordList(req).to_json_string()
        resp = json.loads(resp)
        recordlist = resp["RecordList"]
        for record in recordlist:
            recordid = record['RecordId']
        return recordid
    except TencentCloudSDKException as err:
        print(err)
        #email("DDNS", str(err))
        sys.exit()

def fast(ym,jlz,type1):
    try:
        recordid = int(start(ym,jlz))
        if type1 == "AAAA":
            ip = netifaces.ifaddresses('eth0')[netifaces.AF_INET6][0]['addr'].replace("%eth0","")
        elif type1 == "A":
            ip = requests.get("http://members.3322.org/dyndns/getip").text
        else:
            print("程序不支持其他记录类型,只支持AAAA和A")
            sys.exit()
        cred = credential.Credential("这里填写上面获取得SecretId", "这里填写SecretKey")
        httpProfile = HttpProfile()
        httpProfile.endpoint = "dnspod.tencentcloudapi.com"
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        client = dnspod_client.DnspodClient(cred, "", clientProfile)
        req = models.ModifyRecordRequest()
        params = {
            "Domain": ym,
            "SubDomain": jlz,
            "RecordType": type1,
            "RecordLine": "默认",
            "Value": ip,
            "RecordId": recordid
        }
        req.from_json_string(json.dumps(params))
        resp = client.ModifyRecord(req).to_json_string()
        localtime = time.asctime(time.localtime(time.time()))
        print(localtime,resp)
    except TencentCloudSDKException as err:
        print(localtime,err)
        #email("DDNS", str(err))

fil = sys.argv[1]
with open(fil,"r") as f:
    data = f.read()
data = json.loads(data)
for over in data:
    ym = over["域名"]
    jlz = over["主机记录"]
    type1 = over["记录类型"]
    fast(ym,jlz,type1)
print("结束")



ddns.conf
下面还可以填写很多,填写方式就按下面的方式进行添加。
[
    {"域名":"zfx.top","主机记录":"wxllha","记录类型":"AAAA"},
    {"域名":"zfx.top","主机记录":"gfiker","记录类型":"A"}


完美结束
然后就可以使用了,运行方式Python3 ddns.py ddns.conf
由于腾讯云限制,访问速度不能超过20次/秒
再设置一下自动执行,可以用cron,cron不懂去百度,现在就可以愉快地玩耍了。
声明
本程序仅在Ubuntu 21上面进行了使用,其他系统请自行测试或修改。


分享到: QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 支持支持0 反对反对0
宣传推广终极精品资源www.chnspy.com提升下载权限1...
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

QQ|Archiver|手机版|小黑屋|终极精品资源 ( 版权所有:广州汉鸿信息科技有限公司 粤ICP备15041466号

GMT+8, 2025-5-9 04:09 , Processed in 0.121246 second(s), 28 queries .

Powered by Discuz! X3.2

© 2015-2016 www.chnspy.com.

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