dnspod ddns 微信推送
import requests
import re
import json
import time
#延时10秒执行防止刚开机还没联网
time.sleep(10)
corp_id = '12222' #微信企业id
corp_secret = '156667' #应用Secret
agent_id = '1000' #应用id
#获取微信token
def get_access_token(corp_id, corp_secret):
resp = requests.get(f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corp_id}&corpsecret={corp_secret}')
js = json.loads(resp.text)
#print(js)
if js["errcode"] == 0:
access_token = js["access_token"]
expires_in = js["expires_in"]
return access_token, expires_in
#发送微信文字消息
def wechat_push_text(agent_id, access_token, message):
data = {
"touser": "@all",
"msgtype": 'text',
"agentid": agent_id,
"text": {
"content": message
},
"safe": 0,
"enable_id_trans": 0,
"enable_duplicate_check": 0,
"duplicate_check_interval": 1800
}
resp = requests.post(f'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token={access_token}', json=data)
js = json.loads(resp.text)
#print(js)
if js["errcode"] == 0:
return js
access_token, expires_in = get_access_token(corp_id, corp_secret)
#域名ID
domain_id = '123456'
#前缀ID
record_id = '12345678'
#dnspod api id,key
login_token = '12345,1234567890'
#域名前缀
sub_domain = 'www'
url = 'http://myip.ipip.net/'
# ..dnspod..User-Agent
headers = {'User-Agent':'RasPi Auto DDNS/1.0.0 (email@domain.com)'}
#获取当前ip
try:
res = requests.get(url).text
ip = re.findall(r'(\d+\.\d+\.\d+\.\d+)',res)
ip = ip[0]if ip else ''
wlan_ip = ip
print('本地ip:',wlan_ip)
except:
sys.exit(0)
#获取域名当前ip
url_list = 'https://dnsapi.cn/Record.List'
data_list = {
'login_token':login_token,
'format':'json',
'domain_id':domain_id,
'sub_domain':sub_domain,
'record_type':'A'
}
data_dns = requests.post(url=url_list,data=data_list,headers=headers).json()
list_ip = data_dns["records"][0] ["value"]
#判断当前ip和域名ip是否一样不一样则更新
print('域名ip:',list_ip)
if wlan_ip != list_ip:
url_modify='https://dnsapi.cn/Record.Modify'
data_modify={
'login_token':login_token,
'format':'json',
'domain_id':domain_id,
'record_id':record_id,
'sub_domain':sub_domain,
'value':wlan_ip,
'record_type':'A',
'record_line':'\u9ED8\u8BA4'
}
response_modify =requests.post(url=url_modify,data=data_modify,headers=headers).json()
#匹配返回数据微信推送
code='状态码:'+response_modify['status']['code']
message='消息:'+response_modify['status']['message']
created_at='更新时间:'+response_modify['status']['created_at']
id='域名前缀ID:'+str(response_modify['record']['id'])
name='域名前缀:'+response_modify['record']['name']
value='更新ip:'+response_modify['record']['value']
wx='ip更新消息:'+'\n'+code+'\n'+message+'\n'+created_at+'\n'+id+'\n'+name+'\n'+value
wechat_push_text(agent_id=agent_id,access_token=access_token,message=wx)
else:
print('ip一样不更新')```