#有道翻译
# -*-coding:utf-8-*-
import requests
import json
import time
import random
from faker import Faker #faker是一个生成伪造数据的Python第三方库,可以伪造城市,姓名,等等,而且支持中文,需要的时候可以一用。
import hashlib #hashlib的md5算法加密数据
#第一个
import time
from faker import Faker
import random
import hashlib
import requests
'''ua = Faker().user_agent()print(ua)url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'key = input("请输入你需要翻译的内容: ")#生成时间戳tsts = str(time.time() * 1000)#通过ts加0 - 10的随机整数字符生成saltsalt = ts + str(random.randint(0, 10))the_str = "fanyideskweb" + key + salt + "@6f#X3=cCuncYssPsuRUE"#md5加密生成signmd5 = hashlib.md5()md5.update(the_str.encode('utf-8'))sign = md5.hexdigest()headers = {'Cookie': 'OUTFOX_SEARCH_USER_ID=-2022895048@10.168.8.76;','User-Agent': ua,'Host': 'fanyi.youdao.com','Origin': 'http://fanyi.youdao.com','Referer': 'http://fanyi.youdao.com/',}from_data = {'i': key,'from': 'UTO','to': 'UTO','smartresult': 'dict','client': 'fanyideskweb','salt': salt,'sign': sign,'ts': ts,'bv': '5504a5c7c19867a06038cf79d29f756a','doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME'}response = requests.post(url, headers=headers, data=from_data).json()print(response)print(response['translateResult'][0][0]['tgt'])'''
#第二个
class Youdao(object):
def __init__(self, msg):
self.msg = msg
self.url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
self.D = "ebSeFb%=XZ%T[KZ)c(sy!"
self.salt = self.get_salt()
self.sign = self.get_sign()
def get_md(self, value):
'''md5加密'''
m = hashlib.md5()
# m.update(value)
m.update(value.encode('utf-8'))
return m.hexdigest()
def get_salt(self):
'''根据当前时间戳获取salt参数'''
s = int(time.time() * 1000) + random.randint(0, 10)
return str(s)
def get_sign(self):
'''使用md5函数和其他参数,得到sign参数'''
s = "fanyideskweb" + self.msg + self.salt + self.D
return self.get_md(s)
def get_result(self):
'''headers里面有一些参数是必须的,注释掉的可以不用带上'''
headers = {
# 'Accept': 'application/json, text/javascript, */*; q=0.01',
# 'Accept-Encoding': 'gzip, deflate',
# 'Accept-Language': 'zh-CN,zh;q=0.9,mt;q=0.8',
# 'Connection': 'keep-alive',
# 'Content-Length': '240',
# 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-2022895048@10.168.8.76;',
# 'Host': 'fanyi.youdao.com',
# 'Origin': 'http://fanyi.youdao.com',
'Referer': 'http://fanyi.youdao.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; rv:51.0) Gecko/20100101 Firefox/51.0',
# 'X-Requested-With': 'XMLHttpRequest'
}
data = {
'i': self.msg,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': self.salt,
'sign': self.sign,
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_CL1CKBUTTON',
'typoResult': 'true'
}
html = requests.post(self.url, data=data, headers=headers).text
print(html)
infos = json.loads(html)
if 'translateResult' in infos:
try:
result = infos['translateResult'][0][0]['tgt']
print(result)
except:
pass
if __name__ == '__main__':
y = Youdao('你是我的小苹果,我是你的优乐美')
y.get_result()