题目链接:https://match.yuanrenxue.cn/match/15
翻页看看请求⬇️

点击Payload旁边的旁边的旁边的Initiator,再点击req对应的js进入打上断点⬇️

网上翻一点看到script标签里面是WebAssembly,请求也可以看到wasm文件⬇️


从wasm文件点过去,在567行打上断点,再次翻页断点到此处⬇️

t1和t2很好实现,鼠标放在window.q上,点击框框处进入函数定义的地方⬇️

这里看不懂没关系,使用python的wasmtime包(pip install wasmtime)解决,完整代码如下:
import json import random import time import requests import wasmtime.loader import module # type:ignore def get_wasm_m(): """调用WASM模块的encode函数生成带时间戳的编码结果""" t1 = int(time.time() / 2) t2 = int(time.time() / 2 - random.randint(1, 50)) result = module.encode(t1, t2) ress = '|'.join([str(result), str(t1), str(t2)]) return ress def get_question_15_result(): """wasm""" url = "https://match.yuanrenxue.cn/api/question/15" headers = { "accept": "application/json, text/javascript, */*; q=0.01", # "accept-encoding": "gzip, deflate, br", "accept-language": "zh-CN,zh;q=0.9", "cookie": "Hm_lvt_f80b2b389f44bbfb3bfe1704817d44e0=1773998064; sessionid=1p34qxd0wn3sc2nlip8vx6izgffrh0m9; m=a37ca75833ca865d11a7451f18043a14|1774000280348; HMACCOUNT=5CCC201FDBE7CB2F; yuanrenxue_cookie=1774248315|H9iyxX7cyNbIKK3lJpCJQzOvYnqIJjbhyhj3BfcKkEeWIOqhIAmtsCqygVmvm4rOBcvzZHu; Hm_lpvt_f80b2b389f44bbfb3bfe1704817d44e0=1774251208", "referer": "https://match.yuanrenxue.cn/match/15", "sec-ch-ua": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36", "x-requested-with": "XMLHttpRequest" } sum_data = 0 s = requests.Session() s.headers.clear() s.headers.update(headers) for page in range(1, 6): if page == 5: headers['user-agent'] = 'yuanrenxue' s.headers.update(headers) params = { "page": page, "pageSize": "10", "kw": "", "m": get_wasm_m(), } try: r = s.get(url=url, params=params, verify=False) if r.status_code == 200: data = r.json()['data'] sum_data += sum(data) print(f"翻第{str(page)}页,累计求和:{sum_data}") else: print(f'error:{r.status_code}-----{r.text}') except Exception as e: raise ValueError(e) if __name__ == '__main__': # get_wasm_m() get_question_15_result()
实践出真知~
浙公网安备 33010602011771号