Python 用DNSpod官方库更新DNSpod记录

python中文网最近出现了一个期待已久的库,叫做pydnspod
API连接 https://www.cnpython.com/pypi/dns-dnspod#description
根据官方文档,首先我们需要安装pydnspod第三方库

安装pydnspod第三方库

linux平台
在终端中直接用pip3安装即可

1. 安装requests
pip3 install requests

2. 安装dns-dnspod
pip3 install dns-dnspod

Windows平台
Windows平台的安装就比较麻烦了
首先,用pip安装requests库

pip install requests

然后再pip install dns-dnspod ??
NO NO NOPython 用DNSpod官方库更新DNSpod记录_第1张图片
这样安装的话,小编遇到了失败
所以,
(1)直接下载安装包文件
这里给出阿里云镜像的连接 ,点击计科下载https://mirrors.aliyun.com/pypi/packages/b6/9b/e79d80c17dbd30abe08ef2d4ddb10339ff62b6ded6ac8d30fd9d31d68cc1/dns-dnspod-1.0.0.tar.gz
(2)解压下载的文件,打开解压后的文件夹Python 用DNSpod官方库更新DNSpod记录_第2张图片
然后将这个文件夹直接复制到“C:\Users\用户名\AppData\Local\Programs\Python\Python36\Lib\site-packages”文件夹下,具体目录是Python的安装目录,然后就大功告成了Python 用DNSpod官方库更新DNSpod记录_第3张图片

获取域名ID和记录ID

首先,你需要常见一个API Token,然后你会得到Token ID 和Token
然后在python命令行里输入

import pydnspod
dp = pydnspod.connect(user_token_id, user_token)
#user_token_id	创建的Token ID,字符串数据类型
#user_token		Token ,字符串数据类型

然后执行

dp.domain.list()

输出一下信息
{‘info’: {‘domain_total’: 1, ‘all_total’: 1, ‘mine_total’: 1, ‘share_total’: 0, ‘vip_total’: 0, ‘ismark_total’: 0, ‘pause_total’: 0, ‘error_total’: 0, ‘lock_total’: 0, ‘spam_total’: 0, ‘vip_expire’: 0, ‘share_out_total’: 0}, ‘domains’: [{‘id’: 你的域名ID, ‘status’: ‘enable’, ‘grade’: ‘DP_Free’, '……省略……}
这样就可以获得你的所有域名ID
之后,在执行

dp.record.list("域名ID")

运行之后就可以获取这个域名下的所有解析记录,然后在里面找出你的相关记录的ID

献上代码(IPv6 的AAAA解析)

Windows

import time
import re
import requests
import pydnspod
import socket
def get_local_ipv6():
    host_name = socket.gethostname()
    ip = socket.getaddrinfo(host_name,None)
    ip_str = str(ip)
    comp = re.compile("24[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*")
    ans = comp.findall(ip_str)
    return ans[1]
    
user_id = "Token ID"#更换成你的Token ID
user_token = "Token"#更换成你的Token 
domain = "域名"#更换成你的域名
sub_domain = "记录"#更换成你的记录
sub_domain_id = "记录ID"#更换成你的记录ID
dp = pydnspod.connect(user_id,user_token)
while(True):
    try:
        ipv6 = get_local_ipv6()
        print("本机地址",ipv6)
        return_ = dp.record.modify(domain,sub_domain_id,sub_domain,"AAAA",ipv6)
        print(return_)
        if return_ != None :
            print("未更新")
            time.sleep(2)
        else:
            print("已更新,等待300秒")
            time.sleep(300)
    except IndexError:
        print("网络未连接")
        time.sleep(2)
    except OSError:
        print("网络中断")
        time.sleep(2)

Linux

import time
import re
import requests
import pydnspod
import socket
def get_local_ipv6():
   	string = os.popen("ifconfig")
    ip = list(string)
    ip_str = str(ip)
    comp = re.compile("24[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*:[0-9a-f]*")
    ans = comp.findall(ip_str)
    return ans[0]
    
user_id = "Token ID"#更换成你的Token ID
user_token = "Token"#更换成你的Token 
domain = "域名"#更换成你的域名
sub_domain = "记录"#更换成你的记录
sub_domain_id = "记录ID"#更换成你的记录ID
dp = pydnspod.connect(user_id,user_token)
while(True):
    try:
        ipv6 = get_local_ipv6()
        print("本机地址",ipv6)
        return_ = dp.record.modify(domain,sub_domain_id,sub_domain,"AAAA",ipv6)
        print(return_)
        if return_ != None :
            print("未更新")
            time.sleep(2)
        else:
            print("已更新,等待300秒")
            time.sleep(300)
    except IndexError:
        print("网络未连接")
        time.sleep(2)
    except OSError:
        print("网络中断")
        time.sleep(2)

你可能感兴趣的:(Python,DNS,计算机网络)