Java 破解谷歌翻译 免费 api 调用
来源:互联网 发布:flash 素材源码 编辑:程序博客网 时间:2024/05/29 18:32
在公司大佬的指点下, 写了个破解谷歌翻译的工具类,能破解谷歌翻译, 思路如下:
1 获取 tkk
2 根据 tkk,和 输入内容 获取 tk
3 根据 word,tk ,组装 url 访问 谷歌翻译 api
调用如下:
public static void main(String[] args) { /*GoogleApi googleApi = new GoogleApi();*/ GoogleApi googleApi = new GoogleApi("122.224.227.202", 3128); String result = googleApi.translate("Many applications within the enterprise domain ", "", "zh"); System.out.println(result); }
输出:
企业领域内的许多应用程序
代码如下
package org.trans;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;import java.net.URLEncoder;import javax.script.Invocable;import javax.script.ScriptEngine;import javax.script.ScriptEngineManager;import org.apache.commons.lang3.StringUtils;import com.alibaba.fastjson.JSONArray;public class GoogleApi { private static final String PATH = "/gettk.js"; static ScriptEngine engine = null; private Browser browser = null; static{ ScriptEngineManager maneger = new ScriptEngineManager(); engine = maneger.getEngineByName("javascript"); FileInputStream fileInputStream = null; Reader scriptReader = null; try{ scriptReader = new InputStreamReader(GoogleApi.class.getResourceAsStream(PATH), "utf-8"); engine.eval(scriptReader); }catch(Exception e){ e.printStackTrace(); }finally{ if(fileInputStream != null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if(scriptReader != null){ try { scriptReader.close(); } catch (IOException e) { e.printStackTrace(); } } } } public GoogleApi(){ this.browser = new Browser(); } public GoogleApi(String ip, Integer port){ this.browser = new Browser(); this.browser.setProxy(ip, port); } public String getTKK(){ browser.setUrl("https://translate.google.cn/"); try{ String result = browser.executeGet(); if(StringUtils.isNotBlank(result)){ if(result.indexOf("TKK") > -1){ String tkk = result.split("TKK")[1]; tkk = tkk.split("\\)\\;")[0]; tkk = tkk + ");"; tkk = tkk.substring(1, tkk.length()); ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("javascript"); return (String) engine.eval(tkk); } } }catch(Exception e){ e.printStackTrace(); } return null; } public static String getTK(String word, String tkk){ String result = null; try{ if (engine instanceof Invocable){ Invocable invocable = (Invocable) engine; result = (String) invocable.invokeFunction("tk", new Object[]{word, tkk}); } }catch(Exception e){ e.printStackTrace(); } return result; } public String translate(String word, String from, String to){ if(StringUtils.isBlank(word)){ return null; } String _tkk = getTKK(); if(StringUtils.isBlank(_tkk)){ return null; } String _tk = getTK(word, _tkk); try{ word = URLEncoder.encode(word, "UTF-8"); }catch(Exception e){ e.printStackTrace(); } StringBuffer buffer = new StringBuffer("https://translate.google.cn/translate_a/single?client=t"); buffer.append("&sl=" + from); buffer.append("&tl=" + to); buffer.append("&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&kc=0"); buffer.append("&tk=" + _tk); buffer.append("&q=" + word); browser.setUrl(buffer.toString()); try{ String result = browser.executeGet(); JSONArray array = (JSONArray) JSONArray.parse(result); JSONArray r_array = array.getJSONArray(0); StringBuffer r_buffer = new StringBuffer(); for(int i = 0; i < r_array.size(); i++){ String _r = r_array.getJSONArray(i).getString(0); if(StringUtils.isNotBlank(_r)){ r_buffer.append(_r); } } return r_buffer.toString(); }catch(Exception e){ e.printStackTrace(); return null; } } public static void main(String[] args) { /*GoogleApi googleApi = new GoogleApi();*/ GoogleApi googleApi = new GoogleApi("122.224.227.202", 3128); String result = googleApi.translate("Many applications within the enterprise domain ", "", "zh"); System.out.println(result); }}
需要的js
var b = function (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}var tk = function (a,TKK) { //console.log(a,TKK); 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)}
jar 包下载:
http://download.csdn.net/download/qq_35704236/10156433
jar 包调用
public static void main(String[] args) { /*GoogleApi googleApi = new GoogleApi();*/ GoogleApi googleApi = new GoogleApi("122.224.227.202", 3128); String result = googleApi.translate("Test", "", "zh"); System.out.println(result); }
jar 包输出
测试
写在最后:
但是 封ip 的速度太快了, 各位如果需要用于生产环境,必须加上ip 代理,如果实在不行。。。就换百度吧。。。虽然有字数限制。。
阅读全文
0 0
- Java 破解谷歌翻译 免费 api 调用
- 谷歌翻译API, 免费采集翻译
- 最新破解谷歌翻译api
- Java 调用 有道翻译API
- Python 免费翻译API
- bing翻译API调用(java版本)
- 教你找到免费的Google Translate API(谷歌翻译接口)+C#版的Google翻译函数
- 【教程】教你找到免费的Google Translate API(谷歌翻译接口)+C#版的Google翻译函数
- 谷歌翻译API
- 谷歌翻译API
- 调用百度翻译API
- JAVA的免费天气API接口调用示例
- 如何调用有道翻译API(Java,HTTP)
- Java调用有道翻译API包括APPID/密钥地址注册
- 百度翻译API的调用
- WINFORM调用百度翻译API
- 谷歌翻译破解版(教程)
- ArcSDE Java API 翻译
- JVM 参数配置及详解 -Xms -Xmx -Xmn -Xss 调优总结
- Linux--问题积累
- 六兆年と一夜物語 jzoj3501 最短路
- 台湾大学深度学习课程 学习笔记 lecture1-1 Introduction
- 阿里云服务器ECS Ubuntu16.04-64-bit学习之一:配置桌面
- Java 破解谷歌翻译 免费 api 调用
- Java MongoDB 插入
- java高级特性:实用类
- java中判断Object对象类型
- Java MongoDB 更新
- Spring框架总结
- python 文件读写时用open还是codecs.open
- 高数 07.10 多元函数微分学习题02A
- JVM调优之 -Xms -Xmx -Xmn -Xss