【困难】 猿人学web第一届 第15题 备周则意怠,常见则不疑

2024-09-02 04:28

本文主要是介绍【困难】 猿人学web第一届 第15题 备周则意怠,常见则不疑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据接口分析

数据接口 https://match.yuanrenxue.cn/api/match/15
请求时需要携带 page 页码,m为加密参数
cookie中没有加密信息,携带 SessionId请求即可在这里插入图片描述

加密参数还原

查看数据接口对应的 requests 栈
在这里插入图片描述
m参数 是通过 window.m() 方法执行后得到的
在这里插入图片描述

打上断点,查看 window.m() 方法执行了什么

instance = results.instance;
window.q = instance.exports.encode;
window.m = function (){t1 = parseInt(Date.parse(new Date())/1000/2);t2 = parseInt(Date.parse(new Date())/1000/2 - Math.floor(Math.random() * (50) + 1));return window.q(t1, t2).toString() + '|' + t1 + '|' + t2;
};

window.q = instance.exports.encode;

在这里插入图片描述

window.q 是请求 wasm 文件编译成的,可以在 python 调用 wasm 文件

# 首先将 wasm 二进制的文件保存到本地
import requests
response = requests.get('https://match.yuanrenxue.cn/static/match/match15/main.wasm').content
open('15.wasm', 'wb').write(response)

调用

def get_m():t1 = int((int(time.time()) * 1000) / 1000 / 2)t2 = int((int(time.time()) * 1000) / 1000 / 2 - random.randint(10, 60))result = pywasm.load('15.wasm')results = result.exec("encode", [t1, t2])return f'{results}|{t1}|{t2}'

python 代码

import requests
import pywasm
import random
import timeheaders = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
}
cookies = {"sessionid": "你的sessionId",
}def get_m():t1 = int((int(time.time()) * 1000) / 1000 / 2)t2 = int((int(time.time()) * 1000) / 1000 / 2 - random.randint(10, 60))result = pywasm.load('15.wasm')results = result.exec("encode", [t1, t2])return f'{results}|{t1}|{t2}'def get_math15(page):url = "https://match.yuanrenxue.cn/api/match/15"params = {"m": get_m(),"page": f"{page}"}response = requests.get(url, headers=headers, cookies=cookies, params=params)return response.json()['data']if __name__ == '__main__':nums = 0for page_ in range(1, 6):nums_list = get_math15(page_)for num in nums_list:nums += num['value']print('page: ', page_, 'nums: ', nums)

这篇关于【困难】 猿人学web第一届 第15题 备周则意怠,常见则不疑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128989

相关文章

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

MySQL ORDER BY 语句常见用法、示例详解

《MySQLORDERBY语句常见用法、示例详解》ORDERBY是结构化查询语言(SQL)中的关键字,隶属于SELECT语句的子句结构,用于对查询结果集按指定列进行排序,本文给大家介绍MySQL... 目录mysql ORDER BY 语句详细说明1.基本语法2.排序方向详解3.多列排序4.常见用法示例5.

MySQL 索引简介及常见的索引类型有哪些

《MySQL索引简介及常见的索引类型有哪些》MySQL索引是加速数据检索的特殊结构,用于存储列值与位置信息,常见的索引类型包括:主键索引、唯一索引、普通索引、复合索引、全文索引和空间索引等,本文介绍... 目录什么是 mysql 的索引?常见的索引类型有哪些?总结性回答详细解释1. MySQL 索引的概念2

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I