Loading... ## 前言 首先得有一个阿里云的域名:[https://www.aliyun.com/minisite/goods?userCode=jdjc69nf](https://www.aliyun.com/minisite/goods?userCode=jdjc69nf) 然后你的IP必须是公网IP,不然解析了也没用。 本文章讲怎样通过阿里云的SDK来添加修改域名解析,检查本机IP与解析的IP是否一致,不一致自动修改解析,达到动态解析的目的,主要用于家庭宽带这些动态IP的地方。 ## 安装阿里云SDK和其他第三方库 ``` pip install aliyun-python-sdk-core-v3 pip install aliyun-python-sdk-domain pip install aliyun-python-sdk-alidns pip install requests ``` 直接在CMD中输入上面的命令即可,如果下载速度太慢可以百度搜 `windows下Python换源`。  使用Pycharm之类IDE的自行百度 `pycharm怎样安装第三方库` ## 详细步骤 ### 获取accessKeyId和accessSecret 可以在阿里云控制台个人中心直接获取,但是一般建议使用RAM角色来进行权限控制,这样这个accessKey和accessSecret就只能操作域名,不能操作其他的资源,相对会比较安全。关于RAM快速入门:[https://help.aliyun.com/document_detail/28637.html?source=5176.11533457&userCode=jdjc69nf](https://help.aliyun.com/document_detail/28637.html?source=5176.11533457&userCode=jdjc69nf) ### 源码下载 gitee:[https://gitee.com/zeruns/aliddns_Python](https://gitee.com/zeruns/aliddns_Python) github:[https://github.com/zeruns/-Python-aliddns_ipv4-ipv6](https://github.com/zeruns/-Python-aliddns_ipv4-ipv6) 求Star 将 `aliddns.py`文件下载下来。 然后用notepad++或其他编辑器打开,按照注释提示修改并保存。  然后运行一下看看有没有问题: 打开cmd输入 `python 脚本目录`  ### 设置定时任务 右键点击电脑左下角,再点击计算机管理  点击任务计划程序,再点击创建任务,输入要设置的任务名称。  新建触发器,执行间隔可以自己设置,持续时间改成无限期。  新建操作,这一步很重要,配置错误就会导致脚本文件执行不成功!!!  最后确认就行。 Linux设置方法自行百度 `Linux定时任务` ## 推荐文章 **搭建内网穿透服务器:**[https://blog.zeruns.tech/archives/397.html](https://blog.zeruns.tech/archives/397.html) **高性价比和便宜的VPS/云服务器推荐:**[https://blog.zeruns.tech/archives/383.html](https://blog.zeruns.tech/archives/383.html) **各大CDN平台速度评测:**https://blog.zeruns.tech/archives/506.html **IPv6/IPv4 + aliddns 实现黑群晖外网控制和访问:**[https://blog.zeruns.tech/archives/263.html](https://blog.zeruns.tech/archives/263.html) **学生优惠权益大全:**[https://blog.zeruns.tech/archives/321.html](https://blog.zeruns.tech/archives/321.html) 最后修改:2020 年 08 月 13 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果您觉得我的文章有帮助,请随意赞赏,赞赏有助于激发博主的热情,感谢!
47 条评论
Traceback (most recent call last):
h.request(req.get_method(), req.selector, req.data, headers,File "C:Python310liburllibrequest.py", line 1348, in do_open
File "C:Python310libhttpclient.py", line 1282, in request
self._send_request(method, url, body, headers, encode_chunked)File "C:Python310libhttpclient.py", line 1328, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)File "C:Python310libhttpclient.py", line 1277, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)File "C:Python310libhttpclient.py", line 1037, in _send_output
self.send(msg)File "C:Python310libhttpclient.py", line 975, in send
self.connect()File "C:Python310libhttpclient.py", line 1454, in connect
self.sock = self._context.wrap_socket(self.sock,File "C:Python310libssl.py", line 512, in wrap_socket
return self.sslsocket_class._create(File "C:Python310libssl.py", line 1070, in _create
self.do_handshake()File "C:Python310libssl.py", line 1341, in do_handshake
self._sslobj.do_handshake()ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:997)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
ip = urlopen('https://api-ipv6.ip.sb/ip').read() # 使用IP.SB的接口获取ipv6地址File "F:ProgramFiles-Python-aliddns_ipv4-ipv6-master-Python-aliddns_ipv4-ipv6-masteraliddns.py", line 87, in <module>
File "C:Python310liburllibrequest.py", line 216, in urlopen
return opener.open(url, data, timeout)File "C:Python310liburllibrequest.py", line 519, in open
response = self._open(req, data)File "C:Python310liburllibrequest.py", line 536, in _open
result = self._call_chain(self.handle_open, protocol, protocol +File "C:Python310liburllibrequest.py", line 496, in _call_chain
result = func(*args)File "C:Python310liburllibrequest.py", line 1391, in https_open
return self.do_open(http.client.HTTPSConnection, req,File "C:Python310liburllibrequest.py", line 1351, in do_open
raise URLError(err)urllib.error.URLError: <urlopen error [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:997)>
小白请教什么原因,谢谢
请问如何修改TTL,我的DDNS服务支持TTL60,但是脚本会自动给换回TTL600。
ipv4 ddns解析的子域名子是指什么?小白一枚
还有ipv6 ddns解析的子域名,搞不明白
ipv4和ipv6子域名相同的情况下,阿里云的记录只有一条,ipv4和ipv6的方法在反复修改一条解析,
有解决方案的话可以分析下吗?
一直使用 SHELL 脚本实现DDNS,看来Python 实现要方便许多啊~!
大佬 我是一个小白 我尝试将这个代码程序在树莓派中实现 但遇到一个问题就是爬ipv6的地址的那个网页貌似获取不到ipv6 我在windows里面那个网页就无法打开 而ipv4的网页是可以正常打开的 所以我有个想法就是通过ifconfig这个命令 获取树莓派的ipv6地址 然后解析 请问 代码怎么实现!!!感谢感谢
如果打不开那说明你的ipv6地址可能不通,运营商或你路由器的问题,你的ipv6就用不了
嗯 确实 我们教室的wifi就可以爬回来ipv6 但是在寝室的网 爬不回来 应该是宿舍网有问题
嗯 确实 我们教室的wifi就可以爬回来ipv6 但是在寝室的网 爬不回来 应该是宿舍网有问题
我的路由器ipv6用的阿里云DDNS可以访问 但是就是树莓派这个就获取不到ipv6OωO
楼主, 为什么一运行就说语法错误?
C:aliddns>python aliddns.py
<!DOCTYPE html> ^File "C:aliddnsaliddns.py", line 1
SyntaxError: invalid syntax
C:aliddns>python aliddns.py
<!DOCTYPE html> ^File "C:aliddnsaliddns.py", line 7
SyntaxError: invalid syntax
谢谢作者分享。但是有一个问题,就是现在基本上都支持一个子域名同时解析ipv6和ipv4 我同时设置了1.xx.com的a记录,然后又设置了1.xx.com的AAAA记录。这样的话这个脚本他运行ipv4更新时会把原来AAAA的删掉添加一个a的 然后运行ipv6更新时又会删掉a的添加AAAA的 这个有点麻烦了
问题修复了
不好意思遗漏一点,ipv4相同位置要加上request.set_Type("A")
ヾ(´・ ・`。)ノ"
我这边翻阅阿里的api后发现时ipv6的请求代码请求到的内容时ipv6时没有添加对象解析类型,请求成了A类型的记录,在ipv6 这行request = DescribeSubDomainRecordsRequest()
下添加request.set_Type("AAAA") 即可
啊 谢谢!!学到了
只能获取到 经常变动 临时ipv6地址
有没有办法获取到 三个ipv6地址中 相对固定的ipv6地址
不然ipv6地址经常变 很难受啊
如果实在没办法 只能 自己改ipv6后缀了
有個問題 可以多域名配置嗎
一个域名一个脚本,你可以多弄几个脚本