有道翻译接口 破解

有道翻译 API

最近有些任务需要将中文翻译成英文,由于个人英文水平问题,每次都要打开好几个在线翻译网页,一句一句的丢进去,取最佳者为所用,甚是麻烦。
任务完成之后,就稍微研究了一下各个翻译接口(Github地址,求star),下面以 “有道翻译 API” 为例。

有道翻译官网提供了 API 接口,需要注册并付费才能使用,按照格式进行请求(JAVA DEMO),其中有一些参数:
API 参数介绍
注意 slat 和 sign 参数。从 JAVA DEMO 中可知,slat 随机数是通过获取系统时间得到的,而 sign 签名则是通过某个字符串的 md5 算法得到的,官网提供的 md5 算法代码如下:

/*** 生成32位MD5摘要* @param string* @return*/public static String md5(String string) {if(string == null){return null;}char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9','A', 'B', 'C', 'D', 'E', 'F'};byte[] btInput = string.getBytes();try{/** 获得MD5摘要算法的 MessageDigest 对象 */MessageDigest mdInst = MessageDigest.getInstance("MD5");/** 使用指定的字节更新摘要 */mdInst.update(btInput);/** 获得密文 */byte[] md = mdInst.digest();/** 把密文转换成十六进制的字符串形式 */int j = md.length;char str[] = new char[j * 2];int k = 0;for (byte byte0 : md) {str[k++] = hexDigits[byte0 >>> 4 & 0xf];str[k++] = hexDigits[byte0 & 0xf];}return new String(str);}catch(NoSuchAlgorithmException e){return null;}}

本来按照上述操作就可以很顺利的利用 API 进行开发,关键是要收费啊,还是按字符数收费。接下来就开始了破解之路,实现 无需注册就可以使用 有道翻译 接口……

有道翻译 破解

用Chrome打开有道翻译首页,按F12键,在翻译框内输入一句话,点击翻译。
审查元素
可以看到有道翻译的 Request URL 和 Request Method,在往下看:
审查元素
从 From Data 中可以查看到许多参数。经过多次实验,发现发生改变的只有 i,salt 和 sign 三个参数值。其中 i 是要翻译的内容,salt 和 sign 的来历和作用前面已经介绍了。但在 API 中 sign 参数是带了 appKey(注册,后台生成) 的,我们没有这个。那么就需要研究一下如何生成 sign 的了。
在众多请求中,发现一段 js 代码,如下:
这里写图片描述
将这段代码格式化一下,搜索关键词 sign,如下:
这里写图片描述
通过上述的 js 代码可知,salt 参数是通过系统时间,加上一个 [1, 10] 的随机数得到的, sign = md5(固定字符串 + 待翻译内容 + salt + 固定字符串) 得到的。这样我们就可以通过代码进行请求了,代码如下:

public class YouDao {public static void main(String[] args) throws Exception {String from = "en";String to = "zh-CHS";String q = "Who am I? Where am I?";String url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule";String u = "fanyideskweb";String d = q;long ctime = System.currentTimeMillis();String f = String.valueOf(ctime + (long)(Math.random() * 10 + 1));String c = "ebSeFb%=XZ%T[KZ)c(sy!";String sign = util.md5(u + d + f + c);Map<String, String> params = new HashMap<String, String>();params.put("i", q);params.put("from", from);params.put("to", to);params.put("smartresult", "dict");params.put("client", "fanyideskweb");params.put("salt", f);params.put("sign", sign);params.put("doctype", "json");params.put("version", "2.1");params.put("keyfrom", "fanyi.web");params.put("action", "FY_BY_CLICKBUTTION");params.put("typoResult", "false");CloseableHttpClient httpClient = HttpClients.createDefault();HttpPost request = new HttpPost(util.getUrlWithQueryString(url, params));//        request.setHeader("Accept","application/json, text/javascript, */*; q=0.01");
//        request.setHeader("Accept-Encoding","gzip, deflate");
//        request.setHeader("Accept-Language","zh-CN,zh;q=0.9");
//        request.setHeader("Connection","keep-alive");
//        request.setHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");request.setHeader("Cookie","OUTFOX_SEARCH_USER_ID_NCOO=1537643834.9570553; OUTFOX_SEARCH_USER_ID=1799185238@10.169.0.83; fanyi-ad-id=43155; fanyi-ad-closed=1; JSESSIONID=aaaBwRanNsqoobhgvaHmw; _ntes_nnid=07e771bc10603d984c2dc8045a293d30,1525267244050; ___rl__test__cookies=" + String.valueOf(ctime));
//        request.setHeader("Host","fanyi.youdao.com");
//        request.setHeader("Origin","http://fanyi.youdao.com");request.setHeader("Referer","http://fanyi.youdao.com/");request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36");
//        request.setHeader("X-Requested-With","XMLHttpRequest");CloseableHttpResponse httpResponse = httpClient.execute(request);HttpEntity httpEntity = httpResponse.getEntity();String result = EntityUtils.toString(httpEntity, "UTF-8");EntityUtils.consume(httpEntity);    // 关闭httpResponse.close();String res[] = result.split("\"");StringBuilder resd = new StringBuilder();for (int i = 0; i < res.length; i++) {if (res[i].equals("tgt")) {resd.append(res[i + 2]);}}System.out.println(resd.toString());}

其中,md5() 和 getUrlWithQueryString() 可以利用 JAVA DEMO 提供的方法。

注意:对”http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule“发起请求时,需要设置cookie,否则会出现errorCode。在不设置 cookie 时,只能请求 “http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule“。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/57754.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对接有道翻译api中英翻译软件

中译英翻译软件对接了有道翻译API的翻译数据接口&#xff0c;通过数据接口&#xff0c;我们可以获得文本的批量翻译并对我们的译后文本进行内容自动编辑&#xff0c;通过调用有道翻译API数据接口&#xff0c;我们可以在我们的中译英翻译软件中更灵活地对我们的文本进行翻译处理…

百度、阿里、腾讯、有道各平台翻译API申请教程

文章目录 文章推荐 vscode插件 var-translate-en 中翻英转驼峰命名百度翻译申请腾讯翻译申请阿里翻译申请有道翻译申请 文章推荐 vscode插件 var-translate-en 中翻英转驼峰命名 快捷 一键转换为英文&#xff0c;并生成多种命名风格支持多平台翻译服务配置&#xff08;谷歌、腾…

塔望 · ​食界​人物|红牛饮料背后的两个企业家

关注行业&#xff0c;更要关注行业发展背后的人。关注企业&#xff0c;更要关注企业的人格化身——“企业家”。人类在任何领域的创新和进步&#xff0c;都离不开企业家精神。优秀的企业家和企业家精神&#xff0c;是经济社会发展的重要推动力。 本期塔望【​食界​人物】将带…

正则表达式爬取红牛分公司数据

正则表达式还是很好玩的,爬取红牛官网分公司信息 import requests import re import pandas as pd response requests.get(url"http://www.redbull.com.cn/about/branch") company re.findall(<h2>(.*?)</h2>, response.text) add re.findall("…

列表表达式爬取红牛分公司数据

列表达式爬取红牛官网分公司信息 import requests import pandas as pd import bs4 response requests.get("http://www.redbull.com.cn/about/branch") main_page bs4.BeautifulSoup(response.text,"html.parser") company [i.text for i in main_pag…

红牛商标所有者泰国天丝集团将投资逾10亿元深化在华布局

全球红牛品牌及“红牛”商标的创始者和所有者 -- 泰国天丝集团宣布&#xff0c;未来三年将对其在华业务进行一系列投资&#xff0c;总额高达10.6亿人民币。具体包括深化在华合作伙伴战略关系、在中国设立新的代表处、组建国内团队、扩建新的生产基地以及推出集团旗下更多新产品…

从红牛案看商业伦理和社会公义中的众生相

一出与生恩、养恩有关的大戏&#xff0c;正在中国商业界上演。 “儿子”是红牛&#xff0c;一方是在养育红牛的华彬集团&#xff0c;一方是生育红牛的泰国天丝&#xff0c;自2016年以来&#xff0c;双方数次诉讼、数次论战&#xff0c;严重冲击了市场秩序的稳定繁荣。 对于生…

java红牛农场答案_Java面向对象程序设计实验指导与习题解答(21世纪高等学校计算机专业实用规划教材)...

导语 《Java面向对象程序设计实验指导与习题解答》是《Java面向对象程序设计》(作者耿祥义,清华大学出版社出版,2010)的配套实验指导和习题解答,目的是通过一系列实验练习使学生巩固所学的知识。本书由16个实验组成,每个实验由6个主要部分构成。本书由耿祥义、张跃平编著。…

红牛开发板模拟器简要说明_V1.0

文档名称 红牛开发板模拟器简要说明_V1.0 版本 1.0 作者 叶帆 日期 2011-2-27 历史 文档列表 http://www.sky-walker.com.cn/MFRelease/YF_document_list.pdf 1、前言 .NET Micro Framwork 除了简单易于开发外&#xff0c;还有一个比较有用的功能&#xff0c;那就是…

zte android截屏快捷键,中兴红牛V5手机怎么截屏 中兴红牛V5截图技巧图解

中兴红牛V5手机截屏怎么截的呢&#xff0c;对于刚开始用智能机的我来说&#xff0c;是一个不小的尝试&#xff0c;包括我刚知道的候一样&#xff0c;下面由本小编教大家怎么使用中兴红牛手机截屏和截图的技巧。操作步骤如下&#xff1a; 红牛V5怎么截屏 中兴红牛V5截图技巧 [中…

我有故事,你有红牛吗?

前言 不经意留意到CSDN官方的活动1024有奖征文|我和CSDN的故事 &#xff0c;CSDN提供了一个帮助自己成长的平台&#xff0c;所以决定写一篇文章真诚的感谢CSDN&#xff0c;当然了我肯定不会为了那小小的奖品而折腰的&#xff0c;不就是个衣服嘛&#xff0c;不就是个会员嘛&…

AutoGPT保姆级使用教程

1. 介绍 Auto-GPT是一个基于ChatGPT的工具&#xff0c;他能帮你自动完成各种任务&#xff0c;比如写代码、写报告、做调研等等。使用它时&#xff0c;你只需要告诉他要扮演的角色和要实现的目标&#xff0c;然后他就会利用ChatGPT和谷歌搜索等工具&#xff0c;不断“思考”如何…

谷歌高级软件工程师的一天

作者 | Dimitris Leventeas 译者 | 弯月 原文链接&#xff1a;https://dimle.wordpress.com/2022/04/24/my-typical-working-day-as-software-engineer/ 本文为 CSDN 翻译&#xff0c;未经授权&#xff0c;禁止转载 我的工作 我有一个文档&#xff0c;专门记录待完成的任…

如何下载一篇文献的所有被引文献(傻瓜式操作,亲测可行,方便快捷,需要教育账号)

最近学习一篇文献时&#xff0c;需要查看所有引用过这篇文献的文章&#xff0c;并且下载出来。当然&#xff0c;如果引用的文献较少的话&#xff0c;可以通过网页直接搜索下载下来。但是如果超过10篇以上&#xff0c;我就会感觉比较繁琐。那么&#xff0c;有没有什么方法可以一…

如何在Springer使用bibtex自动生成引用文献,而不写Bibitem

最近投稿过程中帮忙排版&#xff0c;然后发现Springer的模板只能用Bibitem, 网上有许多馊主意&#xff0c; 例如手动写Bibitem&#xff0c;例如引用一些无用的包&#xff0c;尝试了几个小时&#xff0c;都没有用。 最后在英文论坛发现了这个秘密&#xff0c; Referee Link:具…

还在为写综述发愁找不到文献吗?学术搜索semantic scholar你值得拥有

首先&#xff0c;附上搜索网址&#xff1a; https://www.semanticscholar.org/ 目录 1.介绍2.官网样子什么样3.特色功能3.1 被引用情况分类3.2 学者影响力评价 1.介绍 官网介绍到 We are a team of researchers and engineers at the Allen Institute for AI building a bette…

bibtex到bibitem的转换的超详细教程(获取参考文献的bibitem)

1、获取引用论文的BibTex 这里以谷歌学术为例&#xff0c;搜索论文’Faster r-cnn: Towards real-time object detection with region proposal networks‘。如下图所示&#xff1a; 点击引用符号&#xff0c;出现以下页面。 点击BibTex&#xff0c;会跳转出该论文的BibTeX。如…

【BIB文献管理】LATEX使用bib

使用IEEEtran模板 在论文写作中&#xff0c;常使用IEEEtran的提供的模板&#xff0c;为了做文献管理&#xff0c;引入bib。 建立bib文件 在.tex的文件夹目录下&#xff0c;新建文本文档&#xff0c;另存为.bib文件即可。 引用文献 搜索需要引用的论文&#xff0c;引用为bib…

写综述,想用一个靠谱的整理文献的软件,有推荐的吗?

其实做过科研工作的人都会发现&#xff0c;真正需要把一篇文献从头到尾读完的情况是很少的。在大多数情况下&#xff0c;我们需要的其实是大批量多轮次地阅读文献&#xff0c;因为在一个项目的不同阶段&#xff0c;哪怕是同一篇文献&#xff0c;所关注的点也是不一样的。如果在…

千与千寻无脸男的真面目 无脸男为什么对千寻好

无脸男&#xff0c;又叫“无颜”&#xff0c;是日本动画大师宫崎骏的电影作品《千与千寻》中的主要角色之一。他是一只神秘的鬼怪&#xff0c;全身黑色&#xff0c;头带一个白色面具。他跟现代社会里的人们一样&#xff0c;渴望交到朋友。这个角色被认为有强烈的象征主义&#…