有道选择语言性翻译

"""
有道反扒一直再改变,加深。浪费我一段时间;;;
通过查找,能找到js代码中的操作代码
1.这是计算salt的公式,在fanyi.min.js文件中找到的,
t = "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10));
2.n.md5("fanyideskweb" + e + i + "@6f#X3=cCuncYssPsuRUE")
md5一共需要四个参数,第一个和第四个都是固定的字符串,第三个是所谓的salt。第二个就是输入的要查找的单词
"""
def getSalt():
    """
    这是计算salt的公式  "" + ((new Date).getTime() + parseInt(10 * Math.random(), 10));
    把它翻译成Python代码
    :return:
    """
    import time,random
    # (new Date).getTime()生成的时间戳与time.time()的单位不一致,所以需要乘1000
    salt = str(int(time.time()*1000)) + str(random.randint(0,10))
    ts = int(time.time()*1000)
    return salt,ts

def getMd5(v):
    import hashlib
    md5 = hashlib.md5()
    # 需要一个bytes格式的参数
    md5.update(v.encode("utf-8"))
    sign = md5.hexdigest()
    return sign

def getSign(key, salt):
    sign = "fanyideskweb" + key + str(salt[0]) + "@6f#X3=cCuncYssPsuRUE"
    bv = 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50'
    sign = getMd5(sign)
    bv = getMd5(bv)
    return sign,bv

from urllib import request,parse

def youdao(key):
    url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule "
    salt = getSalt()
    data = {
        "i": key,
        "from": "id",
        "to": "zh-CHS",
        "smartresult": "dict",
        "client": "fanyideskweb",
        "salt": str(salt[0]),
        "sign": getSign(key, salt)[0],
        "ts": str(salt[1]),
        "bv": getSign(key, salt)[1],
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "action": "FY_BY_REALTlME"
    }
    # 参数data需要是bytes格式
    data = parse.urlencode(data).encode('utf-8')
    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": len(data),
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Cookie": "OUTFOX_SEARCH_USER_ID=-179075867@117.159.15.221; P_INFO=l542684416@163.com|1550109535|0|other|00&99|hen&1550053607&urs#hen&410000#10#0#0|&0|urs|l542684416@163.com; JSESSIONID=aaah-7I2JcBp9d3hhczUw; OUTFOX_SEARCH_USER_ID_NCOO=925083748.2690873; ___rl__test__cookies=1561650099798",
        "Host": "fanyi.youdao.com",
        "Origin":"http://fanyi.youdao.com",
        "Referer":"http://fanyi.youdao.com/",
        "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50",
        "X-Requested-With": "XMLHttpRequest"
    }
    #添加一个IP池
    px = request.ProxyHandler({'https':'112.87.65.117:9999'})
    opener = request.build_opener(px)
    req = request.Request(url=url, data=data, headers=headers)
    res = opener.open(req)
    # rsp = request.urlopen(res)
    html = res.read().decode('utf-8')
    # print(html)
    html = eval(html)
    su = html["translateResult"][0][0]['tgt']
    return su

#
# youdao(' Keuangan AJB Bumiputera negatif Rp 20 triliun, ini klarifikasi OJK ')

  

原文地址:https://www.cnblogs.com/542684416-qq/p/11193437.html