接口地址
https://jx.aidouer.net/?url=
https://sb.5gseo.net/?url=
https://www.116811.com/plugin.php?id=vipvideo:index
视频教程
https://www.bilibili.com/video/BV1dt4y1b7ED/
python代码
# -*- coding:utf-8 -*-
# @Author: Null119 微信公众号【治廷君】
# @Desc : { 云解析-jx.aidouer.net }
# @Time : 2022/6/15 21:55
'''
var Key1 = AES_ECB(Key,$.md5(Vkey));
var Key2 = XXTEA.encryptToBase64(Key, Key1);
var Sign = encode_url(lc($.md5(Domain+Host+Time+Vurl+Key+Key1)),'971a0e7224fecb61b1868f1211a6360d');
var Sign1 = AES_ECB(Sign,$.md5(Vkey));
var Sign2 = XXTEA.encryptToBase64(Sign, Sign1);
var Token = encode_url(lc($.md5(Domain+Host+Time+Vurl+Key+Key1+Sign+Sign1)),Time+'52bc46dec47a199abc82793bfabe56f6');
var Token1 = AES_ECB(Token,$.md5(Vkey));
var Token2 = XXTEA.encryptToBase64(Token, Token1);
'''
import requests,re,urllib3,time,hashlib,execjs,json
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
ctx = execjs.compile(open('./aidouer.js').read())
r=requests.Session()
def md5(str):
return hashlib.md5(str.encode(encoding='UTF-8')).hexdigest()
def getIpmd5():
url = r'http://www.3322.org/dyndns/getip'
resp = requests.get(url).text.strip()
ip=resp.split('.')
return md5(f'{ip[0]}.{ip[1]}.000.000')
def getVipUrl(url):
url=f'https://jx.aidouer.net/?url={url}'
rurl=url
appkey = 'dc49f6067ec7e71c62aad71c5b727c62'
resp=r.get(url,verify=False).text
resp=resp.replace('\t','').replace('\n','').replace('\r','').replace(' ','')
Time=re.search('Time="(.*?)"',resp).group(1)
Version = re.search('Version="(.*?)"', resp).group(1)
Vurl = re.search('Vurl="(.*?)"', resp).group(1)
Vkey = re.search('Vkey="(.*?)"', resp).group(1)
Key = re.search('Key="(.*?)"', resp).group(1)
#nKey=re.findall("encode_url.*?'(.*?)'",resp)
SignKey= '971a0e7224fecb61b1868f1211a6360d'
TokenKey = '52bc46dec47a199abc82793bfabe56f6'
Domain ='jx.aidouer.net'
Host ='jx.aidouer.net'
Ipmd5=getIpmd5()
print(f'================Start=================')
print(f'Ipmd5: \t{Ipmd5}')
print(f'Time: \t{Time}')
print(f'Vurl: \t{Vurl}')
print(f'Vkey: \t{Vkey}')
print(f'Key: \t{Key}')
print(f'SignKey: \t{SignKey}')
print(f'TokenKey: \t{TokenKey}')
enstr = f'AES_ECB("{Key}","{md5(Key)}")'
Key1 = str(ctx.eval(enstr))
print(f'Key1: \t{Key1}')
enstr = f'xxtea_encrypt("{Key}","{Key1}")'
Key2 = ctx.eval(enstr)
print(f'Key2: \t{Key2}')
enstr = f'authEncode("{md5(Domain + Host + Time + Vurl + Key + Key1)}","{SignKey}")'
Sign = ctx.eval(enstr)
print(f'Sign: \t{Sign}')
enstr = f'AES_ECB("{Sign}","{md5(Vkey)}")'
Sign1 = ctx.eval(enstr)
print(f'Sign1: \t{Sign1}')
enstr = f'xxtea_encrypt("{Sign}","{Sign1}")'
Sign2 = ctx.eval(enstr)
print(f'Sign2: \t{Sign2}')
enstr = f'authEncode("{md5(Domain + Host + Time + Vurl + Key + Key1 + Sign +Sign1)}","{Time + TokenKey}")'
Token = ctx.eval(enstr)
print(f'Token: \t{Token}')
enstr = f'AES_ECB("{Token}","{md5(Vkey)}")'
Token1 = str(ctx.eval(enstr))
print(f'Token1: \t{Token1}')
enstr = f'xxtea_encrypt("{Token}","{Token1}")'
Token2 = ctx.eval(enstr)
print(f'Token2: \t{Token2}')
Tokenh0 = f'{Vkey}-{Key}-{Sign}-{Token}'
Tokenh1 = f'{Key1}-{Sign1}-{Token1}'
enstr = f'xxtea_encrypt("{Tokenh0+Tokenh1+Key2+Sign2+Token2}","{Host+Domain+Time}")' #xxtea没有问题
Tokenh2 = ctx.eval(enstr)
ckeyData={
'url': Vurl,
'wap': "0",
'ios': "0",
'host': Host,
'referer': "",
'time': Time,
'key': Key,
'key1': Key1,
'sign': Sign,
'sign1': Sign1,
'token': Token,
'token1': Token1
}
ckeyStr=json.dumps(ckeyData,separators=(',', ':'))
enstr=f"AES_CBC('{ckeyStr}','{md5(Tokenh2)}')"
ckey = ctx.eval(enstr)
print(f'ckey: \t{ckey}')
pdat = {
"url": Vurl,
"wap": "0",
"ios": "0",
"host": Host,
"referer": "",
"time": Time,
"key": Key,
"key1": Key1,
"sign": Sign,
"sign1": Sign1,
"token": Token,
"token1": Token1,
"ckey": ckey
}
pdatStr=json.dumps(pdat,separators=(',', ':'))
enstr = f"TSTKC('{pdatStr}')"
Tokenh3 = ctx.eval(enstr)
print(f'Tokenh0: \t{Tokenh0}')
print(f'Tokenh1: \t{Tokenh1}')
print(f'Tokenh2: \t{Tokenh2}')
print(f'Tokenh3: \t{Tokenh3}')
url = f'https://jx.aidouer.net/Api.php?ver=V3.0×tamp={Time}&appkey={appkey}'
headers= {
'Accept':'application/json, text/javascript, */*; q=0.01',
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
'Referer':url,
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063',
'Origin': 'https://jx.aidouer.net',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': "cors",
'Sec-Fetch-Site': 'same-origin',
'Vkey': Vkey,
'Ipmd5': Ipmd5,
'Version': Version,
'Access-Token0': Tokenh0,
'Access-Token1': Tokenh1,
'Access-Token2': Tokenh2,
'Access-Token3': Tokenh3,
'Cookie':f'uuid={Vkey}-{Key}-{Sign}-{Token};'
}
resp=r.post(url,data=pdat,headers=headers,verify=False)
if resp.json()['status']==1:
rdata=resp.json()['data']
appkey=resp.json()['appkey']
Ipmd5=resp.json()['ipmd5']
enstr = f'AES_CBC_DE("{rdata}","{md5(appkey+Ipmd5)}")'
derdata = ctx.eval(enstr)
print(f'deRdata: \t{derdata}')
enurl=json.loads(derdata)['url']
print(f'EnUrl: \t{enurl}')
headers = {
'Accept': '*/*',
'Content-Type':'text/html; charset=UTF-8',
'Referer': rurl,
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063',
'Cookie':f'uuid={Vkey}-{Key}-{Sign}-{Token};',
}
enstr = f'authDecode("{enurl}","{md5(Host + Token)}")'
deUrl = ctx.eval(enstr)
enstr = f'deUrl("{deUrl}")'
url = ctx.eval(enstr)
resp = r.get(url,headers=headers,allow_redirects=False, verify=False)
m3u8 = resp.headers['Location']
print(f'm3u8地址: \t{m3u8}')
resp = r.get(m3u8,headers=headers,verify=False)
with open(f'./{Time}.m3u8', 'wb') as F:
F.write(resp.content)
print(f'{Time}.m3u8 下载完成.')
else:
print(resp.json()['data']['msg'])
print(f'================End=================')
if __name__ == "__main__":
url='https://v.qq.com/x/cover/mzc00200p51jpn7/v0043tq177l.html'
getVipUrl(url)
JS文件下载
https://null119.lanzoul.com/iEuex06v6cbc
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习使用,请在下载后24小时内删除,严禁商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
【注意:本站发布资源来源于网络搜集,均有较强时效性,请在下载前注意查看文章资源发布或更新时间,距离当前时间太久的资源不建议下载,特别是安卓专区相关资源,会有大概率失效无法使用】
评论(0)