大家都知道,以前谷歌翻译是开放免费API的,对于我们工程中即时翻译用的很方便,可是后来谷歌收费了,5555 各种不方便啊
遂 ,决定自己做个采集翻译的小工具,方便自己,也能方便大家。当然,网上的哪些所谓的方法工具都已经失效了。
先来梳理一下谷歌翻译的流程, 用抓包工具走了一遍,发现内容提交是GET方式,qurestring , 还伴有cookie,于是从抓包工具中提取GET..... HTTP/1.1 (GET /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=0&tk=494883.112282&q=%E5%A6%82%E6%9E%9C HTTP/1.1)提取cookie
(_ga=GA1.3.1165698298.1450741032; NID=83=Q01ASZSQufLFnKHIdshHP5NRfGho82XPttcC58jRq0SjWrV-9vxy0sYtzxaQfKtQ2yqyAIfVY_Zmz6elJwfL3EWm-rM3JwyNMAcEiuJKkAh_Qo8cOvQxYEH7F3pYwCfV)
用fsockopen模拟浏览器试了一下,哎呦不错,直接就得到翻译的内容了,json形式的。心里一阵暗喜,居然这么简单(为啥网上还有好多人说搞不定呢)。
接着测试,继续用其他中文,哎呀,居然403错误,google不给翻译了。
仔细研究了下,发现链接中 tk 值很特殊,不知道怎么来的。然后查看了谷歌翻译的源文件,看到了一串js代码TKK=eval('((function(){var a\x3d1246737830;var b\x3d1020198760;return 408411+\x27.\x27+(a+b)})())'); 这串代码产生的值与tk有点像,但又不全像,显然这个TKK字符串还要经过运算。于是查看了一下谷歌翻译的JS文件,找到了相关的函数,还挺复杂的,这个TKK值还要与待翻译的文字一起运算才能得到 tk 值, 也就是说 tk 值 既与TKK有关也与 待翻译文字有关。而且 发现不需要cookie 。
google了一下,发现国外有牛人提取并简化 了 tk的运算函数。
- var TKK = ((function() {
- var a = 561666268;
- var b = 1526272306;
- return 406398 + '.' + (a + b);
- })());
- function b(a, b) {
- for (var d = 0; d < b.length - 2; d += 3) {
- var c = b.charAt(d + 2),
- c = "a" <= c ? c.charCodeAt(0) - 87 : Number(c),
- c = "+" == b.charAt(d + 1) ? a >>> c : a << c;
- a = "+" == b.charAt(d) ? a + c & 4294967295 : a ^ c
- }
- return a
- }
- function tk(a) {
- for (var e = TKK.split("."), h = Number(e[0]) || 0, g = [], d = 0, f = 0; f < a.length; f++) {
- var c = a.charCodeAt(f);
- 128 > c ? g[d++] = c : (2048 > c ? g[d++] = c >> 6 | 192 : (55296 == (c & 64512) && f + 1 < a.length && 56320 == (a.charCodeAt(f + 1) & 64512) ? (c = 65536 + ((c & 1023) << 10) + (a.charCodeAt(++f) & 1023), g[d++] = c >> 18 | 240, g[d++] = c >> 12 & 63 | 128) : g[d++] = c >> 12 | 224, g[d++] = c >> 6 & 63 | 128), g[d++] = c & 63 | 128)
- }
- a = h;
- for (d = 0; d < g.length; d++) a += g[d], a = b(a, "+-a^+6");
- a = b(a, "+-3^+b+-f");
- a ^= Number(e[1]) || 0;
- 0 > a && (a = (a & 2147483647) + 2147483648);
- a %= 1E6;
- return a.toString() + "." + (a ^ h)
- }
经过测试,确实有用,能够正确算出tk 值, 只是这位仁兄直接用了固定的TKK值,而在实际中TKK是随机变的。
所以正确的流程是:
1.) get谷歌,获得TKK
2.) 算出 tk
3.) 采集翻译
我做了个demo,是JavaScript版本的,下载地址:http://pan.baidu.com/s/1dEGVoNv 提取码a4bq ; 下载地址:http://download.csdn.NET/detail/life169/9598373
其实还有个PHP版的,有为高手做了个在线实例 http://www.liuxiatool.com/t.php
文章来源:http://blog.csdn.net/life169/article/details/52153929
相关推荐
谷歌翻译API jar包是一款小巧而实用的工具,它允许开发者在自己的Java应用程序中集成谷歌的在线翻译功能。这款jar包简化了与谷歌翻译服务的交互,使得开发者无需深入理解复杂的API文档,也能轻松实现文本的多语言...
Java 破解谷歌翻译api,可以实现程序自动化翻译文章; 原理:查看谷歌翻译网站,输入需要翻译的文字,选择语言得到翻译后的文字,发送异步请求参数返回结果。java使用httpclient发送请求,实现使用代码翻译文章的...
谷歌翻译版的JDK 1.8 API中文文档则是为了方便中国开发者阅读,将原本英文的API说明翻译成了中文,使得理解更为便捷。 在Java 1.8版本中,有许多重要的知识点和更新,包括: 1. **Lambda表达式**:这是Java 8的一...
谷歌翻译API是谷歌提供的一项强大的在线翻译服务,它允许开发者在他们的应用或系统中集成自动翻译功能。然而,商业使用谷歌翻译API通常需要付费,这可能会对一些个人开发者或者小型项目造成经济负担。针对这种情况,...
GoogleFreeTrans:免费的谷歌翻译API(免费google翻译api)
1. **概述**:谷歌翻译版Java API是一种基于Java编程语言开发的应用程序接口,它允许开发者轻松地集成谷歌翻译的功能到自己的应用程序中。通过这个API,用户可以实现文本翻译、语音识别等多种功能。 2. **特点**: ...
通过这样的方式,用户无需离开火车头的主界面就能享受到谷歌翻译的服务,使得在数据采集和分析过程中遇到的语言障碍得以解决。 【主要功能】: 1. 实时翻译:在火车头抓取网页内容时,自动对抓取到的文本进行翻译,...
PHP在线翻译类(基于谷歌翻译API开发)是一个基于谷歌Translate开发的翻译类,可以帮助PHP程序员实现多国文字的翻译。 PHP在线翻译类使用到了谷歌的AJAX Translate API和Snoopy类,以模拟HTTP请求的方式实现数据的...
《易语言 必应、有道、谷歌 翻译API接口应用》 在IT行业中,翻译API接口的使用越来越普遍,特别是在开发多语言软件或网页时,它们为开发者提供了便捷的语言转换功能。本篇文章将深入探讨易语言如何利用必应、有道和...
谷歌翻译API
php-google-translate-free, PHP类用于免费使用谷歌翻译 API PHP GoogleTranslate免费 简单的PHP库,用于免费地翻译谷歌 API 。安装通过 Composer 安装这个软件包。composer require statickidz/php-google-tran
jdk9中文谷歌翻译的api,最新出炉,离线使用没有广告的.
谷歌翻译API是付费服务,但有免费的额度。首先,你需要在Google Cloud Console上创建一个项目,并启用谷歌翻译API。接着,生成一个API密钥,这将用于验证你的应用对API的请求。 2. **选择库或API客户端**: 虽然...
PHP对接百度翻译接口API 实现多国语言翻译
要注意的是,谷歌翻译API是有付费限制的,免费额度有限,超出后需要购买更多的信用。此外,频繁的调用可能会触发谷歌的反爬策略,因此在实际应用中,应合理设计调用频率,并考虑使用缓存策略来减少不必要的请求。 ...
这个项目不依赖于JavaScript算法,而是利用TKK(Translation Key)进行计算,从而实现对谷歌翻译API的有效调用。让我们逐一解析这个主题的关键知识点。 首先,我们要了解谷歌翻译API的工作原理。谷歌翻译API提供了...
**JDK1.8 API 中文谷歌翻译版**是一份专为那些在编程过程中遇到英文障碍的程序员设计的重要参考资料。这个资源将Java Development Kit (JDK) 1.8版本的API文档进行了中文翻译,使得开发者能够更方便地理解和使用JDK...
谷歌翻译-api A Node.js module for working with the Google Translation. Automatically handles bulk translations that exceed the Google Translation API query limit. 这是一款基于nodejs的谷歌翻译插件,...