zoukankan      html  css  js  c++  java
  • 爬取有道翻译

    url:http://fanyi.youdao.com/

    f12抓包

     

     有4个加密参数

    ctrl + shift +f,搜索salt,找到他的加密过程

     可以看到r代表当前时间,i为当前时间 +上一个随机整数

    t为版本信息,所以t这个参数其实是一直不变的,直接复制上就行

    sign:明显是将 两端字符串和 e,i共同进行md5加密得到

    在这里设置断点,单步调试

     e的值就等于我输入翻译的内容,接下来写代码模拟它这个加密过程就可以了

     1 import requests
     2 import hashlib
     3 import time
     4 import random
     5 import math
     6 def main():
     7     r = math.floor(time.time()*1000)
     8     i = r + int(random.random()*10)
     9     salt = i
    10     e = input('翻译内容:
    ')
    11     sign =hashlib.md5(("fanyideskweb" + e + str(i) + "Nw(nmmbP%A-r6U3EUn]Aj").encode('utf-8')).hexdigest()
    12     url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule'
    13     headers = {
    14     'Accept': 'application/json, text/javascript, */*; q=0.01',
    15     'Accept-Encoding': 'gzip, deflate',
    16     'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    17     'Connection': 'keep-alive',
    18     'Content-Length': '251',
    19     'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    20     'Cookie': 'OUTFOX_SEARCH_USER_ID=-446566454@10.108.160.18; JSESSIONID=aaahlBDeJ38SEg_0B8gbx; OUTFOX_SEARCH_USER_ID_NCOO=668509478.1310366; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcEY-8G7W-aseXSei_ex; _ntes_nnid=7705a1ceb59666b8545bc121466fe1ed,1586915641487; ___rl__test__cookies=1587197444202',
    21     'Host': 'fanyi.youdao.com',
    22     'Referer': 'http://fanyi.youdao.com/',
    23     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36 Edg/81.0.416.58',
    24     'X-Requested-With': 'XMLHttpRequest'
    25     }
    26     data = {
    27     'i': e,
    28     'client': 'fanyideskweb',
    29     'salt': salt,
    30     'sign': sign,
    31     'version': '2.1',
    32     'keyfrom': 'fanyi.web',
    33     }
    34     html = requests.post(url,headers=headers,data=data).json()
    35     print(html['translateResult'][0][0]['tgt'])
    36     translated = html['translateResult'][0][0]['tgt']
    37 
    38 #请求音频文件
    39 words = translated.replace(" ",'%20')
    40 url = 'http://tts.youdao.com/fanyivoice?word={}&le=eng&keyfrom=speaker-target'.format(words)
    41 html =requests.get(url).content
    42 with open('{}.mp3'.format(words),'wb') as f:
    43     f.write(html)
    44 
    45 if __name__ == '__main__':
    46     while(1):
    47         main()

    测试,成功

  • 相关阅读:
    web访问权限实现方法-探面向对象的编码设计
    解析二进制反码算数求和
    可以把erp当做一个分支-找自己的方向
    电脑开机是怎样自动加载进程
    球管模型和Java
    发明和发现
    漂浮
    js中的一些循环
    ES5中新增的一些方法
    git的一些操作
  • 原文地址:https://www.cnblogs.com/Truedragon/p/12765524.html
Copyright © 2011-2022 走看看