第十二题:入门级js
1、前言
这个入门级js属实让我没想到,是真的很简单,对于新手来说,基本上只要了解什么是base64加密就很容易能还原加密参数了,确实是到零难度的题,在被之前那些中等难得的题虐了一番后,看完这个内心直呼“我又可以了!”,总的来说真的是对新手非常友好的送分题了。
2、解析过程
点开十二题页面直接进入开发者模式,看看有什么加密参数之类的,仔细找了一番也就m
这个比较短的字符串应该是加密过的
顺着这个请求,进一步去找该请求的发起者,也就是它的调用栈,点击requests
这个请求:
在这里很容易就看到了这个list
列表内存放了page
和m
,page
很好说,就是第几页,m
则是"yuanrenxue"这个字符串加上页码,之后经过btoa
处理后得到的,也就是对这个字符串做了个简单的base64加密,至此逻辑已经非常清晰,可以直接撸代码了:
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}]}