输入英文翻译
import requests,random,time
from hashlib import md5
# 获取salt sign ts
def get_salt_sign_ts(word):
# ts
ts = str(int(time.time()*1000))
# salt
salt = ts + str(random.randint(0,9))
# sign
string ="fanyideskweb" + word + salt + "n%A-rKaT5fb[Gy?;N5@Tj"
s = md5()
s.update(string.encode())
sign = s.hexdigest()
return salt,ts,sign
# 破解有道
def attack_yd(word):
salt,ts,sign = get_salt_sign_ts(word)
# url地址为: F12->Headers->General ->Request URL
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
# headers
headers = {
"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": "238",
"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
"Cookie": "OUTFOX_SEARCH_USER_ID=995734199@10.169.0.83; OUTFOX_SEARCH_USER_ID_NCOO=1015765534.714534; _ntes_nnid=f1fd183c577ec5780be4b2f48f75504c,1565763232318; JSESSIONID=aaaxX1HVxKuMBd0WefyYw; ___rl__test__cookies=1565921469152",
"Host": "fanyi.youdao.com",
"Origin": "http://fanyi.youdao.com",
"Referer": "http://fanyi.youdao.com/",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36",
"X-Requested-With": "XMLHttpRequest",
}
# data:FormData为字典
data = {
"i": word,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": salt,
"sign": sign,
"ts": "1565921469156",
"bv": "65313ac0ff6808a532a1d4971304070e",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTlME",
}
html_json = requests.post(
url= url,
data =data,
headers =headers
).json()
# html_json 获得
"""{'translateResult': [[{'tgt': '你好', 'src': 'hello'}]],
'errorCode': 0, 'type': 'en2zh-CHS',
'smartResult': {'entries': ['', 'n. 表示问候, 惊奇或唤起注意时的用语\r\n',
'int. 喂;哈罗\r\n', 'n. (Hello)人名;(法)埃洛\r\n'], 'type': 1}}
"""
# 解析得到 result
result =html_json ['translateResult'][0][0]['tgt']
return result
if __name__=='__main__':
word = input('请输入要翻译的单词')
res = attack_yd(word)
print(res)