夜泉 发表于 2018-3-10 01:27

谷歌翻译(Google Translate) TKK值,tk值算法,api接口公布

本帖最后由 夜泉 于 2018-12-12 21:41 编辑

坛里有好多谷歌翻译的软件,其所带的tk值和api接口公布下,如有需要的可以参考和使用!TKK值一般在https://translate.google.cn/ 网页里面有:


将上面的复制到这里来 https://tool.lu/js/ 解密



解密后:



然后你很容易的就算出了TKK值为:422392.71207223   (别问我怎么知道的{:1_926:})


注意:TKK值应该可以保持不变(我也不确定可以多久)


translate.google.cn 网站上tk值算法如下(整理过):
// a:你要翻译的内容
// uq:tkk的值
function vq(a,uq='422388.3876711001') {
    if (null !== uq)
      var b = uq;
    else {
      b = sq('T');
      var c = sq('K');
      b = ;
      b = (uq = window || "") || ""
    }
    var d = sq('t');
    c = sq('k');
    d = ;
    c = "&" + d.join("") + "=";
    d = b.split(".");
    b = Number(d) || 0;
    for (var e = [], f = 0, g = 0; g < a.length; g++) {
      var l = a.charCodeAt(g);
      128 > l ? e = l : (2048 > l ? e = l >> 6 | 192 : (55296 == (l & 64512) && g + 1 < a.length && 56320 == (a.charCodeAt(g + 1) & 64512) ? (l = 65536 + ((l & 1023) << 10) + (a.charCodeAt(++g) & 1023),
      e = l >> 18 | 240,
      e = l >> 12 & 63 | 128) : e = l >> 12 | 224,
      e = l >> 6 & 63 | 128),
      e = l & 63 | 128)
    }
    a = b;
    for (f = 0; f < e.length; f++)
      a += e,
      a = tq(a, "+-a^+6");
    a = tq(a, "+-3^+b+-f");
    a ^= Number(d) || 0;
    0 > a && (a = (a & 2147483647) + 2147483648);
    a %= 1000000;
    return c + (a.toString() + "." + (a ^ b))
};

/*--------------------------------------------------------------------------------
参数:a 为你要翻译的原文
其他外部函数:
--------------------------------------------------------------------------------*/
function sq(a) {
    return function() {
      return a
    }
}

function tq(a, b) {
    for (var c = 0; c < b.length - 2; c += 3) {
      var d = b.charAt(c + 2);
      d = "a" <= d ? d.charCodeAt(0) - 87 : Number(d);
      d = "+" == b.charAt(c + 1) ? a >>> d : a << d;
      a = "+" == b.charAt(c) ? a + d & 4294967295 : a ^ d
    }
    return a
}

/*--------------------------------------------------------------------------------
运行:
--------------------------------------------------------------------------------*/
window.TTK='422388.3876711001';
var tk = vq("我是傻逼");
console.log(tk);

这段代码提取的是ranslate.google.cn的算法,可以说是母版了,从该版本衍生出了C#、Java、NodeJs(废话)、PHP版本的对应算法出来,然后放在自己的程序里面。

翻译接口:
POST //translate.google.cn/translate_a/t?client=webapp&sl=en&tl=zh-CN&hl=en&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&pc=1&otf=1&ssel=0&tsel=0&kc=1&tk=你tk的值
post 参数:
q=要翻译的文字

注意:&sl=en为你要翻译的语言,tl=zh-CN 为翻译后的语言,这里是英文翻译为中文
请求头:
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Host: translate.google.cn

语音接口:
https: //translate.google.cn/translate_tts?ie=UTF-8&client=t&prev=input&q=要语音的文字&tl=en&total=1&idx=0&textlen=4&tk=你tk的值
注意:&sl=en为你要求用什么语言来读,这里是用英语读
请求头:
Host: translate.google.cn

附件为tk算法母版衍生出来的其他语言版本:





2018年12月12日:最近谷歌翻译好像更新了,其实并没有,主要还是ttk位置变了下(还是原来地方),tk的算法还是可用的...

l99650 发表于 2018-3-10 11:32

本帖最后由 l99650 于 2018-3-10 11:40 编辑

@夜泉
http://translate.google.cn/translate_a/single?client=gtx&dt=t&ie=UTF-8&oe=UTF-8&sl=auto&tl=en&q=惊喜 这个没有编码 不对

http://translate.google.cn/translate_a/single?client=gtx&dt=t&ie=UTF-8&oe=UTF-8&sl=auto&tl=en&q=%E6%83%8A%E5%96%9C
编码后打开就正常

breezedancer 发表于 2018-3-10 09:28

//translate.google.cn/translate_a/t?client=webapp&sl=en&tl=zh-CN&hl=en&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&pc=1&otf=1&ssel=0&tsel=0&kc=1&tk=你tk的值
这里 dt 参数这么多,什么意思

wsr 发表于 2018-3-10 01:49

谢谢分享,收藏了

one486 发表于 2018-3-10 04:17

barry324 发表于 2018-3-10 08:10

感谢分享 这个很有帮助,{:1_893:}{:1_893:}

wuyy 发表于 2018-3-10 08:59

感谢分享 这个很有帮助

asdwes 发表于 2018-3-10 09:15

一眼看过去 只看到了 "我是傻逼"

z178669000 发表于 2018-3-10 09:20

感谢,需要这个

kk1212 发表于 2018-3-10 09:23

不错谷歌开源是好事

kk1212 发表于 2018-3-10 09:25

楼主用这个方法搞出来让我感到了惊喜
页: [1] 2 3 4 5
查看完整版本: 谷歌翻译(Google Translate) TKK值,tk值算法,api接口公布