Python+阿里云DNS 搭建DDNS动态域名解析
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Python+阿里云DNS 搭建DDNS动态域名解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                家用的動態公網IP在斷電以及一段時間后會變化,現在家寬公網IP開網盤以及代理管得越來越嚴格,已經有檢測到被封的案例
 上海檢測web封停
 這讓我這種掛種子的PT黨(迫真)感到害怕
 以前我把國外的免費域名通過Cloudflare的免費動態解析到自己的路由器上,因為國外的免費域名不能備案,怕被查水表(似乎這么久也沒挨停機,或許廣西比較寬松),為防止萬一,在阿里的萬網上整了一個幾塊錢一年的域名來備案解析
 看了一圈下來阿里似乎沒有提供現成的DDNS動態域名解析,只能自力更生了
 參考:使用python實現阿里云動態域名解析DDNS
 
 不過這篇文章有一點過時,里面提到的一些函數已經不可用
于是查閱阿里的SDK說明
 云解析API說明
實現思路
1.每天定時查詢(例如使用crontab)本機IP,與阿里云DNS的A記錄做對比
 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'))效果
總結
以上是生活随笔為你收集整理的Python+阿里云DNS 搭建DDNS动态域名解析的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Python 实现动态解析阿里云DNS记
- 下一篇: 高速PCB常见问题
