Python+阿里云DNS 搭建DDNS动态域名解析
生活随笔
收集整理的這篇文章主要介紹了
Python+阿里云DNS 搭建DDNS动态域名解析
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
家用的動(dòng)態(tài)公網(wǎng)IP在斷電以及一段時(shí)間后會(huì)變化,現(xiàn)在家寬公網(wǎng)IP開網(wǎng)盤以及代理管得越來越嚴(yán)格,已經(jīng)有檢測(cè)到被封的案例
上海檢測(cè)web封停
這讓我這種掛種子的PT黨(迫真)感到害怕
以前我把國外的免費(fèi)域名通過Cloudflare的免費(fèi)動(dòng)態(tài)解析到自己的路由器上,因?yàn)閲獾拿赓M(fèi)域名不能備案,怕被查水表(似乎這么久也沒挨停機(jī),或許廣西比較寬松),為防止萬一,在阿里的萬網(wǎng)上整了一個(gè)幾塊錢一年的域名來備案解析
看了一圈下來阿里似乎沒有提供現(xiàn)成的DDNS動(dòng)態(tài)域名解析,只能自力更生了
參考:使用python實(shí)現(xiàn)阿里云動(dòng)態(tài)域名解析DDNS
不過這篇文章有一點(diǎn)過時(shí),里面提到的一些函數(shù)已經(jīng)不可用
于是查閱阿里的SDK說明
云解析API說明
實(shí)現(xiàn)思路
1.每天定時(shí)查詢(例如使用crontab)本機(jī)IP,與阿里云DNS的A記錄做對(duì)比
2.如果不同就更新A記錄
代碼
import json,requests from aliyunsdkcore.client import AcsClient from aliyunsdkcore.acs_exception.exceptions import ClientException from aliyunsdkcore.acs_exception.exceptions import ServerException from aliyunsdkalidns.request.v20150109.UpdateDomainRecordRequest import UpdateDomainRecordRequest from aliyunsdkalidns.request.v20150109.DescribeSubDomainRecordsRequest import DescribeSubDomainRecordsRequest client = AcsClient('***', '*****', 'cn-hangzhou') request = DescribeSubDomainRecordsRequest() request.set_accept_format('json') request.set_SubDomain("***.***") response = client.do_action_with_exception(request) print(str(response, encoding='utf-8')) old=json.loads(str(response, encoding='utf-8')) old=old["DomainRecords"]["Record"][0]["Value"] now=requests.get("http://www.3322.org/dyndns/getip") now=now.text.replace("\n", "") if(now!=old):print(old,"需要更新為",now)request = UpdateDomainRecordRequest()request.set_accept_format('json')request.set_RecordId("*****")request.set_RR("dns")request.set_Type("A")request.set_Value(now)response = client.do_action_with_exception(request)print(str(response, encoding='utf-8'))效果
總結(jié)
以上是生活随笔為你收集整理的Python+阿里云DNS 搭建DDNS动态域名解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 实现动态解析阿里云DNS记
- 下一篇: python考试题目及答案-python