拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 python爬虫实体——基于python实作有道云翻译界面

python爬虫实体——基于python实作有道云翻译界面

白鹭 - 2022-02-10 1992 0 0

# 分析包
# 分析post请求中自变量
# 使用python模拟lts、sign、salt自变量运算
# 执行结果
> > 1、按F12对网页进行分析,填写内容后自动翻译的功能一般是通过ajax实作的,所以可以有目的的对xhr包进行筛选,如果不知道这个点也可以一个个包进行查看分析,找包里面有需要翻译的内容和翻译结果

 

 

 

 

> > 2、分析发送请求中自变量的自变量,发送两次请求也就是翻译两次,对两次的包进行分析,可以发现每次发送的请求中salt、sign、lts的资料都不同,所以该网站可能是通过js对这些资料进行了处理

> > 3、寻找到这些自变量运算的程序,点击Initiator(表示连接由谁发起),找到另一个包,在该包中分析salt、lts、sign运算程序

 

 

> 这里需要一些js知识,但一般学过其他语言也可以很清楚发现 lts是时间戳
> salt是在==时间戳后面==随机加上一个0-9的数字
> sign是对“fanyideskweb”+ e + i +"Y2FYu%TNSbMCxc3"进行==hash==运算,然后回看发送请求中sign的自变量,发现他是16进制,所以最终结果我们也要以16进制展现
> e是我们输入的需要翻译的内容,i和salt相同 看不懂代码的话可以复制代码到console中看运算结果,例:

 

 


==e==可以通过设定断点来判断,断点设定好后,再翻译一次,然后把鼠标箭头放在e上,可以很明显的发现e的取值与我们输入的内容相同

 

 

到现在,我们把发送post请求需要的所有自变量找到了,然后就是用python模拟这些自变量的运算,

> > 4、模拟lts、salt、sign自变量运算

模拟lts,lts是时间戳
使用time模块就行了
```python
lts = int(round(time.time()*1000))

```
模拟salt,salt是时间戳后面加上一个0-9的随机数
```python
salt = str(lts) + str(random.randint(0,9))
```
模拟sign,需要使用到hashlib库(自带的库不用安装)

```python
#创建hash物件
md5 = hashlib.md5()
#向hash物件中加入需要hash运算的字符串
n = 'fanyideskweb' + self.kw + salt + 'Y2FYu%TNSbMCxc3t2u^XT'
md5.update(n.encode())
#转换成16进制
sign = md5.hexdigest()
```
5、执行结果

 

 

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *