谷歌翻译 API 调用

调试接口

由于时常使用 谷歌翻译,就想着把接口做成服务调用,省去登陆网页的麻烦。

需要更好的服务可以使用谷歌云服务 https://cloud.google.com/translate ,每月可获赠价值不超过 $10 的免费用量

用开发者工具调试页面接口拿到了翻译调用的接口

https://translate.google.com/translate_a/single?client=webapp&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=sos&dt=ss&dt=t&otf=1&ssel=5&tsel=5&xid=1791807%2C45625687%2C45626150&kc=11&tk=718445.806187&q=%E4%BD%A0%E5%A5%BD

但是在调试发现,接口中带了个签名参数 tk,通过查找 js 源文件,在 translate_m_zh-CN.js 这里发现了相关痕迹,但是解析起来太费劲了。。。

调用模块

这个时候检索的能力就体验出来了,通过在 Google 里的一顿操作,得知 Node 里有相关使用库,它将 tk 的获取函数提取出来了。

通过 npm install --save google-translate-api 安装模块到本地,修改源代码。

  • google-translate-apigoogle-translate-token 下的 index.js 里的 translate.google.com 替换为 translate.google.cn

  • 修改 google-translate-api/index.js 中请求参数 data 的数据 client: 'gtx'

使用

修改完成后便在国内也能调用。

const translate = require('google-translate-api');
 
translate('您好', {to: 'en'}).then(res => {
    console.log(res.text);
}).catch(err => {
    console.error(err);
});

Python 中使用可以这样方式调用 node

import os

p = os.popen('node translate.js %s' % value)
print(p.readlines()[0])

参考: https://www.zhihu.com/question/47239748