https://blog.csdn.net/qq_40925239/article/details/89453291
'''
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 + "@6f#X3=cCuncYssPsuRUE")
}
};
t.recordUpdate = function(e) {
var t = e.i
, i = r(t);
n.ajax({
type: "POST",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
url: "/bettertranslation",
data: {
i: e.i,
client: "fanyideskweb",
salt: i.salt,
sign: i.sign,
ts: i.ts,
bv: i.bv,
tgt: e.tgt,
modifiedTgt: e.modifiedTgt,
from: e.from,
to: e.to
},
success: function(e) {},
error: function(e) {}
})
}
'''
import time
import random
import requests
import hashlib
def generate_salt_sign(translate):
# var t = n.md5(navigator.appVersion)
# bv: t,
app_version="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"
bv=hashlib.md5(app_version.encode('UTF-8')).hexdigest()
#print('bv=',bv)
# , r = "" + (new Date).getTime()
ts=str(int(round(time.time(),3)*1000))
print('ts=',ts)
# salt: i, , i = r + parseInt(10 * Math.random(), 10);
salt=ts+str(random.randint(1,10))
print('salt=',salt)
#sign: n.md5("fanyideskweb" + e + i + "@6f#X3=cCuncYssPsuRUE")
sign=hashlib.md5(("fanyideskweb" + translate+salt+ "@6f#X3=cCuncYssPsuRUE").encode(encoding='utf-8')).hexdigest()
print('sign=',sign)
return salt,sign,ts,bv
def params():
data={}
translate="morning"
client="fanyideskweb"
data['i']=translate
data['from']="AUTO"
data['to']="AUTO"
data['smartresult']="dict"
data['client']=client
data['salt'],data['sign'],data['ts'],data['bv']=generate_salt_sign(translate)
data['doctype']="json"
data['version']="2.1"
data['keyfrom']="fanyi.web"
data['action']="FY_BY_DEFAULT"
print(data)
return data
def tran():
data=params()
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36',
'Referer': 'http://fanyi.youdao.com/',
'Cookie':'OUTFOX_SEARCH_USER_ID=1486806895@10.169.0.83;'
}
with requests.post('http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule',headers=headers,data=data) as res:
print(res.text)
if __name__=='__main__':
tran()
亲测成功