猿人学web端爬虫攻防大赛赛题解析_第十二题:入门级js

第十二题:入门级js

1、前言

这个入门级js属实让我没想到,是真的很简单,对于新手来说,基本上只要了解什么是base64加密就很容易能还原加密参数了,确实是到零难度的题,在被之前那些中等难得的题虐了一番后,看完这个内心直呼“我又可以了!”,总的来说真的是对新手非常友好的送分题了。

2、解析过程

点开十二题页面直接进入开发者模式,看看有什么加密参数之类的,仔细找了一番也就m这个比较短的字符串应该是加密过的
猿人学web端爬虫攻防大赛赛题解析_第十二题:入门级js顺着这个请求,进一步去找该请求的发起者,也就是它的调用栈,点击requests这个请求:
猿人学web端爬虫攻防大赛赛题解析_第十二题:入门级js
在这里很容易就看到了这个list列表内存放了pagempage很好说,就是第几页,m则是"yuanrenxue"这个字符串加上页码,之后经过btoa处理后得到的,也就是对这个字符串做了个简单的base64加密,至此逻辑已经非常清晰,可以直接撸代码了:
猿人学web端爬虫攻防大赛赛题解析_第十二题:入门级js

3、代码实现

代码实现如下:


import requests
import base64


headers = {
    'Proxy-Connection': 'keep-alive',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest',
    'Referer': 'http://match.yuanrenxue.com/match/12',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}

for i in range(1,6):
    page=str(i)
    m=base64.b64encode(('yuanrenxue'+page).encode('utf-8'))
    params = (
        ('page', page),
        ('m', m),
    )

    response = requests.get('http://match.yuanrenxue.com/api/match/12', headers=headers, params=params).json()
    print(response)

输出结果:

{'status': '1', 'state': 'success', 'data': [{'value': 62}, {'value': 4633}, {'value': 2177}, {'value': 6424}, {'value': 6567}, {'value': 956}, {'value': 2474}, {'value': 7846}, {'value': 7787}, {'value': 2789}]}
{'status': '1', 'state': 'success', 'data': [{'value': 4542}, {'value': 9173}, {'value': 8246}, {'value': 4449}, {'value': 8026}, {'value': 374}, {'value': 4610}, {'value': 2916}, {'value': 9066}, {'value': 2618}]}
{'status': '1', 'state': 'success', 'data': [{'value': 5150}, {'value': 2325}, {'value': 5170}, {'value': 986}, {'value': 6206}, {'value': 6412}, {'value': 5985}, {'value': 9476}, {'value': 4302}, {'value': 8450}]}
{'status': '1', 'state': 'success', 'data': [{'value': 8955}, {'value': 2762}, {'value': 1846}, {'value': 8320}, {'value': 8179}, {'value': 6651}, {'value': 2149}, {'value': 7217}, {'value': 1572}, {'value': 976}]}
{'status': '1', 'state': 'success', 'data': [{'value': 1233}, {'value': 8043}, {'value': 5598}, {'value': 9933}, {'value': 4680}, {'value': 324}, {'value': 9866}, {'value': 4169}, {'value': 3414}, {'value': 998}]}
上一篇:【Uniapp】下载文件到设备并预览


下一篇:后端标准化项目之统一接口返回