记一次爬虫的js解密过程:续

这次抓的是有道翻译:http://fanyi.youdao.com/

思路基本来自https://www.jianshu.com/p/ff3cd93f79b0
刚看到这篇文章,经过测试,部分参数新增和修改了,新增了浏览器版本号的加密参数,其他的sign参数加密过程所用的常量也发生改变,目测应该是经常改变的,所以如果不能用请重新破解一次,破解过程可以看上面那个链接

image.png
image.png

代码如下

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': '[email protected]; 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

你可能感兴趣的:(记一次爬虫的js解密过程:续)