有道词典

一、分析

1、数据不在页面上,猜测进行js请求

2、对js进行查找

3、对比

``
i: dog
from: AUTO
to: AUTO
smartresult: dict
client: fanyideskweb
salt: 16361336785104
sign: 07f8b61a6f0174e3629fe5d58eca26a9
lts: 1636133678510
bv: 4a2c81385a7f2e299f7b17973e387445
doctype: json
version: 2.1
keyfrom: fanyi.web
action: FY_BY_REALTlME

i: cat
from: AUTO
to: AUTO
smartresult: dict
client: fanyideskweb
salt: 16361337450419
sign: 9963acc8b87ca11ee33bc7a9ea8f6b74
lts: 1636133745041
bv: 4a2c81385a7f2e299f7b17973e387445
doctype: json
version: 2.1
keyfrom: fanyi.web
action: FY_BY_REALTlME

``

其中只有salt、sign、lts不同其他的都相同

4、定位

5、js代码转换为python

时间戳

import time
print(int(time.time())

md5加密

from hashlib import md5

str = "123456"
md = md5()   #获取一个md5加密算法对象
md.update(str.encode())  #制定需要加密的字符串
res = md.hexdigest()  #获取加密后的16进制字符串
print(res)

随机数

import random
 
print(random.randint(0,9))  # 生成 0 ~ 9 之间的随机数

6、salt和sign用代码写出来

二、代码

from hashlib import md5
import random
import time
import requests

url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"

headers = {
	
	"Cookie": "OUTFOX_SEARCH_USER_ID=752281918@10.169.0.102; OUTFOX_SEARCH_USER_ID_NCOO=1595983331.8910015; _ga=GA1.2.1831723733.1622359908; JSESSIONID=aaabIn-Rp5GG57Q1TDZZx; ___rl__test__cookies=1636172237405",
	
	"Referer": "https://fanyi.youdao.com/",
	"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40",
	
}


word = input("请输入要翻译的单词:")
ts = str(int(time.time()*1000))
salt = ts + str(random.randint(0,9))
str_ = "fanyideskweb" + word + salt + "Y2FYu%TNSbMCxc3t2u^XT"

md = md5()
md.update(str_.encode())  #制定需要加密的字符串	
sign = md.hexdigest()  #获取加密后的16进制字符串

data = {
  'i': word ,
  'from':'AUTO',
  'to': 'AUTO',
  'smartresult': 'dict',
  'client': 'fanyideskweb',
  'salt': salt,
  'sign': sign ,
  'lts': ts ,
  'bv': '4a2c81385a7f2e299f7b17973e387445',
  'doctype': 'json',
  'version': '2.1',
  'keyfrom': 'fanyi.web',
  'action': 'FY_BY_REALTlME'
}

html = requests.post(url = url,data = data,headers = headers)
print(html.text)

html.close()
posted @ 2021-11-06 12:37  lnterpreter  阅读(174)  评论(0编辑  收藏  举报