前言

google翻译没有现成的接口, 而大部分别人写的调用google接口都是用python, 于是我把python的改成js.

分析

google翻译接口是get请求, 对cookie没什么要求. 唯一的难点就是tkk(token key)和tk(token). 谷歌会给我们一个tkk, 我们需要用tkk和需要翻译的字符来调用google的解密函数获取tk, 再携带该tk去请求.

整个过程是非常清晰简单的, 而且网上大神已经把解密函数贴出来了, 我们只需要拿来用就OK.

实现

  1. 获取tkk

    async updateTkk(){ const url = 'https://translate.google.cn' const res = await axios({ method:'GET', url, headers:GoogleTranslater.headers }) const re = /tkk:'([0-9]+.[0-9]+)'/ const reRes = re.exec(res['data']) if(!reRes){ throw new Error('tkk更新失败!') } this.tkk = reRes[1] return reRes[1] }

  2. 构建请求url

    _constructUrl(){ let url = GoogleTranslater.baseUrl+ '?' for(let key in GoogleTranslater.queryStrObj){ if(typeof(GoogleTranslater.queryStrObj[key]) === 'object'){ url = url + "dt=" + GoogleTranslater.queryStrObj[key].join('&dt=') + "&" continue } url = url + ${key}=${GoogleTranslater.queryStrObj[key]}& } return url }

  3. 调用解密函数根据tkk和翻译字符获取tk

  4. 构建请求,调用翻译api接口

    async traslate(q,langTo=langToEumn.ENGLISH){ // await this.updateTkk() GoogleTranslater.queryStrObj['q'] = encodeURI(q) GoogleTranslater.queryStrObj['tk'] = getTk(q,this.tkk) GoogleTranslater.queryStrObj['tl'] = langTo const url = this._constructUrl() const res = await axios({ method:'GET', headers:GoogleTranslater.headers, url, }) let translation = '' for(let sentence of res['data'][0]){ if(!sentence[0]){ continue } translation = translation + sentence[0] } return translation }

结尾

根据以上几个步骤就能完成google翻译接口的调用, 完整代码请点击我下载

THE END
开启精彩搜索

历史搜索

用户名或邮箱
密码
用户名
密码
重复密码
邮箱
注册
找回密码
注册 登录
邮箱
邮箱验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

新增

新增