免费调用谷歌翻译

最近公司有需求,需要调用谷歌翻译的接口。虽然我最后可以勉强实现了翻译的功能,但还是把这个方法记录下来供各位参考。

首先声明,我这种实现方法只能翻译少量的内容,如果同时翻译太多就会报异常。

1.找到谷歌翻译,通过f12查看谷歌翻译的时候调用的接口:https://translate.google.cn/translate_a/single?client=t&sl=auto&tl=en&hl=zhCN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF8&oe=UTF8&ssel=0&tsel=3&kc=0&tk=80338.476099&q=%E4%BB%96%E4%BB%AC%E8%BF%99%E6%A0%B7%E8%AF%B4

解析开来就是:client=t、sl=auto、tl=toLanguage、hl=fromLanguage、da=at、dt=bd、dt=ex、dt=ld、dt=gca、dt=rw、dt=rm、dt=ss、dt=t、ie=UTF8、oe=UTF8、ssel=0、tsel=3、kc=0、tk=(需要经过js文件的计算)、q=(需要翻译的文字)

这么多参数中只有tk参数最麻烦,需要使用经过js文件的计算得到,js文件我会在文章最后面分享。

2.使用jsoup模拟浏览器发送请求,接收到返回信息并解析返回信息,得到翻译的结果。


public static String TranslateGoogleString(String transalteContente,String fromLanguage,String toLanguage){
		StringBuilder url=new StringBuilder();
		url.append("https://translate.google.cn/translate_a/single?").append("client=t&sl=").append(fromLanguage)
		.append("&tl=").append(toLanguage).append("&hl=zh-CN").append("&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw")
		.append("&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&otf=2&ssel=0&tsel=0&kc=1&tk=").append(token(transalteContente)).append("&q=")
		.append(transalteContente);
		System.out.println(url);
		//获取请求连接
        Connection con = Jsoup.connect(url.toString());
        //请求头设置,特别是cookie设置(这些参数在f12都可以kanda)
        con.header("Accept", "*/*"); 
        con.header("Content-Type", "application/json; charset=UTF-8");
        con.header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"); 
        con.header("Cookie", "");
        //解析请求结果
        Document doc;
		try {
			doc = con.ignoreContentType(true).get();
			String result = doc.body().text().split(",")[0].replace("[[[", "").replace("\"", "");
			
			 //获取翻译后的内容
	        System.out.println(result);
	        //返回内容
	        return Base64.encodeBase64String(result.getBytes());
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
       return null;
	}
 private static String token(String text) {//获取tk参数的值
	        String tk = "";
	        ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
	        try {
	        	 FileReader reader = new FileReader(ConfigUtil.getString("GoogleJs"));
	           /* FileReader reader = new FileReader("E:/codes/java2/psmedia-btcnews/src/main/webapp/gmphtml/js/Google.js");*/
	            engine.eval(reader);

	            if (engine instanceof Invocable) {
	                Invocable invoke = (Invocable)engine;
	                tk = String.valueOf(invoke.invokeFunction("token", text));
	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
	        return tk;
	    }
Google.js文件分享:链接:https://pan.baidu.com/s/13HCY0T3BvI9zwQNEzyq0Yw 密码:pow2



猜你喜欢

转载自blog.csdn.net/qq_38379632/article/details/80562863