猿人学web端爬虫攻防大赛赛题第15题——备周则意怠-常见则不疑

解题步骤

1、观察抓的包

2、有个m参数,一看就是经过处理的,我们得知道m是如何组成的。看Initiator模块。

3、还是看request函数,往上一看就看到了m的赋值操作。

打断点,触发。

4、看下window.m()的定义

5、比较好理解的,t1t2就是对时间戳做相应的处理,关键是window.q函数,定位一下。

6、定位的一头雾水,啥也没有呀。回到刚刚的地方,发现它加载了/static/match/match15/main.wasm文件,可能window.q函数在文件里面定义的

先写代码获取/static/match/match15/main.wasm文件的内容。

这里需要利用python的第三方库:pywasm

安装:

复制代码
pip install pywasm==1.0.8

一开始安装pywasm库的时候没有指定版本,导致我的程序一直报错,后来指定版本为1.0.8后报错消失。

python 复制代码
import pywasm
import requests
wasm_url = "https://match.yuanrenxue.cn/static/match/match15/main.wasm"
resp1 = requests.get(wasm_url)
with open("main.wasm", mode="wb") as file:
    file.write(resp1.content)
python 复制代码
import pywasm
import requests
import time
import random
import math
wasm_url = "https://match.yuanrenxue.cn/static/match/match15/main.wasm"
resp1 = requests.get(wasm_url)
with open("main.wasm", mode="wb") as file:
    file.write(resp1.content)


t1=int(time.time()/2)
t2=int(time.time()/2-math.floor(random.random()*(50)+1))
module = pywasm.load('./main.wasm')
result = module.exec('encode', [t1, t2])
m = "{}|{}|{}".format(result, t1, t2)
print(m)
# 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;
# };
相关推荐
CTA量化套保6 小时前
近期零基础量化学习:先分阶段,再用 AI 检查缺口
人工智能·python
清水白石0087 小时前
Python 死锁排查全攻略:从线程卡死到锁依赖定位与工程化修复
linux·网络·python
Elias不吃糖7 小时前
Langfuse 入门:Trace、Prompt、Dataset、Experiment、Evaluator
前端·python·prompt·langfuse
TechWayfarer7 小时前
批量查IP归属地,在线API、脚本、离线库怎么选?三种方案实测对比
网络·python·网络协议·tcp/ip
七牛开发者9 小时前
为什么 Go 很适合 AI 辅助开发?
数据库·人工智能·python·elasticsearch·log4j
河南凹凸环境艺术设计9 小时前
性价比高的民宿酒店设计企业
大数据·人工智能·python
傻啦嘿哟12 小时前
猫眼电影TOP100爬虫:Requests+正则表达式实战
爬虫·正则表达式
wuyk55512 小时前
Python 第三章:列表 List
服务器·开发语言·python
笨鸟先飞,勤能补拙12 小时前
从预测到决策:人工智能与机器学习的系统方法、工程闭环与现实边界
大数据·人工智能·windows·python·机器学习·密码学
MgArcher12 小时前
抖音a_bogus参数逆向实战:JSVMP环境模拟与Hook技术(2025最新)
javascript·爬虫·python