吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4309|回复: 27
收起左侧

[Web逆向] 详细分析某度翻译API得到真实数据

  [复制链接]
QingYi. 发表于 2021-7-14 22:03
本帖最后由 QingYi. 于 2021-7-14 22:29 编辑

首先打开网站:https://fanyi.baidu.com/
打开开发者工具,选择xhr模式(别问,问就是经验告诉我是这边)
1.png
我们得到的数据如下:
[Asm] 纯文本查看 复制代码
from: cs
to: zh
query: longtou
transtype: realtime
simple_means_flag: 3
sign: 777440.999377
token: 770e1bc5ccd4a98a51d57ae0aa32a8aa
domain: common


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

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

来 我们来搜索sign
3.png

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

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


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


7.png


我们来再次发送请求
5.png

看看这些值
6.png

sign被丢进去加密了,我们把鼠标放在这个函数上面,看看他是个什么东西
8.png
我们把这个函数抠出来
9.png
我们看到他提示少了一个i,i在那?

10.png

经过对比发现,我们找到了i,我们来看看 这个i的值 他是固定死的呢 还是动态生成的呢?
11.png
我们可以看到是固定死的
12.png
我们把它拿进来 又提示报错,怎么搞?

13.png
提示错误,我们把它删掉就好了
14.png
然后告诉我们少了定义 是函数n

15.png

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


是不是结果就来了?
17.png


是不是结果就来了?

18.png



附上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)
}

免费评分

参与人数 8吾爱币 +11 热心值 +6 收起 理由
lcjok92021 + 1 + 1 谢谢@Thanks!
二十瞬 + 1 + 1 用心讨论,共获提升!
roojay + 1 + 1 谢谢@Thanks!
小小学生 + 1 + 1 用心讨论,共获提升!
hj170520 + 2 + 1 我很赞同!
lendone + 1 用心讨论,共获提升!
GMCN + 1 用心讨论,共获提升!
JusonR + 3 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

二十瞬 发表于 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里面一个个翻的傻样。
netCheney 发表于 2021-7-14 23:35
拜服楼主,解析JS文件太6了
lendone 发表于 2021-7-15 01:02
太牛了,可以,学习一下
hj170520 发表于 2021-7-15 05:34
可以! 学习,学习。
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
感谢大佬分享~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 15:34

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表