zoukankan      html  css  js  c++  java
  • 破解有道词典翻译-版本二

    首先附上源码'''

    破解有道词典版本二,加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; P_INFO=userlvkaokao@163.com|1523271382|0|other|00&99|bej&1523189875&hzhr#bej&null#10#0#0|157818&0|hzhr|userlvkaokao@163.com; OUTFOX_SEARCH_USER_ID=-2077552359@180.201.180.165; _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/
  • 相关阅读:
    前端工程师基础课程作业
    对于API接口设计的几点看法
    socket socket.io
    移动端布局
    angularJS
    bootstrop的应用
    jquery基础
    html5本地存储
    ajax
    数据库类型
  • 原文地址:https://www.cnblogs.com/fodalaoyao/p/10397852.html
Copyright © 2011-2022 走看看