您好,登錄后才能下訂單哦!
小生博客:http://xsboke.blog.51cto.com
-------謝謝您的參考,如有疑問,歡迎交流
將DNSPOD的域名導(dǎo)入到DNSLADNSLA(鄭州帝恩愛斯)
DNSLA(鄭州帝恩愛斯)的開發(fā)規(guī)范:
1、開通API:使用DNSLA-API開發(fā)應(yīng)用,首先需要到個(gè)人后臺(tái)申請(qǐng)開通并設(shè)置API的ID和密鑰才可以使用。
2、API調(diào)用頻率:為防止用戶大量頻繁調(diào)用API給系統(tǒng)造成過多壓力,我們對(duì)調(diào)用頻率做了限制,每小時(shí)不超過300次,每天不超過3000次,如超過此限制,則會(huì)分別被暫停調(diào)用1小時(shí)和24小時(shí)。
3、安全傳輸:在調(diào)用API通訊期間,需要發(fā)送API賬號(hào)及密鑰,為保障賬號(hào)安全,必須使用https開頭的API地址,以免在通訊中泄露API密鑰。
4、關(guān)于編碼:請(qǐng)使用UTF-8編碼格式進(jìn)行數(shù)據(jù)傳輸。
5、API權(quán)限鎖定:當(dāng)API調(diào)用密碼錯(cuò)誤超過10次將會(huì)鎖定該用戶的API權(quán)限,鎖定后不會(huì)自動(dòng)解鎖,需要您登錄用戶后臺(tái)進(jìn)行解鎖操作。
DNSLA(鄭州帝恩愛斯)申請(qǐng)開通API:
申請(qǐng)方式:免費(fèi)申請(qǐng)。
申請(qǐng)地址:https://www.dns.la/manage/APISet.aspx (需登錄)
注意事項(xiàng):API長期不用時(shí)請(qǐng)關(guān)閉!
代碼:
import requests,time
Token_ID = 'ID,Token_Str' # dnspod 的API
DNSLA_APIID = 'apiid' # DNSLA的apiid
DNSLA_APIKey = 'apipass' # DNSLA的apipass
def Get_Init(Login_Token, OffSet, Length):
'''
需要通過函數(shù)Get_Domians來判定OffSet和Length的數(shù)值.
:param Login_Token:
:param OffSet: 記錄開始的偏移, 第一條記錄為 0, 依次類推.
:param Length: 要獲取的域名數(shù)量, 比如獲取20個(gè), 則為20.
:return:
'''
Domain_R = requests.post('https://dnsapi.cn/Domain.List', data={'login_token': Login_Token,
'format': 'json',
'offset': OffSet,
'length': Length})
Domain_Result_Data = Domain_R.json()
Domians_Info = Domain_Result_Data['domains']
Domain_Count = 0
for Domain_Dict in Domians_Info:
Domain_ID = Domain_Dict['id']
Domain_Name = Domain_Dict['name']
Domain_Status = Domain_Dict['status']
Domain_Ext_Status = Domain_Dict['ext_status']
if Domain_Status != 'enable':
'''如果域名沒有啟用則跳過'''
continue
if Domain_Ext_Status:
'''如果域名無效則跳過'''
continue
# 用來統(tǒng)計(jì)添加了多少個(gè)域名
Domain_Count += 1
# DNSLA 添加域名
DNSLA_Create_Domains = requests.post('https://api.dns.la/api/domain.ashx',
data={'cmd':'create',
'apiid':DNSLA_APIID,
'apipass':DNSLA_APIKey,
'domain':Domain_Name})
DNSLA_Domain_Recv = DNSLA_Create_Domains.json()
DNSLA_Domain_Data = DNSLA_Domain_Recv['data']
DNSLA_Domain_ID = DNSLA_Domain_Data['domainid']
if DNSLA_Domain_Recv['status']['code'] == 300:
print("添加域名:[%s]成功."%(Domain_Name))
else:
Error_Info = DNSLA_Domain_Recv['status']['name']
print("添加域名:[%s]失敗,錯(cuò)誤信息:[%s]." % (Domain_Name,Error_Info))
Record_R = requests.post('https://dnsapi.cn/Record.List', data={'login_token': Login_Token,
'format': 'json',
'domain_id': Domain_ID})
Record_Result_Data = Record_R.json()
Record_Info = Record_Result_Data['records']
for Record_Dict in Record_Info:
Record_Name = Record_Dict['name']
Record_Type = Record_Dict['type']
Record_Value = Record_Dict['value']
Record_Status = Record_Dict['enabled'] # 0,禁用 1,啟用
if Record_Status == '0':
'''如果記錄狀態(tài)為禁用則跳過'''
continue
if Record_Type == 'NS':
'''如果記錄類型為NS則跳過'''
continue
DNSLA_ADD_Record = requests.post('https://api.dns.la/api/record.ashx',
data={'cmd':'create',
'apiid':DNSLA_APIID,
'apipass':DNSLA_APIKey,
'rtype':'json',
'domainid':DNSLA_Domain_ID,
'host':Record_Name,
'recordtype':Record_Type,
'recordline':'Def',
'recorddata':Record_Value,
})
DNSLA_ADD_Record_Recv = DNSLA_ADD_Record.json()
if DNSLA_ADD_Record_Recv['status']['code'] == 300:
print("域名:[%s]添加解析記錄:[%s][%s][%s],成功."%(Domain_Name,Record_Name,Record_Type,Record_Value))
else:
Error_Info = DNSLA_ADD_Record_Recv['status']['name']
print("域名:[%s]添加解析記錄:[%s][%s][%s],失敗,錯(cuò)誤信息:[%s]."%(Domain_Name,Record_Name,Record_Type,Record_Value,Error_Info))
print("域名導(dǎo)入完成,共導(dǎo)入[%d]個(gè)域名,請(qǐng)驗(yàn)證!"%(Domain_Count))
def Get_Domians(Login_Token, Step_Size):
'''
:param Login_Token:
:param Step_Size: 步長,就是每次獲取域名的數(shù)量
:return:
:Memo: 本次請(qǐng)求使用了offset和length參數(shù)來減少每次請(qǐng)求的數(shù)量,用來提升程序的穩(wěn)定性
'''
Count_R = requests.post('https://dnsapi.cn/Domain.List', data={'login_token': Login_Token,
'format': 'json'})
Count_Result_Data = Count_R.json()
if Count_Result_Data['status']['code'] != '1':
return Count_Result_Data
Count = int(Count_Result_Data['info']['domain_total'])
for OffSet in range(0, Count, Step_Size):
if Count > Step_Size:
Integer = Count // int(Step_Size) # 取整 2
Remainder = Count % int(Step_Size) # 取余 40
else:
# Integer = 0
# Remainder = Count
Get_Init(Login_Token=Login_Token, OffSet=OffSet, Length=Count)
continue
if OffSet != 0 and OffSet == Integer * Step_Size:
Length = Remainder
Get_Init(Login_Token=Login_Token, OffSet=OffSet, Length=Length)
else:
Length = Step_Size
Get_Init(Login_Token=Login_Token, OffSet=OffSet, Length=Length)
break
Dnspod_Token = Token_ID
Get_Domians(Login_Token=Dnspod_Token,Step_Size=100)
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。