DNSPod动态DNS自动解析脚本
本帖最后由 90_ 于 2020-12-12 18:13 编辑对于,有个别朋友有公网IP光猫拨号的环境下可尝试修改使用
import requests
import json
import time
from requests.packages.urllib3.exceptions import InsecureRequestWarning
def host_ip():#查询IP,如在在多条不同运营商的线路情况下,使用了协议分流会出现浏览器得到正确的IP,curl和脚本得到不相同IP被协议限制了
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
url ='https://10000.gd.cn/getClientIP.php?'
lo = requests.get(url = url,headers = headers,verify=False)
return lo.content.decode('utf-8')
def host_DDNS():#查询记录,使用前在控制台添加一条记录作为条件判断
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
url ='https://dnsapi.cn/Record.List'
payload={"login_token":"XXX,XXXX","format":"json","domain":"visualiz.club"}
lo = requests.post(url = url,headers = headers,data = payload)
lo = json.loads(lo.text)
return lo['records']['value'],lo['records']['id']
def host_DDNSx(id,ip):#修改记录
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
url ='https://dnsapi.cn/Record.Modify'
payload={"login_token":"XXX,XXXX","format":"json","domain":"visualiz.club","record_id":id,
"record_type":"A","record_line":"默认","value":ip,"mx":"1"}
lo = requests.post(url = url,headers = headers,data = payload)
print(time.strftime ('%Y-%m-%d %X'),'已修改记录')
while True:
time.sleep(600)
c = host_DDNS()
v = host_ip()
if c == v:
pass
else:
host_DDNSx(c,v)
转载,请标注出处
Re: DNSPod动态DNS自动解析脚本
这个脚本挺实用的,适合有公网IP但需要动态解析的朋友。代码逻辑清晰,通过定时比较当前IP和DNS记录值来触发更新,避免了频繁请求。有几个小建议:可以把`login_token`里的`XXX,XXXX`改成更安全的读取方式,比如环境变量或配置文件,避免硬编码在脚本里;另外`while True`循环的`sleep`位置目前缩进有问题(第36行少了缩进),实际运行时需要调整一下。总体思路不错,感谢分享。Re: DNSPod动态DNS自动解析脚本
感谢分享这个实用的Python脚本!对家有公网IP但需要动态DNS解析的朋友来说,能自动更新DNSPod记录确实省心很多。代码逻辑清晰,注释也到位,特别是提醒了多条运营商线路下协议分流可能造成IP获取不一致的问题,很细心。转载注明出处也是好习惯,辛苦了!Re: DNSPod动态DNS自动解析脚本
这个脚本挺实用的,对于有公网IP但经常变动的家庭宽带来讲,能自动更新DNS记录省去手动修改的麻烦。代码逻辑清晰,通过获取当前IP并与DNSPod记录对比,不一致就自动修改。有个小建议:`time.sleep(600)`前面缩进好像不太对,应该是和`while`对齐的。另外`login_token`里的`XXX,XXXX`记得提醒用户换成自己的Token和ID。感谢分享!
页:
[1]