逆向19-极志愿
1. 分析
搜索关键字sign

定位

悬浮Vt(t)

可以看出是一个md5摘要,但是是大写了,不重要,我们先验证是不是md5
Vt("123456")
'e10adc3949ba59abbe56e057f20f883e'

根据验证,是一个标准的md5,只是需要都大写一下,我们就可以不往后看了
接下来需要看的是这个字符串是如何构成的


根据上面两张图
t 是参数已知可以修改页码,
U 是key 写死的
然后拼接成
"{app_id=98357f659cf8fb6001cff80f7c6b85f2&diploma_id=7&page=2&page_len=20&platform=desktop&ts=1728991885766&v=210&wenli=0}&key=146fd1e66513611ac7af69f21f1d7725"
代码实现
# 页面为1 的时候
import requests
cookies = {
'Hm_lvt_2610e5c202b60841b30a62960fbef0ad': '1728990588',
'Hm_lpvt_2610e5c202b60841b30a62960fbef0ad': '1728990588',
'HMACCOUNT': '5B3A86709F76EACE',
'PI': '44',
}
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
# 'cookie': 'Hm_lvt_2610e5c202b60841b30a62960fbef0ad=1728990588; Hm_lpvt_2610e5c202b60841b30a62960fbef0ad=1728990588; HMACCOUNT=5B3A86709F76EACE; PI=44',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://www.jizhy.com/44?address=true&fr=nginx',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}
params = {
'page': '1',
'page_len': '20',
'diploma_id': '7',
'wenli': '0',
'app_id': '98357f659cf8fb6001cff80f7c6b85f2',
'ts': '1728990595621',
'platform': 'desktop',
'v': '210',
'sign': '932BDED217FE376ABBA8D0AFAA629592', # 需要自己生成
}
response = requests.get('https://www.jizhy.com/open/sch/rank-list', params=params, cookies=cookies, headers=headers)
print(response.text)
需要修改sign
params = {
'page': '1',
'page_len': '20',
'diploma_id': '7',
'wenli': '0',
'app_id': '98357f659cf8fb6001cff80f7c6b85f2',
'ts': '1728990595621',
'platform': 'desktop',
'v': '210',
# 'sign': '932BDED217FE376ABBA8D0AFAA629592',
}
# 1. 排序
l = sorted(params.items(), key=lambda x: x[0])
dict_params = dict(l)
# 生成page=1&page_len=20
params_sorted = urlencode(dict_params)
# 2.拼接字符串
sign_str = "{" + params_sorted + "}" +"&key=146fd1e66513611ac7af69f21f1d7725"
# 3.生成md5
m = md5()
m.update(sign_str.encode())
sign = m.hexdigest().upper()
params['sign'] = sign
总代码
import requests
from urllib.parse import urlencode
from hashlib import md5
cookies = {
'Hm_lvt_2610e5c202b60841b30a62960fbef0ad': '1728990588',
'Hm_lpvt_2610e5c202b60841b30a62960fbef0ad': '1728990588',
'HMACCOUNT': '5B3A86709F76EACE',
'PI': '44',
}
headers = {
'accept': 'application/json, text/plain, */*',
'accept-language': 'zh-CN,zh;q=0.9',
'cache-control': 'no-cache',
# 'cookie': 'Hm_lvt_2610e5c202b60841b30a62960fbef0ad=1728990588; Hm_lpvt_2610e5c202b60841b30a62960fbef0ad=1728990588; HMACCOUNT=5B3A86709F76EACE; PI=44',
'pragma': 'no-cache',
'priority': 'u=1, i',
'referer': 'https://www.jizhy.com/44?address=true&fr=nginx',
'sec-ch-ua': '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
}
params = {
'page': '1',
'page_len': '20',
'diploma_id': '7',
'wenli': '0',
'app_id': '98357f659cf8fb6001cff80f7c6b85f2',
'ts': '1728990595621',
'platform': 'desktop',
'v': '210',
# 'sign': '932BDED217FE376ABBA8D0AFAA629592',
}
# 1. 排序
l = sorted(params.items(), key=lambda x: x[0])
dict_params = dict(l)
# 生成page=1&page_len=20
params_sorted = urlencode(dict_params)
# 2.拼接字符串
sign_str = "{" + params_sorted + "}" +"&key=146fd1e66513611ac7af69f21f1d7725"
# 3.生成md5
m = md5()
m.update(sign_str.encode())
sign = m.hexdigest().upper()
params['sign'] = sign
# 发送请求
response = requests.get('https://www.jizhy.com/open/sch/rank-list', params=params, cookies=cookies, headers=headers)
print(response.text)


浙公网安备 33010602011771号