商业> 正文

猿人学2023第一题:利用协议获取全部5页全部数字之和

时间: 2023-06-29 04:41:50 来源: 哔哩哔哩

题目地址:aHR0cHM6Ly9tYXRjaDIwMjMueXVhbnJlbnh1ZS5jbi90b3BpYy8x

一、页面调试

1)在控制台搜索接口名称可以很容易定位到发送请求的地方,代码可读性比较好,可以直接在相关函数内打上断点;


(资料图片)

2)点击页码触发请求逻辑,在右侧面板可以看到相关的变量。

请求总共需要传3个参数“now、page、token”,其中,now(当前时间戳)和page(当前页码)比较简单,主要是提取token的生成方法;

从代码中可以知道 token 的计算公式为:MD5(AES(now + page)),意即:将时间戳和页码的字符串进行拼接,再对拼接后的字符串进行AES加密,接着对AES加密后的字符串内容进行MD5计算。

起初,我直接使用网上公共的AES加密方法来实现代码,但发现请求会报错“token无效”,这时才恍然网站的AES加密是不同的。

二、代码实现

代码的关键点主要是提取AES加密方法,这里有两个方案:

方案一

在正式发送请求之前,可以在断点调试过程中,将AES加密的方法右键存为全局变量,以便在后续的函数中使用。这种方式有点讨巧,不用去花太多时间在去提取代码。

方案二

提取加密相关代码。好在代码都集中在 /corejs/ 文件中。经过分析,其实修改的内容并不多,只需将第34~75行之间的Ajax请求做些许调整。

1)去除了初始化时对call函数的调用;

2)修改Ajax请求成功后的回调函数。

修改后的代码执行完成后,会在全局生成一个名为call的函数,这个函数就是用来请求页面数据的。

关键词:

责任编辑:QL0009

为你推荐

关于我们| 联系我们| 投稿合作| 法律声明| 广告投放

版权所有 © 2020 跑酷财经网

所载文章、数据仅供参考,使用前务请仔细阅读网站声明。本站不作任何非法律允许范围内服务!

联系我们:315 541 185@qq.com