Truedragon

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(\'翻译内容:\n\')
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()

测试,成功

 

分类:

技术点:

相关文章:

  • 2021-12-20
  • 2022-12-23
  • 2021-12-10
  • 2021-11-30
  • 2022-12-23
  • 2021-11-01
  • 2021-12-10
猜你喜欢
  • 2021-11-13
  • 2021-12-20
  • 2021-11-03
  • 2021-08-25
  • 2021-11-03
相关资源
相似解决方案