本来是想学下树美的,感觉太难了,就开始了学习加速乐的进程,网上文章挺多的,到了自己就整不起走,对大佬来说可能就是一些小知识点,无需挂齿,今天我把自己的理解做个小记录。
1,2.打开抓包后,打开浏览器开发者工具,在debugger就断着了,大胆调试看数据。
网址:aHR0cHM6Ly93d3cubXBzLmdvdi5jbi9pbmRleC5odG1s
代码
import json
import re
import requests
import execjs
from hashlib import md5, sha1, sha256
import ast
def mps():
cookies = {}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
}
url = "https://***"
resp_first = requests.get(url=url, headers=headers)
# print(resp_first.text)
# print(resp_first.cookies)
# 获取 jsluid_s
cookies.update(resp_first.cookies)
print("获取第一次响应生成的 __jsl_clearance_s 参数=====================")
js_clearance = re.findall('cookie=(.*?);location', resp_first.text)[0]
'''js_code = "function get_cookies(){"+js_clearance+"return cookie}"
cookie = execjs.compile(js_code).call('get_cookies').split(';')[0].split('=')
cookies.update({cookie[0]: cookie[1]})'''
aa_result = execjs.eval(js_clearance).split(';')[0]
print(aa_result)
# 获取第一次响应生成的 __jsl_clearance_s 参数
cookies['__jsl_clearance_s'] = aa_result.split("=")[1]
print("获取第二次响应生成的 __jsl_clearance_s 参数=====================")
resp_second = requests.get(url=url, headers=headers, cookies=cookies)
# print(resp_second.text)
'''dd = re.findall(';go\((.*?)\)</script>', resp_second.text)[0]
print(dd)
# 获取字典内容
params = json.loads(dd)
with open('jiasule.js', 'r', encoding='utf-8') as f:
jsl_js = f.read()
js_clearance_s = execjs.compile(jsl_js).call('cookies', params)
# 获取第二次响应生成的 js_clearance_s 参数
cookies.update(js_clearance_s)'''
dd = ast.literal_eval(re.findall(r'go\((.*?)\)', resp_second.text)[1]) # 会判断需要计算的内容是不是合法的python类型,合法再进行运算,提高安全性。
# print(dd)
js_clearance_s = go(dd)
print(js_clearance_s)
cookies.update({'__jsl_clearance_s': js_clearance_s})
resp_third = requests.get(url=url, headers=headers, cookies=cookies)
resp_third.encoding = 'utf-8'
print(resp_third.text)
def go(data):
chars = data["chars"]
encrypt = ''
for i in chars:
for j in chars:
cookie = data["bts"][0] + i + j + data["bts"][1]
if data['ha'] == 'md5':
encrypt = md5()
elif data['ha'] == 'sha1':
encrypt = sha1()
elif data['ha'] == 'sha256':
encrypt = sha256()
encrypt.update(cookie.encode(encoding='utf-8'))
if encrypt.hexdigest() == data['ct']:
return cookie
if __name__ == '__main__':
mps()