这次抓的是有道翻译:http://fanyi.youdao.com/
思路基本来自https://www.jianshu.com/p/ff3cd93f79b0
刚看到这篇文章,经过测试,部分参数新增和修改了,新增了浏览器版本号的加密参数,其他的sign参数加密过程所用的常量也发生改变,目测应该是经常改变的,所以如果不能用请重新破解一次,破解过程可以看上面那个链接
代码如下
import requests,hashlib,time,random
def md5(data):
tmp="5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0"
return hashlib.md5(data.encode('utf-8')).hexdigest()
headers = {
'Content-Length': '200',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-1477876726@10.169.0.83; JSESSIONID=aaaX8XQAQLYpv-9TJAgix; OUTFOX_SEARCH_USER_ID_NCOO=1670271260.8903744; ___rl__test__cookies=1589245599445',
'Host': 'fanyi.youdao.com',
'Origin': 'http//fanyi.youdao.com',
'Referer': 'http//fanyi.youdao.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'}
def 有道翻译(e):
# e="声音"
ts=str(int(time.time()*1000))
salt=ts + str(random.randint(1, 10))
bv=md5(headers['User-Agent'])
#这个签名后面的字母经常变,如果不行重新抓取看看更改的;Nw(nmmbP%A-r6U3EUn]Aj
sign=md5("fanyideskweb" + e + salt + "Nw(nmmbP%A-r6U3EUn]Aj")
data = {'i': e,
'from': 'AUTO',
'to': 'AUTO',
'smartresult': 'dict',
'client': 'fanyideskweb',
'salt': salt,
'sign': sign,
'ts': ts,
'bv': bv,
'doctype': 'json',
'version': '2.1',
'keyfrom': 'fanyi.web',
'action': 'FY_BY_REALTlME'
}
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
res = requests.post(url, headers=headers, data=data)
return res.json()
image.png
网友评论