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)

 

posted on 2021-03-03 23:41  逐梦的猫  阅读(118)  评论(0)    收藏  举报

导航