最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

python3對接godaddy API,實(shí)現(xiàn)自動更改域名解析(DDNS)

2023-08-24 11:44 作者:馳網(wǎng)科技idc-艾西  | 我要投稿

python3對接godaddy API,實(shí)現(xiàn)自動更改域名解析(DDNS)

文章開始前,先解釋下如下問題:

①什么是域名解析?

域名解析一般是指通過一個(gè)域名指向IP地址(A解析),然后我們訪問這個(gè)域名就可以有直接訪問這個(gè)IP地址的效果,只需要記住域名即可,無需記住IP。

②什么是DDNS?

DDNS是動態(tài)域名解析,一個(gè)域名可以根據(jù)IP的變化,自動修正解析,無論設(shè)備的IP地址怎么變化,這個(gè)域名將一直指向?qū)?yīng)的設(shè)備。

③有什么用?

動態(tài)域名解析廣泛應(yīng)用于家庭網(wǎng)絡(luò),因?yàn)榧彝ゾW(wǎng)絡(luò)的IP地址是動態(tài)的,每次重啟貓,都會造成IP地址變化。如果想要通過外網(wǎng)穩(wěn)定訪問(不一定是web訪問)家里的設(shè)備,就需要使用動態(tài)域名解析,現(xiàn)在用的比較廣泛的是花生殼DDNS。

④為什么要用godaddy?

首先godaddy提供更改域名解析的API,其次godaddy是世界上最大的域名服務(wù)商,再次,國內(nèi)其他的運(yùn)營商都是不提供API。沒有API的情況下,就需要通過定時(shí)登錄獲取cookie,然后再模擬更改域名的網(wǎng)頁操作,post數(shù)據(jù)到服務(wù)器。

(因平臺原因本文中www即為xxx ,zzz即為zzz,cccc/ccccc即為cccc/ccccc)

?

前言

?使用python3監(jiān)控公網(wǎng)地址,然后上報(bào)給服務(wù)器,服務(wù)器再修改反代理/發(fā)郵件通知用戶。由于最近使用遠(yuǎn)程桌面比較多,每次遠(yuǎn)程前都要打開郵箱找最近的一次公網(wǎng)地址變更記錄。于是想如果可以實(shí)現(xiàn)動態(tài)域名解析呢?這樣申請一個(gè)域名,隨時(shí)都指向最新的IP地址

目前有的域名解析運(yùn)營商域名解析,每次post成功數(shù)據(jù),解析修改完了,賬號就被限制登錄了。因?yàn)檫@種post是完全模擬網(wǎng)頁操作,可能被檢測到了,然后就封號。?

?

可以直接更改一個(gè)域名的所有解析記錄。

操作步驟:?

一、gou買一個(gè)域名

如果你有域名了,那這一步操作可以忽略掉。

詳細(xì)步驟不說了,很簡單,注冊一個(gè)godaddy賬戶,然后搜索你想要的域名。遇到申請下來后點(diǎn)DNS,可以看到域名解析的記錄:


?

二、獲取API的key

key是用來認(rèn)證賬戶身份的,和瀏覽器的cookie一樣,不同的是cookie會過期,而key可以永久不過期。在一段請求中,只要在頭部包含這個(gè)key,就可以讓服務(wù)器認(rèn)定你的身份。

key申請:ccccc://developer.godaddy.com/keys? 登錄賬戶,點(diǎn)網(wǎng)頁右上角的“cereate new API key”,隨便命名,環(huán)境選擇?production:

?


它會給你一個(gè)公鑰key,和一個(gè)私鑰secret,復(fù)制下來保存好:

?


?

三、文檔中更改域名解析put的用法

地址:ccccc://developer.godaddy.com/doc/endpoint/domains#/v1/recordReplace

?


可以看到,需要提供的參數(shù)是domain,還有records。domain就是我們需要修改解析的域名,如本文domain就是xxserver.me。records就是put請求向?yàn)g覽器發(fā)送的參數(shù),里面有data、name、prot等參數(shù)。其中要用到的有以下幾個(gè)參數(shù):

data :解析記錄。如將www解析到3.3.3.3,那么data就是3.3.3.3

name :解析名。就是所說的域名前綴,如xxx.xxserver.me,name(解析名)就是www,如果為@則表示為空

ttl :域名解析生效時(shí)間。域名解析提交后,多久才能生效,當(dāng)然越短越好,最短600

type:解析類型。?一般用A解析,將一個(gè)域名指向一個(gè)IP地址。

records的數(shù)據(jù)以json形式傳遞。我們試一下填寫數(shù)據(jù),看官方為我們生成請求的格式:

?


生成格式:

?


這是一個(gè)linux的curl格式,我們需要把它轉(zhuǎn)成python3格式。從官方生成的請求格式中可以看到,請求類型為put,-H后面為headers(請求頭),包含accept、content-type、authorization。其中accept是請求返回接收的數(shù)據(jù)格式,content-type是發(fā)送的數(shù)據(jù)格式,authorization是用戶認(rèn)證(API秘鑰),格式為:sso-key 你的key:你的secret,請求:ccccc://api.godaddy.com/v1/domains/xxserver.me/records?(正式環(huán)境去掉ote)

?

四、使用python3實(shí)現(xiàn)

這里我們實(shí)際操作一下,通過API,將xxserver.me這個(gè)域名(沒有前綴,解析名為@)直接定向到IP地址:5.5.5.5。詳細(xì)解釋已經(jīng)注釋在代碼里了

#導(dǎo)入需要的模塊import?urllib.requestimport?json

?

這里做個(gè)示范,讀取用戶輸入

?

ip_addr?=?input(str('輸入IP地址:'))

?

定義請求地址

?

api_url?=?'ccccc://api.godaddy.com/v1/domains/xxserver.me/records';

?

直接做一個(gè)函數(shù),傳入API地址和更改的IP

?

def?update_NS(api_url,ip_addr):

????#定義http請求頭

????head?=?{}

????#定義服務(wù)器返回json數(shù)據(jù)給我們

????head['Accept']?=?'application/json'

????#定義我們發(fā)送的數(shù)據(jù)為json

????head['Content-Type']?=?'application/json'

????#定義身份認(rèn)證信息

????head['Authorization']?=?'sso-key?xxxxxxxxx你的key?xxxxxxxxx:xxxxxxxxxx你的secret?xxxxxxxxxx'

?

????#定義解析記錄

????records_a?=?{

????"data"?:?ip_addr,

????"name"?:?"@",

????"ttl"?:?600,

????"type"?:?'A',

????}

????#下面這兩個(gè)必須包含,不可更改

????records_NS01?=?{

????"data"?:?"ns07.domaincontrol.com",

????"name"?:?"@",

????"ttl"?:?3600,

????"type"?:?"NS",

????}

?

????records_NS02?=?{

????"data"?:?"ns08.domaincontrol.com",

????"name"?:?"@",

????"ttl"?:?3600,

????"type"?:?"NS",

????}

????#定義需要發(fā)送給服務(wù)器的數(shù)據(jù)為put_data這個(gè)列表,包含上面的解析記錄

????put_data?=?[records_a,records_NS01,records_NS02]

?

????#錯(cuò)誤處理

????try:

????????#定義請求,包含請求地址,請求頭,請求方式,并把put_data從json轉(zhuǎn)換為字符串格式,再轉(zhuǎn)換成bytes

????????req?=?urllib.request.Request(api_url,headers?=?head,data?=?json.dumps(put_data).encode(),method?=?"PUT")

????????rsp?=?urllib.request.urlopen(req)

????????#根據(jù)官方文檔我們只需要知道服務(wù)器返回碼即可,200為成功,這里獲取服務(wù)器的返回碼

????????code?=?rsp.getcode()

????????#判斷是否成功

????????if?code?==?200:

????????????print('成功更改域名解析:'+ip_addr)

????????else:

????????????print('更改失敗!')

????#原諒我偷懶。官方有400/401/422等錯(cuò)誤,這里統(tǒng)一處理了

????except:

????????print('錯(cuò)誤!')

?

執(zhí)行一下函數(shù),并傳入請求地址和我們輸入的IP

?

update_NS(api_url,ip_addr)

執(zhí)行一下看看效果:


文中的監(jiān)測公網(wǎng)地址,實(shí)現(xiàn)自動更改解析記錄。以后就不要翻郵箱找IP啦。

?


python3對接godaddy API,實(shí)現(xiàn)自動更改域名解析(DDNS)的評論 (共 條)

分享到微博請遵守國家法律
琼结县| 巴彦淖尔市| 闻喜县| 高碑店市| 津南区| 廊坊市| 西丰县| 宝坻区| 海原县| 凤翔县| 钦州市| 兴化市| 朝阳县| 凤山市| 安顺市| 黄梅县| 清远市| 同江市| 巴里| 新丰县| 建始县| 江阴市| 特克斯县| 绥中县| 新泰市| 手机| 大埔县| 安庆市| 清涧县| 宁都县| 鄂温| 方城县| 皮山县| 龙南县| 天祝| 罗定市| 宣恩县| 新郑市| 桐梓县| 滦南县| 富阳市|