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

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

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

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

于是问了腾讯云客服,学习了相关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,Token

获取domain_id:

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

效果:

 

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

 

 

 

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值