有道翻译网站: http://fanyi.youdao.com/
在翻译栏输入 I Love You Baby 然后f12 点击翻译
在headers里 的Request URL: 是请求地址:
这里是:http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
注意下这里的请求地址translate_o 而在实际python写的时候 _o 不能要不然会报错.
下面看一下salt 和 sign的取法
点击第四个js,点击下面的{} 格式化代码,搜索salt ,这里有三个,可以打断点,然后点击翻译,看具体在哪个地方停.
这里可以看到 salt是个时间戳,sign 是由 s n r o 组合的 MD5加密
所有参数搞清,下面测试代码
import urllib.request
import urllib.parse
import time
import random
import hashlib
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
data = {}
i = 'I lov you baby'
data['i']=i
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_REALTIME'
data['typoResult']='false'
u = 'fanyideskweb'
f = str(int(time.time()*1000)+random.randint(1,10))
c = "ebSeFb%=XZ%T[KZ)c(sy!"
sign = hashlib.md5((u+i+f+c).encode('utf-8')).hexdigest()
data['salt']=f
data['sign']=sign
data= urllib.parse.urlencode(data).encode('utf-8')
response = urllib.request.urlopen(url,data)
html = response.read().decode('utf-8')
print(html)