有道翻译自制接口

Posted _积木城池

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有道翻译自制接口相关的知识,希望对你有一定的参考价值。

思路:

背景,自己想做个词典,但是没有庞大词库支持,那就借用某道的吧

-------分割线-------

通过在有道翻译上的查词分析出它是通过post请求而且是ajax异步处理,那么找到请求信息,获取表单数据,找到发送Ajax的js,拼出需要的字段信息,之后……恭喜你,成功了。(●‘?‘●)

源码:

 1 import json
 2 from get_and_post import post
 3 # md5加密
 4 def md5(kw,salt):
 5     import hashlib
 6     # 创建md5对象
 7     m = hashlib.md5()
 8     # 生成加密字符串
 9     # js源码:o = u.md5(S + n + r + D)
10     # S = "fanyideskweb"
11     # n = kw
12     # r = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))
13     # D = "ebSeFb%=XZ%T[KZ)c(sy!"
14     m.update(("fanyideskweb" + kw + salt + "ebSeFb%=XZ%T[KZ)c(sy!").encode(utf-8))
15     # 获取加密后的字符串
16     sign = m.hexdigest()
17     return sign
18 
19 
20 def youdao(kw):
21     url = http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
22     # 定义salt
23     # r = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10))
24     import time, random
25     salt = str(int(time.time() * 1000) + random.randint(0,10))
26     sign = md5(kw, salt)
27     form = {
28         "i": kw,
29         "from": "AUTO",
30         "to": "AUTO",
31         "smartresult": "dict",
32         "client": "fanyideskweb",
33         "salt": salt,
34         "sign": sign,
35         "doctype": "json",
36         "version": "2.1",
37         "keyfrom": "fanyi.web",
38         "action": "FY_BY_REALTIME",
39         "typoResult": "false",
40     }
41     headers = {
42         "Accept": "application/json, text/javascript, */*; q=0.01",
43         "Accept-Language": "zh-CN,zh;q=0.9",
44         "Connection": "keep-alive",
45         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
46         "Cookie": "[email protected]; _ntes_nnid=cfe37c34689077c73fb91832c6d23f01,1531735426782; OUTFOX_SEARCH_USER_ID_NCOO=1071254637.8014078; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcdU07ploiZ-gRehC2uw; ___rl__test__cookies=1534226607617",
47         "Host": "fanyi.youdao.com",
48         "Origin": "http://fanyi.youdao.com",
49         "Referer": "http://fanyi.youdao.com/?keyfrom=dict2.index",
50         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
51         "X-Requested-With": "XMLHttpRequest",
52     }
53     html_bytes = post(url,form,headers=headers)
54     translation = json.loads(html_bytes.decode(utf-8))
55     try:
56         translation = translation[smartResult][entries][1:]
57         res = ‘‘
58         for i in translation:
59             res += i
60     except:
61         res = translation[translateResult][0][0][tgt]
62     return res
63 
64 if __name__ == __main__:
65     kw = input(请输入:)
66     translation = youdao(kw)
67     print(translation)

 

以上是关于有道翻译自制接口的主要内容,如果未能解决你的问题,请参考以下文章

实战演示,调用有道翻译API接口进行英文转中文翻译实例训练

Python反编译调用有道翻译(附完整代码)

2023-Python实现有道翻译接口加密解密

Python 爬虫篇 - 调用有道翻译api接口翻译外文网站的整篇西班牙文实战演示。爬取西班牙语文章调用有道翻译接口进行整篇翻译

JS逆向--有道翻译

Java接口测试之使用有道翻译API