猿人学web端爬虫攻防大赛赛题第12题——入门级js

题目网址:https://match.yuanrenxue.cn/match/12
image

解题步骤

  1. 看流量包和其回显数据。
    image
  2. 只有一个流量包,那就是只要访问该网址就能获取页面数据。看下请求地址的组成。
    image
    image
  3. 变量m一看就是base64编码,解码看下原字符串。
    image
    再尝试访问第二页,看看原字符串组成的规律。
    image
    image
  4. 比较明了了,原字符串就是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)
    
    得到答案。
    image
    提交答案,通过。
    image
posted @   死不悔改奇男子  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示