赞
踩
网址:aHR0cHM6Ly93d3cub2tsaW5rLmNvbS96aC1oYW5zL2J0Yy90eC1saXN0L3BhZ2UvNAo=
抓包分析,发现请求头有X-Apikey参数加密,其他表单和返回内容没有加密。
直接搜索关键字,X-Apikey,找到疑似加密位置,注意这里断点是断不住的,但看上去也是这里进行了加密。
因此搜索关键字getApiKey,找疑似加密位置,打上断点。
翻页后,进一步确认加密位置,貌似是comb这个函数进行了加密,进入这个函数。
打印参数,没错就是这里进行了加密。
它接收两个值,t和e分别是怎么来的呢?回归这里,t是获得时间戳再运用encryptTime()函数得到,e是encryptApikey()函数得到。
先看t,进入encryptTime()函数
再进入 encryptApikey()函数
直接复制并改写代码即可。
先搞定获得t和e的函数,最后在解决最终加密comb
获得t的代码:
- a = 1111111111111;
- var time_stamp = (new Date).getTime();
- function encryptTime(t) {
- var e = (1 * t + a).toString().split("")
- , n = parseInt(10 * Math.random(), 10)
- , r = parseInt(10 * Math.random(), 10)
- , i = parseInt(10 * Math.random(), 10);
- return e.concat([n, r, i]).join("")
- };
- t = encryptTime(time_stamp)
-
- console.log(t)
- // 结果为 2832309119911220
获得e的代码:
- var API_KEY = "a2c903cc-b31e-4547-9299-b6d07b7631ab";
- function encryptApiKey() {
- var t = API_KEY
- , e = t.split("")
- , n = e.splice(0, 8);
- return t = e.concat(n).join("")
- };
- e = encryptApiKey()
- console.log(e)
-
- //结果为 -b31e-4547-9299-b6d07b7631aba2c903cc
再回过头来看comb
o.Z是全局变量window,btoa是内置函数,转为base64格式。
复现这段代码:
- // 引入 Node.js 的 Buffer 类
- const { Buffer } = require('buffer');
-
- function getApiKey(t, e) {
- var n = "".concat(t, "|").concat(e);
- // 使用 Buffer 来转换字符串为 Base64 编码
- var encoded = Buffer.from(n).toString('base64');
- return encoded;
- }
-
- console.log(getApiKey(t,e))
-
- // 结果为MjgzMjMxMDY4Nzg0ODUyNXwtYjMxZS00NTQ3LTkyOTktYjZkMDdiNzYzMWFiYTJjOTAzY2M=
- a = 1111111111111;
- var time_stamp = (new Date).getTime();
- function encryptTime(t) {
- var e = (1 * t + a).toString().split("")
- , n = parseInt(10 * Math.random(), 10)
- , r = parseInt(10 * Math.random(), 10)
- , i = parseInt(10 * Math.random(), 10);
- return e.concat([n, r, i]).join("")
- };
- t = encryptTime(time_stamp)
-
- console.log(t)
- var API_KEY = "a2c903cc-b31e-4547-9299-b6d07b7631ab";
- function encryptApiKey() {
- var t = API_KEY
- , e = t.split("")
- , n = e.splice(0, 8);
- return t = e.concat(n).join("")
- };
- e = encryptApiKey()
- console.log(e)
-
- // 引入 Node.js 的 Buffer 类
- const { Buffer } = require('buffer');
-
- function getApiKey(t, e) {
- var n = "".concat(t, "|").concat(e);
- // 使用 Buffer 来转换字符串为 Base64 编码
- var encoded = Buffer.from(n).toString('base64');
- return encoded;
- }
-
- console.log('最终结果为:',getApiKey(t,e))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。