大家都知道,以前谷歌翻译是开放免费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

谷歌翻译API, 免费采集翻译相关推荐

  1. 利用有道翻译Api实现英文翻译功能

    有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果.       通过调用有道翻译API数据接口,您可以在您的网站或应用中更灵活地定制翻译和查词功能. 第一步: ...

  2. 【新手】基于C++Qt5通过调用百度翻译API制作简易翻译工具

    基于C++Qt5通过调用百度翻译API制作简易翻译工具 目录 基于C++Qt5通过调用百度翻译API制作简易翻译工具 写在前面 步骤: 1.注册百度翻译开放平台账号并开通翻译服务 2.下载安装Qt5和 ...

  3. php英文翻译,利用有道翻译Api实现英文翻译效能

    利用有道翻译Api实现英文翻译功能 有道翻译提供了翻译和查词的数据接口.通过数据接口,您可以获得一段文本的翻译结果或者查词结果.       通过调用有道翻译API数据接口,您可以在您的网站或应用中更 ...

  4. 谷歌地球API相关网页翻译

    http://serc.carleton.edu/sp/library/google_earth/google_earth_api.html Google Earth API 谷歌地球api The ...

  5. 一个Qt调用百度翻译API进行文本翻译的程序记录,辅助ts文件进行翻译。

    项目要求有多国语言翻译,但是手动的去复制粘贴翻译显然不是合理的,组里有人写过类似工具,但是我这里没有源码,又想根据我的需求定制一些功能,所以借鉴现有的界面,如下图 下面先搞定核心功能:百度翻译api的 ...

  6. 【Unity】百度翻译API接口实时翻译功能

    原文:https://www.cnblogs.com/vaevvaev/p/9037076.html 使用到Newtonsoft.Json和UnityEngine(若非Unity,相关接口是原文的Ht ...

  7. php免费翻译接口,免费的翻译接口用不起不要太爽啊!

    ❝ 本文给大家提供一个免费的翻译接口,有空时可以试试还是很秀的哈! ❞ 前言 项目中必要的数据是需要写语言包的,就像那种几百年不变的数据,但是有一类数据就是在项目的运行的过程中就在一直变化. 对于这样 ...

  8. 机器翻译:使用小牛翻译API进行中英文翻译实战

    小牛翻译开放平台是2018年工信部106个"国家人工智能与实体经济深度融合创新项目"之一.平台于2018年正式上线,采用最新的神经网络机器翻译技术自主研发,是一个以"机器 ...

  9. 百度翻译API —— 通用文本翻译

    目录 接入方式 通用翻译API HTTPS 地址: 请求方式 返回结果 返回结果举例 正确情况: 异常情况: 错误码解析 请求翻译方法 语种列表 常见语种列表 完整语种列表 完整源码 接入方式 通用翻 ...

  10. Android开发——手把手写APP(三)调用有道词典翻译API实现的翻译APP(详细备注解读)

    运行效果图 有道翻译的API http://fanyi.youdao.com/openapi.do?keyfrom=lewe518&key=70654389&type=data& ...

最新文章

  1. Python3学习笔记----环境安装及文本编辑器的选择
  2. 向代码节添加代码编程实现
  3. PAT1005 继续(3n+1)猜想 (25 分)【vector erase需要注意的地方】
  4. 第三次学JAVA再学不好就吃翔(part78)--List类
  5. 【Linux/Ubuntu学习6】unbuntu 下载android源码
  6. Vmware vSphere 十个疑难问题解决方法
  7. hadoop ubantu环境搭建_Ubuntu16.04 下 hadoop的安装与配置(伪分布式环境)
  8. apache字体文件跨域_在CabloyJS中将Webpack生成的文件自动上传到阿里云OSS
  9. IFC最新标准 IFC4X3 RC2 和 IFC4X3 RC4 特点
  10. SOLIDWORKS之VBA宏(三)
  11. Vite入门从手写一个乞丐版的Vite开始(下)
  12. 学习vue之前应该有哪些基础知识
  13. 从单目视觉信息学习深度信息(一)
  14. Vue CLI 预设Presets
  15. InterviewQuestion
  16. WPS画报的电脑壁纸怎么下载
  17. nginx匹配多个路径转发到同一个地址写法
  18. NRC词语情绪词典和词语色彩词典
  19. InnoDB原理篇:聊聊数据页变成索引这件事
  20. 【转载】SAP字段与表的对应关系

热门文章

  1. 集体智慧编程-源代码
  2. Android Studio开发
  3. Python实现贷款用户的信用评分卡
  4. GD32 程序烧录所遇到的问题
  5. 概率论——超几何随机变量
  6. 数据库学生管理系统课程设计
  7. oracle mysql odbc驱动程序_oracle odbc驱动下载
  8. 最全java面试题及答案(208道)
  9. Tesseract-OCR 字体库下载地址
  10. 华为游戏帧率测试的软件,华为手机怎么在游戏内显示帧率 | 手游网游页游攻略大全...