题目网址:https://match.yuanrenxue.cn/match/12
解题步骤
- 看流量包和其回显数据。
- 只有一个流量包,那就是只要访问该网址就能获取页面数据。看下请求地址的组成。
- 变量
m
一看就是base64编码,解码看下原字符串。
再尝试访问第二页,看看原字符串组成的规律。
- 比较明了了,原字符串就是
yuanrenxue
加当前的页面数。搞明白这个,就可以写代码爬取这5页的数据了。
得到答案。import requests import base64 import time import re url = "https://match.yuanrenxue.cn/api/match/12" sum_num = 0 suffix = "yuanrenxue" headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 " "Safari/537.36", "cookie": "Hm_lvt_c99546cf032aaa5a679230de9a95c7db=*****; HMACCOUNT=*******; qpfccr=true; " "no-alert3=true; tk=*******; sessionid=*******; Hm_lvt_9bcbda9cbf86757998a2339a0437208e=*******; Hm_lpvt_9bcbda9cbf86757998a2339a0437208e=*******; Hm_lpvt_c99546cf032aaa5a679230de9a95c7db=*******" } pattern = r'{"value": (?P<num>.*?)}' for i in range(1, 6): m = base64.b64encode((suffix + str(i)).encode("utf-8")) params = {'page': i, "m": m} resp = requests.get(url, params=params, headers=headers) findall = re.findall(pattern, resp.text) for num in findall: sum_num += int(num) time.sleep(0.5) print(sum_num)
提交答案,通过。