本帖最后由 QingYi. 于 2021-7-14 22:29 编辑
首先打开网站:https://fanyi.baidu.com/
打开开发者工具,选择xhr模式(别问,问就是经验告诉我是这边)
我们得到的数据如下:
[Asm] 纯文本查看 复制代码
from: csto: zhquery: longtoutranstype: realtimesimple_means_flag: 3sign: 777440.999377token: 770e1bc5ccd4a98a51d57ae0aa32a8aadomain: common
但是我们不知道那边是定死的值,那边是固定的值,怎么搞? 没关系 我们再发一次请求
我们可以看到唯一变化的值只有这个sign哦
来 我们来搜索sign
我就不一个一个找了,这些都是需要大家一个一个去找的,我就直接告诉大家在那边吧
他在这边,我们直接断点打过去
为什么是这里,像不像这个参数?
我们来再次发送请求
看看这些值
sign被丢进去加密了,我们把鼠标放在这个函数上面,看看他是个什么东西
我们把这个函数抠出来
我们看到他提示少了一个i,i在那?
经过对比发现,我们找到了i,我们来看看 这个i的值 他是固定死的呢 还是动态生成的呢?
我们可以看到是固定死的
我们把它拿进来 又提示报错,怎么搞?
提示错误,我们把它删掉就好了
然后告诉我们少了定义 是函数n
后面我们发现这个函数n就在这个函数的上面 把它拿进去
是不是结果就来了?
是不是结果就来了?
附上JS代码,Python自己去做去
[JavaScript] 纯文本查看 复制代码
function e(r) {var i = "320305.131321201";var o = r.match(/[uD800-uDBFF][uDC00-uDFFF]/g);if (null === o) { var t = r.length; t > 30 && (r = "" + r.substr(0, 10) + r.substr(Math.floor(t / 2) - 5, 10) + r.substr( - 10, 10))} else { for (var e = r.split(/[uD800-uDBFF][uDC00-uDFFF]/), C = 0, h = e.length, f = []; h > C; C++)"" !== e[C] && f.push.apply(f, a(e[C].split(""))), C !== h - 1 && f.push(o[C]); var g = f.length; g > 30 && (r = f.slice(0, 10).join("") + f.slice(Math.floor(g / 2) - 5, Math.floor(g / 2) + 5).join("") + f.slice( - 10).join(""))}var u = void 0,l = "" + String.fromCharCode(103) + String.fromCharCode(116) + String.fromCharCode(107);u = null !== i ? i: (i = window[l] || "") || "";for (var d = u.split("."), m = Number(d[0]) || 0, s = Number(d[1]) || 0, S = [], c = 0, v = 0; v < r.length; v++) { var A = r.charCodeAt(v); 128 > A ? S[c++] = A: (2048 > A ? S[c++] = A >> 6 | 192 : (55296 === (64512 & A) && v + 1 < r.length && 56320 === (64512 & r.charCodeAt(v + 1)) ? (A = 65536 + ((1023 & A) << 10) + (1023 & r.charCodeAt(++v)), S[c++] = A >> 18 | 240, S[c++] = A >> 12 & 63 | 128) : S[c++] = A >> 12 | 224, S[c++] = A >> 6 & 63 | 128), S[c++] = 63 & A | 128)}for (var p = m,p = n(p, F);return p = n(p, D),p ^= s,0 > p && (p = (2147483647 & p) + 2147483648),p %= 1e6,p.toString() + "." + (p ^ m)}