python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名

连上校园网后,发现分配的是公网ip,虽然是动态的,但好歹是个公网的。

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图

于是乎,这不就是服务器吗?装了个宝塔后,真能行。

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图1

现在的问题就是,如何动态更新dns解析记录。

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图2

于是问了腾讯云客服,学习了相关api,写了如下python脚本:(login_token和domain_id需要自行前往控制台获取)

import requests import json from requests.adapters import HTTPAdapter s = requests.session() s.mount('https://', HTTPAdapter(max_retries=5)) # 超时重传次数 login_token = '306877,4ed9987fccf2b2bd4ef3ad9d040' domain_id = '8331725' def getRecordID(): print("获取dns记录ing,可能会卡主") global record_id; url = 'https://dnsapi.cn/Record.List' formdata = { 'domain_id': domain_id, 'login_token': login_token } try: login = s.post(url=url, data=formdata, timeout=2) except requests.exceptions.RequestException: print("请求超时,请重试") rs = json.loads(login.text) # 转为dict record_id = rs['records'][2]['id']; print("获取dns记录完毕") return record_id; def getIP(): print("获取iping") url = "http://www.3322.org/dyndns/getip" IPInfo = requests.get(url) IPInfo.encoding = 'UTF-8' ip = IPInfo.text print("获取ip完毕") return ip def updateRecord(): ip = getIP().strip(); getRecordID(); print("更改解析ing,可能会卡住") url = 'https://dnsapi.cn/Record.Ddns' formdata = { 'domain_id': domain_id, 'login_token': login_token, 'record_line': '默认', 'record_line_id': '10=1', 'value': ip, 'record_id': record_id } try: rs = s.post(url=url, data=formdata, timeout=2) except requests.exceptions.RequestException: print("请求超时,请重试!") if (json.loads(rs.text)['status']['code'] == '1'): print(json.loads(rs.text)['status']['message'], '域名解析已更改为' + ip) else: print("操作失败") updateRecord()

获取login_token:ID,Tokenpython脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图3

获取domain_id:

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图4

windows可配合bat脚本实现一键启动

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图5

效果:

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图6

成功,可以在ip地址变化的时候执行该脚本

python脚本 实现 腾讯云 域名 DDNS 动态公网ip映射至域名插图7

原文链接:https://blog.csdn.net/qq_37525851/article/details/124192993

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享