破解有道词典翻译-版本二

首先附上源码'''

破解有道词典版本二,加salt,sign
首先,把fanyi.minni.js中的Response代码复制到txt文件中,通过查找功能找到salt,sign
salt:i="" + (new Date).getTime()+parseInt(10 * Math.random(), 10)
sign:n.md5("fanyideskweb" + e + i + "p09@Bn{h02_BIEe]$P^nG")
md5总共需要四个参数:第一个跟第四个是固定值,第三个是salt,第二个是。。。
第二个参数就是输入要查找的单词
'''
from urllib import request,parse

def getSalt():
#salt:i="" + (new Date).getTime()+parseInt(10 * Math.random(), 10)
import time,random
salt=int(time.time()*1000)+random.randint(0,10)
# print(salt)
return salt

def getMD5(v):
import hashlib
md5=hashlib.md5()

md5.update(v.encode('utf-8'))
sign=md5.hexdigest()

return sign

def getSign(key,salt):
sign="fanyideskweb" + key + str(salt) + "p09@Bn{h02_BIEe]$P^nG"
sign=getMD5(sign)
return sign


def youdao(key):
# 请求地址
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
salt=getSalt()
# 请求体
data = {
"i": key,
"from": "AUTO",
"to": "AUTO",
"smartresult": "dict",
"client": "fanyideskweb",
"salt": str(salt), ### 盐:很长的随机串,防止用字典反推,注意要用同一把盐!
"sign": getSign(key,salt), ## 签名:js加密
# "ts":"1550487827114",
# "bv":"65db4e7e1a2a0ee160ea1e66436196cd",
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"action": "FY_BY_REALTIME",
"typoResult": "false"
}

# 数据编码
data = parse.urlencode(data).encode()

headers = {
"Accept": "application/json,text/javascript,*/*;q = 0.01",
# "Accept-Encoding": "gzip,deflate", #### 啥意思。。查。。有它就会错误
#这个头信息是告诉服务器客户端所支持的压缩方式,如果没有这行的话,就是告诉服务器,
# 客户端不支持压缩,要求不压缩直接返回文本。
"Accept-Language": "zh-CN,zh;q = 0.8",
"Connection": "keep-alive",
"Content-Length": len(data),#长度随着翻译单词变化!
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
"Cookie": "YOUDAO_EAD_UUID=c7c1d171-272e-443f-9d07-d9f8c779342e; _ntes_nnid=f691c54e993915b7e783b9985d6cc6aa,1490533835544; __guid=204659719.1198573978453254000.1502548625976.454; OUTFOX_SEARCH_USER_ID_NCOO=937151153.4321815; [email protected]|1523271382|0|other|00&99|bej&1523189875&hzhr#bej&null#10#0#0|157818&0|hzhr|[email protected]; [email protected]; _ga=GA1.2.667209885.1524559124; JSESSIONID=aaaTQDWkaB_7QbzNHL4nw; monitor_count=1; fanyi-ad-id=44547; fanyi-ad-closed=1; ___rl__test__cookies=1526736521106",
"Host": "fanyi.youdao.com",
"Origin": "http://fanyi.youdao.com",
"Referer": "http://fanyi.youdao.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
}

req = request.Request(url=url, data=data, headers=headers)

rsp = request.urlopen(req)

html = rsp.read().decode()
print(html)


if __name__ == '__main__':
youdao('word')

在破解有道词典翻译的过程中,会遇到比较多的错误,例如:
1.http.client.RemoteDisconnected: Remote end closed connection without response
这个错误可能是因为没有注释掉ts,bv,或者头部信息复制后修改出错
2.404错误
可能因为headers请求头复制后修改错误
3.UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
因为没有注释掉请求头中的Accept-Encoding导致的错误;这个头信息是告诉服务器客户端所支持的压缩方式,如果没有这行的话,就是告诉服务器,

客户端不支持压缩,要求不压缩直接返回文本。
4.一个用来进行js格式缩进美化的网址:http://tool.oschina.net/codeformat/js/

猜你喜欢

转载自www.cnblogs.com/fodalaoyao/p/10397852.html
今日推荐