cocoa520 / Google_TK

Google翻译TK参数生成
76 stars 29 forks source link

发现最近生成tk规则变了? #2

Open avcode8 opened 7 years ago

avcode8 commented 7 years ago

代码 撩剧呗 https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&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&source=btn&ssel=3&tsel=3&kc=1&tk=959104.562932&q=%E6%92%A9%E5%89%A7%E5%91%97

浏览器 https://translate.google.cn/translate_a/single?client=t&sl=zh-CN&tl=en&hl=zh-CN&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=3&tsel=3&kc=1&tk=400080.17000&q=%E6%92%A9%E5%89%A7%E5%91%97

dickwxyz commented 4 years ago

我搜索a^b,发现tk的生成函数在translate_m.js文件中,以后变化的话你可以找到。tk生成函数如下:

var ou=function(a){return function(){return a}},
pu=function(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},

qu=null,

ru=function(a)
{if(null!==qu)var b=qu;else{b=ou(String.fromCharCode(84));
                            var c=ou(String.fromCharCode(75));
                            b=[b(),b()];b[1]=c();
                            b=("")||""}
 var d=ou(String.fromCharCode(116));
 c=ou(String.fromCharCode(107));
 d=[d(),d()];
 d[1]=c();
 c="&"+d.join("")+"=";
 d=b.split(".");
 b=Number(d[0])||0;

 for(var e=[],f=0,g=0;g<a.length;g++)
 {var h=a.charCodeAt(g);
  128>h?e[f++]=h:(2048>h?e[f++]=h>>6|192:(55296==(h&64512)&&g+1<a.length&&56320==(a.charCodeAt(g+1)&64512)?(h=65536+((h&1023)<<10)+(a.charCodeAt(++g)&1023),
    e[f++]=h>>18|240,
    e[f++]=h>>12&63|128):e[f++]=h>>12|224,
    e[f++]=h>>6&63|128),
    e[f++]=h&63|128)}

 a=b;
 for(f=0;f<e.length;f++)a+=e[f],
 a=pu(a,"+-a^+6");
 a=pu(a,"+-3^+b+-f");
 a^=Number(d[1])||0;0>a&&(a=(a&2147483647)+2147483648);
 a%=1E6;
 return c+(a.toString()+"."+(a^b))};

参考python 爬虫获取谷歌翻译结果 ,英译中亲测可用:

url = """http://translate.google.cn/translate_a/single?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=sos&dt=ss&dt=t&source=bh&ssel=0&tsel=0&kc=1&tk="""+\
tk +'&q='+urllib.parse.quote(text1)