猿人学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;
# };
相关推荐
@汤圆酱4 分钟前
【无标题】
python·jmeter
内存不泄露12 分钟前
基于 Spring Boot 的医院预约挂号系统(全端协同)设计与实现
java·vue.js·spring boot·python·flask
码农幻想梦16 分钟前
实验7 知识表示与推理
开发语言·人工智能·python
写代码的【黑咖啡】19 分钟前
深入理解 Python 中的 SQLAlchemy
开发语言·python·oracle
未定义.22129 分钟前
第1篇:0基础入门!Python+Selenium环境搭建与第一个自动化脚本
python·功能测试·selenium·自动化·jenkins·pytest
上海云盾-高防顾问29 分钟前
防CC攻击不止限速:智能指纹识别如何精准抵御恶意爬虫
爬虫·安全·web安全
特行独立的猫29 分钟前
python+Proxifier+mitmproxy实现监听本地网路所有的http请求
开发语言·爬虫·python·http
深蓝电商API29 分钟前
Scrapy Spider 参数化:动态传入 start_urls 和自定义设置
爬虫·python·scrapy
CCPC不拿奖不改名31 分钟前
基于FastAPI的API开发(爬虫的工作原理):从设计到部署详解+面试习题
爬虫·python·网络协议·tcp/ip·http·postman·fastapi
小白学大数据32 分钟前
某程旅行小程序爬虫技术解析与实战案例
爬虫·小程序