折腾树莓派时为了外网访问方便,折腾过几个ddns域名解析方法,这里介绍dnspod的方法。
先贴python代码
#!/usr/bin/env python3
#-*- coding:utf-8 -*-
import sys, urllib.request, urllib.parse, http.client
import socket
import time
params = dict(
login_email="dnspod账号", # dnspod账号一般用邮箱
login_password="dnspod密码", # dnspod密码
format="json",
domain_id=123456, # domain_id 是你在dnspod的域名id,获取方法文章下方有介绍,获取后替换123456
record_id=123456, # record_id 是你在dnspod的域名的子域名id,获取方法文章下方有介绍,获取后替换123456
sub_domain="子域名", # sub_domain 是你在dnspod的域名的 子域名名称 例如:www ,@
record_line="默认",
)
current_ip = None
def ddns(ip):
params.update(dict(value=ip))
headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/json"}
conn = http.client.HTTPSConnection("dnsapi.cn")
conn.request("POST", "/Record.Ddns", urllib.parse.urlencode(params), headers)
response = conn.getresponse()
print (response.status, response.reason)
data = response.read()
print (data)
conn.close()
return response.status == 200
def getip():
sock = socket.create_connection(('ns1.dnspod.net', 6666))
ip = sock.recv(16)
sock.close()
return ip
if __name__ == '__main__':
try:
ip = getip()
print (ip)
if current_ip != ip:
if ddns(ip):
current_ip = ip
except Exception as e:
print (e)
pass
使用的是python3,如需使用python2请查阅github
获取domain_id和record_id的方法:
使用curl获取domain_id
curl -k https://dnsapi.cn/Domain.List -d "login_email=替换成dnspod账号&login_password=替换成dnspod密码"
建议在linux下使用curl,windows下使用curl请自行百度。
获取domain结果得到类似下方图片的结果,如果dnspod账号下有多个域名,先找到需要设置的域名,然后找到domain_id。
使用curl获取record_id
curl -k https://dnsapi.cn/Record.List -d "login_email=替换成dnspod账号&login_password=替换成dnspod密码&domain_id=替换成domain_id"
获取record_id结果得到类似下方图片的结果,如果该域名下有多个子域名,先找到需要设置的子域名,然后找到record_id。
获取domain_id和record_id替换好代码保存为Python文档,使用crontab定时运行文档,进行自动更新解析。
未经允许不得转载:爱折腾 » 利用Python脚本进行DNSPod动态域名解析