python翻译(一)
有道翻译
# -*- coding: UTF-8 -*- import requests import time import random import hashlib #用于md5加密 ''' 有道js加密代码 define("newweb/common/service", ["./utils", "./md5", "./jquery-1.7"], function(e, t) { var n = e("./jquery-1.7"); e("./utils"); e("./md5"); var r = function(e) { var t = n.md5(navigator.appVersion) , r = "" + (new Date).getTime() , i = r + parseInt(10 * Math.random(), 10); return { ts: r, bv: t, salt: i, sign: n.md5("fanyideskweb" + e + i + "Tbh5E8=q6U3EXe+&L[4c@") } } ''' ''' 需要传入的表单参数 form data { i: 你好 ---------要翻译的内容 from: AUTO ---------不变 to: AUTO ---------不变 smartresult: dict ---------不变 client: fanyideskweb ---------不变 salt: 16140794369711 ---------变化,需要从js获取 sign: ebd24f53c35b99b5190d261458569d15 ---------变化,需要从js获取 lts: 1614079436971 ---------变化,需要从js获取 bv: 3da01a09873456cfb5dba05f2124b148 ---------变化,需要从js获取 doctype: json ---------不变 version: 2.1 ---------不变 keyfrom: fanyi.web ---------不变 action: FY_BY_REALTlME ---------不变 } ''' base_url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' header={ 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-CN,zh;q=0.9', 'Connection': 'keep-alive', 'Content-Length': '243', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'Cookie': 'OUTFOX_SEARCH_USER_ID=279929001@10.108.160.102; OUTFOX_SEARCH_USER_ID_NCOO=1593630629.8354774; JSESSIONID=aaaasrifKqzfreFp2NoFx; ___rl__test__cookies=1614098943617', 'Host': 'fanyi.youdao.com', 'Origin': 'http://fanyi.youdao.com', 'Referer': 'http://fanyi.youdao.com/', 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36', 'X-Requested-With':'XMLHttpRequest', } #获取md5值 def get_md5(str_data): temp=hashlib.md5() temp.update(str_data.encode('utf-8')) return temp.hexdigest() data={} #构造函数生产表单参数 def postdata(message): user_agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" data['i']=message data['from']='AUTO' data['to']='AUTO' data['smartresult']='dict' data['client']='fanyideskweb' data['doctype']='json' data['version']='2.1' data['keyfrom']='fanyi.web' data['action']='FY_BY_REALTlME' #获取bv的值,该值为所输入需要翻译内容的dm5值 data['bv']=get_md5(user_agent) #获取lts值,该值为当前时间秒数 r=str(int(time.time()*1000))#毫秒所以*1000 data['lts']=r #获取salt值,该值为当前时间秒数加上随机获取的1-10的数字拼接 i=r+str(int(random.randint(1,10))) data['salt']=i #获取sign的值 e=message data['sign']=get_md5("fanyideskweb" + e + i+ "Tbh5E8=q6U3EXe+&L[4c@") return data message=input('请输入要翻译的单词:') form_data=postdata(message) print(form_data) response= requests.post(url=base_url,headers=header,data=form_data) json_data=response.json()#将获取的信息转换为json格式 ''' {"translateResult":[[{"tgt":"The dog","src":"狗"}]],"errorCode":0,"type":"zh-CHS2en","smartResult":{"entries":["","dog\r\n"],"type":1}} ''' result=json_data['translateResult'][0][0]['tgt'] print('翻译结果为:%s'%result)