大学排行榜网站sign参数逆向

文章讲述了如何通过JavaScript调试来逆向分析并提取加密的sign参数,特别是在页面翻页时的更新过程。使用Vt,Et等函数进行加密,然后在Python中调用这些功能,通过传递查询字符串中的page和st获取sign,从而实现对U.S.News2022世界大学排名数据的抓取和分析。
摘要由CSDN通过智能技术生成

极志愿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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值