zoukankan      html  css  js  c++  java
  • 破解有道词典在线翻译接口--python

    没什么好说的,直接上代码。

    import requests
    # import json
    import time
    import random
    import hashlib
    
    translate = input('>>>>>>>')
    url_1 = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    ts = str(int(time.time()*1000))
    salt = ts + str(int(random.random()*10))
    print(ts,salt)
    md5 = hashlib.md5()
    md5.update(("fanyideskweb" + translate + salt + "p09@Bn{h02_BIEe]$P^nG").encode('utf8'))
    sign = md5.hexdigest()
    print(sign)
    data = {'i': translate,
            'from': 'AUTO',
            'to': 'AUTO',
            'smartresult': 'dict',
            'client': 'fanyideskweb',
            'ts': ts,
            'salt': salt,
            'sign': sign,
            'bv': 'b8bcedb6e9d30eb0beaae6f2c4cb90f1',
            'doctype': 'json',
            'version': '2.1',
            'keyfrom': 'fanyi.web',
            'action': 'FY_BY_REALTIME',
            'typoResult': 'false',
            }
    cookies = {'OUTFOX_SEARCH_USER_ID': ###不告诉你自己看自己的##, 'OUTFOX_SEARCH_USER_ID_NCOO': ##不告诉你自己看自己的##,
               'JSESSIONID': ##不告诉你自己看自己的###, '___rl__test__cookies': str(int(ts)-7)}
    header = {'Accept': 'application/json, text/javascript, */*; q=0.01',
              'Accept-Encoding': 'gzip, deflate',
              'Accept-Language': 'zh-CN,zh;q=0.9',
              'Cache-Control': 'no-cache', 'Connection': 'keep-alive',
              'Content-Length': '252',
              'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
              'DNT': '1',
              'Host': 'fanyi.youdao.com',
              'Origin': 'http://fanyi.youdao.com',
              'Pragma': 'no-cache',
              'Referer': 'http://fanyi.youdao.com/',
              'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) '
                            'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36',
              'X-Requested-With': 'XMLHttpRequest',
              }
    
    res_1 = requests.post(url_1, data=data, headers=header, cookies=cookies)
    print(res_1.text)
    

      稍微解释一下。

      ts是根据系统时间生成的毫秒。(随便什么时间。我试过1990年都可以。)

      salt是str(ts)后与1-9随机一个数字做拼接。

      sign是MD5("fanyideskweb" + 待翻译内容 + salt + "p09@Bn{h02_BIEe]$P^nG")

      bv是MD5(浏览器的版本信息,如5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36)所以请求头中一定要带 上User-Agent)

      !cookies中的___rl__test__cookies应该是首次打开网页时的系统时间,后面每次请求都会变。总之就是记录发送翻译请求前的时间。随便拿ts减个数字就行了。(应该吧)

    其他的参数。固定就行(看下自己浏览器发的数据填上去就行)。没具体测试每一个参数。懒得弄的,就把一直在变化的测试了下,其他都是复制粘贴的。

    总之,有道的反爬还是很简单的。答案在js代码中都能找到。就这样吧。

  • 相关阅读:
    Eclipse编辑properties文件中文乱码
    Spark安装
    安装VirtualBox后,VMware不能上网
    Hadoop Eclipse插件编译
    MapReduce 常见问题
    MapReduce 气象数据集
    Maven构建Hadoop开发环境
    Eclipse安装Maven
    吴恩达深度学习笔记 course4 week2 深度卷积网络 实例探究
    吴恩达深度学习笔记 cousrse4 week1作业
  • 原文地址:https://www.cnblogs.com/sbxlqswl/p/10458957.html
Copyright © 2011-2022 走看看