QingYi. 发表于 2021-7-14 22:03

详细分析某度翻译API得到真实数据

本帖最后由 QingYi. 于 2021-7-14 22:29 编辑

首先打开网站:https://fanyi.baidu.com/
打开开发者工具,选择xhr模式(别问,问就是经验告诉我是这边)

我们得到的数据如下:
from: cs
to: zh
query: longtou
transtype: realtime
simple_means_flag: 3
sign: 777440.999377
token: 770e1bc5ccd4a98a51d57ae0aa32a8aa
domain: common

但是我们不知道那边是定死的值,那边是固定的值,怎么搞?没关系 我们再发一次请求

我们可以看到唯一变化的值只有这个sign哦


来 我们来搜索sign


我就不一个一个找了,这些都是需要大家一个一个去找的,我就直接告诉大家在那边吧

他在这边,我们直接断点打过去



为什么是这里,像不像这个参数?





我们来再次发送请求


看看这些值


sign被丢进去加密了,我们把鼠标放在这个函数上面,看看他是个什么东西

我们把这个函数抠出来

我们看到他提示少了一个i,i在那?



经过对比发现,我们找到了i,我们来看看 这个i的值 他是固定死的呢 还是动态生成的呢?

我们可以看到是固定死的

我们把它拿进来 又提示报错,怎么搞?


提示错误,我们把它删掉就好了

然后告诉我们少了定义 是函数n



后面我们发现这个函数n就在这个函数的上面把它拿进去



是不是结果就来了?



是不是结果就来了?





附上JS代码,Python自己去做去

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 && f.push.apply(f, a(e.split(""))),
    C !== h - 1 && f.push(o);
    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 || "") || "";
for (var d = u.split("."), m = Number(d) || 0, s = Number(d) || 0, S = [], c = 0, v = 0; v < r.length; v++) {
    var A = r.charCodeAt(v);
    128 > A ? S = A: (2048 > A ? S = 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 = A >> 18 | 240, S = A >> 12 & 63 | 128) : S = A >> 12 | 224, S = A >> 6 & 63 | 128), S = 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)
}

二十瞬 发表于 2021-7-26 16:26

QingYi. 发表于 2021-7-26 15:27
是和手机的参数相关

这个参数 它是手机哪个参数应该还有timestamp 那些加密来的,每次都在变.这个您当时是怎么分析的呢?只通过网页端来分析没有反编译app 吗?

QingYi. 发表于 2021-10-22 16:27

SuperSpiderMan 发表于 2021-10-21 09:09
你好楼主 我这边也是如此破解百度翻译的,但是目前遇到些问题: 当传入的字符串长度在30以内是没有问题的, ...

现在我搞明白了你问的是什么问题,我从来没见过超过30个英文字母的单词

shenhuyan 发表于 2021-7-14 22:42

好像很厉害

2809818948 发表于 2021-7-14 23:19

看到图上开发者工具 Search 功能, 就想起以前自己在Sources里面一个个翻的傻样。:lol

netCheney 发表于 2021-7-14 23:35

拜服楼主,解析JS文件太6了

lendone 发表于 2021-7-15 01:02

太牛了,可以,学习一下

hj170520 发表于 2021-7-15 05:34

{:301_986:} 可以! 学习,学习。

kabin 发表于 2021-7-15 08:10

百度看到后,会不会更新呢

小小学生 发表于 2021-7-16 09:35

很有探索精神,好评给你

QingYi. 发表于 2021-7-16 10:16

小小学生 发表于 2021-7-16 09:35
很有探索精神,好评给你

谢谢支持

roojay 发表于 2021-7-16 11:36

感谢大佬分享~
页: [1] 2 3
查看完整版本: 详细分析某度翻译API得到真实数据