步骤(1)根据下文链接学习如何从网页中找到对应的js文件并设置断点
https://jingyan.baidu.com/article/dca1fa6f0379a5f1a44052fd.html
步骤(2)将找到的js文件复制到pycharm里面搜索salt,找到的结果见下图
步骤(3)有了断点就可以看到变量是怎么得到的,见下图所示
步骤(4)根据CSDN中下文的链接跟随大佬学习如何从js中解析参数并写python脚本
https://blog.csdn.net/slwhy/article/details/79015030
和上文链接中大佬的文章中相比,新的有道更改了部分参数,具体代码如下:
----------------------------以下是脚本的全文--------------------------------------------
import requests
import time
import hashlib
import random
url='http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
headers={
'Cookie': 'YOUDAO_MOBILE_ACCESS_TYPE=1; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; [email protected]; JSESSIONID=abcpz17vgvGZ8aL8KiHUw; OUTFOX_SEARCH_USER_ID_NCOO=1634403883.7994204; ___rl__test__cookies='+str(int(time.time()*1000)),
#'Host': 'fanyi.youdao.com',
'Referer': 'http://fanyi.youdao.com/?keyfrom=dict2.index',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0'
}
ts=str(int(time.time()*1000))
salt=str(int(ts))+str(random.randint(1,10))
t = input('输入要翻译的句子:')
u = 'fanyideskweb'
l = '@6f#X3=cCuncYssPsuRUE'
src = u + t + salt + l # u 与 l 是固定字符串,t是你要翻译的字符串,i是之前的时间戳
m2 = hashlib.md5()
m2.update(src.encode('utf-8'))
sign = m2.hexdigest()
data={
'i':t,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salt,
'sign': sign,
'ts': ts,
'bv': 'e2a78ed30c66e16a857c5b6486a1d326',
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_CLICKBUTTION'
}
#print('ts='+ts)
#print('salt='+salt)
#print('sign='+sign)
content=requests.post(url,headers=headers,data=data)
#print(content.json())
tgt=content.json()['translateResult'][0][0]['tgt']
print(tgt)