"""有道反扒一直再改变,加深。浪费我一段时间;;;通过查找,能找到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,tsdef getMd5(v): import hashlib md5 = hashlib.md5() # 需要一个bytes格式的参数 md5.update(v.encode("utf-8")) sign = md5.hexdigest() return signdef 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,bvfrom urllib import request,parsedef 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 ')