Ricky Hao

阿里云Python云解析DDNS脚本

0x00

一直在用Oray的DDNS服务,但是苦于免费DDNS的域名太难看,所以就想尝试下阿里云的云解析API来用作DDNS。
首先,我们需要一个阿里云的域名(废话)。

先扔个自己写好的脚本Aliyun-DDNS
如果只是想用DDNS的话,用上面的脚本即可。若是想自己写一些更有意思的脚本,那么继续看吧。

0x01

我使用的是Python下的阿里云SDK。

pip install aliyun-python-sdk-alidns

这里的aliyun-python-sdk-alidns是从阿里云 Python SDK 列表里找到的相应包。
安装好之后,我们就可以开始了。

0x02

from aliyunsdkcore import client
clt=client.AcsClient('Access Key','Acces Secret','RegionId')

这一步是用你的AccessKey来实例化一个客户端。

from aliyunsdkalidns.request.v20150109 import DescribeDomainRecordsRequest
id_r=DescribeDomainRecordsRequest.DescribeDomainRecordsRequest()
id_r.set_DomainName('Domain')
id_r.set_RRKeyWord('RR')

实例化你的查询对象。DomainName值你的域名(xxx.com),RRKeyword指你的子域名(test for test.xxx.com)。

id_re=self.clt.do_action(id_r)
print(id_re)

发送查询请求,并打印出返回数据。
在这个数据包里,我们可以看到你的某个子域名所对应的RecordId是多少。

0x03

现在我们拥有了子域名的RecordId,就可以更新我们的对应子域名到新IP了。

import requests
r=requests.get("http://icanhazip.com")

这里获得本地最新IP。

from aliyunsdkalidns.request.v20150109 import UpdateDomainRecordRequest
ur_r=UpdateDomainRecordRequest.UpdateDomainRecordRequest()
ur_r.set_RR('RR')
ur_r.set_RecordId('RecordId')
ur_r.set_Type('A')
ur_r.set_Value('IP')
ur_re=self.clt.do_action(ur_r)
print(ur_re)

很容易理解的一串代码,就是设置参数而已。
若是返回的数据内没有Error,那么便是更改IP成功了。
将脚本设置定时运行,就可以变成DDNS服务了。

0x05

其实还有更多有趣的功能,看下面的API链接就好啦~
(其实觉得阿里云的文档做的真是,。。渣的一笔,看了一早上才知道怎么用)
阿里云解析API概览

点赞
  1. liu1l说道:

    感觉学长好多博文的图都挂了QAQ

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据