首页 > 其他分享 >调用有道翻译接口进行翻译

调用有道翻译接口进行翻译

时间:2023-04-24 20:25:40浏览次数:36  
标签:翻译 string 有道 接口 sign json result str md5

  1 '''
  2 i: 你好
  3 from: AUTO
  4 to: AUTO
  5 smartresult: dict
  6 client: fanyideskweb
  7 salt: 16643765479061    //毫秒级别的时间戳后面加上个0-9之间的随机数,js代码:r + parseInt(10 * Math.random(), 10);这里的r表示时间戳字符串
  8 sign: 1d69ce8f7c6258243e573e31e29e0012    //签名,下面找到了
  9 lts: 1664376547906        //毫秒级别的时间戳
 10 bv: 42c8b36dd7d61c619e7b1dc11e44d870    //同设备相同,使用md5加密的(方法是:md5(User-Agent)==>md5("5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.53")
 11 doctype: json
 12 version: 2.1
 13 keyfrom: fanyi.web
 14 action: FY_BY_REALTlME
 15 
 16 /*
 17 解密出来了:sign的计算如下
 18 define("newweb/common/service", ["./utils", "./md5", "./jquery-1.7"], function(e, t) {
 19     var n = e("./jquery-1.7");
 20     e("./utils");
 21     e("./md5");
 22     var r = function(e) {
 23         var t = n.md5(navigator.appVersion)
 24           , r = "" + (new Date).getTime()
 25           , i = r + parseInt(10 * Math.random(), 10);
 26         return {
 27             ts: r,
 28             bv: t,
 29             salt: i,
 30             sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")    //在这里,e是要翻译的内容,i是毫秒级别的时间戳后面加上个0-9之间的随机数;后面这串字符串估计是服务器那边随机生成的,应该会变化。每次抓取的时候,可以查看下js代码
 31         }
 32     };
 33     
 34     总体来说,data数据由函数“generateSaltSign”计算出来
 35 */
 36 '''
 37 
 38 '''
 39 获取翻译结果
 40 The_translated_string:被翻译的字符串
 41 由于翻译是以行为单位,所以一行一个结果,函数将解析The_translated_string参数,并以字符串形式返回所有翻译结果
 42 '''
 43 def youdao_translate(The_translated_string:str):
 44     if(The_translated_string == ""):
 45         return {"":""}
 46     url = r'https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
 47 
 48     User_Agent = "5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.37"
 49     header = {
 50         "Accept": "application/json, text/javascript, */*; q=0.01",
 51         "Accept-Encoding": "gzip, deflate, br",
 52         "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
 53         "Connection": "keep-alive",
 54         #"Content-Length": "307",
 55         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
 56         "Cookie":"[email protected]; OUTFOX_SEARCH_USER_ID_NCOO=775555146.507473; JSESSIONID=aaaQ2GYK5N-ozb24rKNcy; SESSION_FROM_COOKIE=unknown; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcPzon0RcZqc7GltuAgy; ___rl__test__cookies=1665366515354",
 57         "Host": "fanyi.youdao.com",
 58         "Origin": "https://fanyi.youdao.com",
 59         "Referer": "https://fanyi.youdao.com/",
 60         "sec-ch-ua": """\"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"\"""",
 61         "sec-ch-ua-mobile": "?0",
 62         "sec-ch-ua-platform": "Windows",
 63         "Sec-Fetch-Dest": "empty",
 64         "Sec-Fetch-Mode": "cors",
 65         "Sec-Fetch-Site": "same-origin",
 66         "User-Agent": User_Agent,
 67         "X-Requested-With": "XMLHttpRequest"
 68     }
 69 
 70     #The_translated_string=input("输入你要翻译的中文信息:\n")  # 被翻译的字符串
 71     timestamp = str(round(time.time()*1000))  # 毫秒级别的时间戳
 72     salt = timestamp + str(random.randint(0, 9))  # 毫秒级别的时间戳后面加上个0-9之间的随机数
 73     sign_str = "fanyideskweb" + The_translated_string + salt + "Ygy_4c=r#e#4EX^NUGUc5"  # 构造签名字符串
 74     # 签名,算法:sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")    //在这里,后面这串字符串估计是服务器那边随机生成的,应该会变化。每次抓取的时候,可以查看下js代码
 75     sign = hashlib.md5(str.encode(sign_str)).hexdigest()
 76     # 同设备相同,使用md5加密的(方法是:md5(User-Agent)==>md5("5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.53")
 77     bv = hashlib.md5(str.encode(User_Agent)).hexdigest()
 78     cookies = {
 79         "OUTFOX_SEARCH_USER_ID": "[email protected]",
 80         "OUTFOX_SEARCH_USER_ID_NCOO": "775555146.507473",
 81         "JSESSIONID": "aaaQ2GYK5N-ozb24rKNcy",
 82         "SESSION_FROM_COOKIE": "unknown",
 83         "DICT_UGC": "be3af0da19b5c5e6aa4e17bd8d90b28a|",
 84         "JSESSIONID": "abcPzon0RcZqc7GltuAgy",
 85         "___rl__test__cookies": "1665366515354"
 86     }
 87     data = {
 88         "i": The_translated_string,
 89         "from": "AUTO",
 90         "to": "AUTO",
 91         # 一般来说,是从中文翻译为英文
 92         # "from": "zh-CHS",
 93         # "to": "en",
 94         "smartresult": "dict",
 95         "client": "fanyideskweb",
 96         "salt": salt,
 97         "sign": sign,
 98         "lts": timestamp,
 99         "bv": bv,
100         "doctype": "json",
101         "version": "2.1",
102         "keyfrom": "fanyi.web",
103         "action": "FY_BY_CLICKBUTTION"
104     }
105     data = urlencode(data);
106     result = requests.post(url, data=data, cookies=cookies,headers=header)
107     json_result = json.loads(result.text);
108     #lines = The_translated_string.splitlines();     #按照行边界拆分
109     if(not json_result["errorCode"]):
110         ret_list="";
111         for i in json_result["translateResult"]:    #如果源字符串就是存在段落的,则这里就会根据其来分结果
112             for j in i:                             #翻译服务器认为该分段的,这里就会再次存在子项
113                 ret_list+=j['tgt']
114                 ret_list+="\n"
115             #ret_list[json_result["translateResult"][i][0]["src"]]=json_result["translateResult"][i][0]["tgt"]
116         return ret_list;
117     else:
118         return "errorCode = "+str(json_result["errorCode"]);

 

标签:翻译,string,有道,接口,sign,json,result,str,md5
From: https://www.cnblogs.com/love-DanDan/p/17350743.html

相关文章

  • SpringSecurity从入门到精通:登录接口代码实现&测试接口
    登录接口代码实现 @RestController @RestControllerpublicclassLoginController{@AutowiredprivateLoginServcieloginServcie;@PostMapping("/user/login")publicResponseResultlogin(@RequestBodyUseruser){returnloginServ......
  • Java中Runnable和Callable的区别 Runnable接口
    Callable接口从Java1.0开始,它是java.lang包的一部分从Java1.5开始,它是java.util.concurrent包的一部分。Runnable接口不能返回计算的结果。Callable接口可以返回一个任务的并行处理的结果。Runnable接口不能抛出一个有检查的异常。Callable接口可以抛出一个有检查的异常。......
  • API接口item_get-获取lazada商品详情(num_iid宝贝ID、title商品标题、price价格、nick
    什么是API?API是一个缩写,它代表了一个pplicationPAGC软件覆盖整个房间。API是用于构建软件应用程序的一组例程,协议和工具。API指定一个软件程序应如何与其他软件程序进行交互。例行程序:执行特定任务的程序。例程也称为过程,函数或子例程。协议:在两个系统之间传输数据的格式。......
  • React、Ant Design 5.0 构建通用后台管理系统 - 接口服务环境搭建
    目录项目初始化项目结构package.jsontsconfig.jsonnodemon.jsonindex.tssrc/server.ts运行项目初始化mkdirgeneral-admin-system-servercdgeneral-admin-system-servernpminit-ynpminstalltypescriptts-node@types/nodenodemon@swc/core@swc/helpersregenerator-......
  • 旅游景点信息API接口大全
    1、分享数据:“http://www.shareapi.cn/docs/api/id/127”,免费,次数1000次返回JSON示例{"SceneryID":10224,/*景区ID*/"SceneryName":"金鸡湖",/*景区名称*/"SceneryGrade":4,/*景区等级*/"SceneryAddress":"sr",/*景区地址*/"SceneryP......
  • 实现语音接口的调用
    科技讯飞开放平台需要要获取id等3个参数,请到迅飞开放平台:https://www.xfyun.cn/services/voicedictation进行语音接口的调用,我在网上找到了别人的讯飞id接口,自己的还是没有实现成功。放一部分的代码实现一下吧。<%--CreatedbyIntelliJIDEA.User:DELLDate:2023/4......
  • 使用curl请求接口
    1、基本用法curl-X[request][options][URL] -X选项指定了在与远程服务器通信时将使用哪种HTTP请求方法。   常用的请求方法[request]:GER,POST,DELETE,PUT,PATCH 2、常用参数-v参数输出通信的整个过程,用于调试。-b参数用来向服务器发送Cookie。 ......
  • 淘宝app端商品采集接口分享 商品详情图抓取 高并发请求
    接口名称:item_get_app请求方式:POST、GET返回数据格式:json请求示例:#coding:utf-8"""Compatibleforpython2.xandpython3.xrequirement:pipinstallrequests"""from__future__importprint_functionimportrequests#请求示例url默认请求参数已经做URL编......
  • 视频分享 点赞 收藏,分享数接口开发研究
    Q44804487已于2022-10-0920:13:43修改386收藏1文章标签:androidjava开发语言版权最近应客户需求研究了下某音分享的接口对该接口做了个测试这里测试了个风控点就是单个作品请求到一个上限后成功率低数据增长比较缓慢这个上限目前测试是5000-20000(5K的多一点,正常来说一个......
  • 抖音视频播放量 视频搜索接口算法 XG XK 算法 设备注册
    Q44804487于2022-08-2221:31:48发布1067收藏11文章标签:音视频ios版权最近应客户要求研究了下抖音搜索视频和播放视频的接口现在已做完放出部分接口给大家参考下注:全套需要配合抖音设备使用视频搜索接口   defsearch_video_ios(query,page,sort_type,publish_time......