前言:由于最近家里公网IP经常变动,自己又有个Oray的域名,所以想弄个动态IP更新上去,而Oray的花生壳服务现在要花钱(还限制端口),所以已经不考虑花生壳了
一、Oray设置
进入域名设置的 其他服务-自主管理,开启自主管理设置
二、关键URL API
1.登录
首先需要获取到登录token
def getToken():
headers={
"Authorization":"",
"Accept":"application/json, text/plain, */*",
"Content-Type":"application/json",
"Host":"dm-api.oray.com",
"Origin":"http://diy.oray.com",
"Referer":"http://diy.oray.com/domain",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
}
url="http://dm-api.oray.com/authorization" #登录url
ret=requests.post(url,data='{"rootname": "自主管理域名", "password": "密码"}',headers=headers) #data是raw格式
_json=json.loads(ret.text)
return _json['token']
2.获取recordid
def getRecordItem ():
url="http://dm-api.oray.com/resolves/自助管理根域名"
headers={
"Authorization":"Bearer {0}".format(token),
"Accept":"application/json, text/plain, */*",
"Content-Type":"application/json",
"Host":"dm-api.oray.com",
"Origin":"http://diy.oray.com",
"Referer":"http://diy.oray.com/domain",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
}
ret=requests.get(url,headers=headers)
_json=json.loads(ret.text)
for _item in _json:
if(_item['name']=='你目标二级域名头'):
return _item
recordid=getRecordItem()['recordid']
3.更新IP
def updateIp():
url="http://dm-api.oray.com/resolves/你要修改的二级域名"
headers={
"Authorization":"Bearer {0}".format(token),
"Accept":"application/json, text/plain, */*",
"Content-Type":"application/json",
"Host":"dm-api.oray.com",
"Origin":"http://diy.oray.com",
"Referer":"http://diy.oray.com/domain",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
}
_json=json.loads('{"recordid":1,"domainname":"你要修改的二级域名","subname":"二级域名头","line":0,"recordtype":"a","value":"","ttl":3600,"priority":0}')
_json['value']=ip #你要提交的ip
_json['recordid']=getRecordItem()
_data=json.dumps(_json)
requests.post(url,data=_data,headers=headers)
以上就完成了,根据自己使用的不同语言进行http调用修改就行,放一份完整的Python代码仅供参考(假设要修改的二级域名:nas.example.cn)
import json
import requests
ip="127.0.0.1"
def getToken():
headers={
"Authorization":"",
"Accept":"application/json, text/plain, */*",
"Content-Type":"application/json",
"Host":"dm-api.oray.com",
"Origin":"http://diy.oray.com",
"Referer":"http://diy.oray.com/domain",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
}
url="http://dm-api.oray.com/authorization"
post=requests.post(url,data='{"rootname": "example.cn", "password": "123456"}',headers=headers)
_json=json.loads(post.text)
return _json['token']
token=getToken()
def getRecordItem():
url="http://dm-api.oray.com/resolves/example.cn"
headers={
"Authorization":"Bearer {0}".format(token),
"Accept":"application/json, text/plain, */*",
"Content-Type":"application/json",
"Host":"dm-api.oray.com",
"Origin":"http://diy.oray.com",
"Referer":"http://diy.oray.com/domain",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
}
ret=requests.get(url,headers=headers)
_json=json.loads(ret.text)
for _item in _json:
if(_item['name']=='nas'):
return _item
def updateIp():
url="http://dm-api.oray.com/resolves/nas.example.cn"
headers={
"Authorization":"Bearer {0}".format(token),
"Accept":"application/json, text/plain, */*",
"Content-Type":"application/json",
"Host":"dm-api.oray.com",
"Origin":"http://diy.oray.com",
"Referer":"http://diy.oray.com/domain",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"
}
_json=json.loads('{"recordid":0,"domainname":"nas.example.cn","subname":"nas","line":0,"recordtype":"a","value":"","ttl":3600,"priority":0}')
_json['value']=ip
_json['recordid']=getRecordItem()['recordid']
_data=json.dumps(_json)
requests.post(url,data=_data,headers=headers)
updateIp()