极志愿sign参数逆向
目标:aHR0cHM6Ly93d3cuaml6aHkuY29tLzQ0L3JhbmsvdXM=
数据需求:U.S.News2022世界大学排名
简单分析:sign参数加密,换页的时候必须更新sign参数
1. js调试
全局搜索"sign ="定位加密位置
两个位置都下断点,再换页,成功断住
可以看到,参数是查询参数
Vt函数:
Et函数:
Tt、At、Rt函数都在一起,直接抠代码
接下来,缺啥补啥
陆续补充Dt、Nt、Lt、qt、Mt、zt、Ft、Ut、Bt函数
St=0
逆向完成!
完整JS太长,有需要的小伙伴v我吧!
2.python调用
调用JS的时候将查询字符串中的page和st传进去即可获得sign参数
# -*- coding: utf-8 -*-
"""
/ $$$$$$$
| $$___ $$
| $$ \__/ | $$ | $$ $$$$$ $$$$$ / $$$$$$ | $$ $$$$$
| $$ \__ | $$$___ $$$___ $$ / $$___ $$ | $$$___ $$
\ $$$$$$$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$
\_____ $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$
| $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$
| $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$ | $$
\ $$$$$$$ | $$ | $$ | $$ | $$ | $$$$$$/ | $$ | $$
\_____/ \__ \__ \__ \__ \______/ \__ \__
"""
# @author:Simon
# @filename:大学排名.py
# @wechat:python_master1120
import time
import execjs
import requests
def get_data(page):
ts = int(time.time())
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"
}
sign = execjs.compile(open('jizhiyuan.js', encoding='utf-8').read()).call('Et', str(page), str(ts))
# print(sign)
url = "天王盖地虎"
params = {
"page": str(page),
"page_len": "20",
"diploma_id": "7",
"wenli": "0",
"rank_type": "us",
"app_id": "98357f659cf8fb6001cff80f7c6b85f2",
"ts": str(ts),
"platform": "desktop",
"v": "210",
"sign": sign
}
response = requests.get(url, headers=headers, params=params)
data_list=response.json()['data']['sch_list']
for data in data_list:
school=data.get('sch_name')
rank_score=data.get('sch_rank_score')
print(school,rank_score)
return data_list
page=1
while get_data(page):
page+=1