ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python爬虫实例——基于python实现有道云翻译接口

2022-01-05 22:30:36  阅读:203  来源: 互联网

标签:lts 运算 python 有道 爬虫 sign 参数 salt


# 分析包

# 分析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、执行结果

标签:lts,运算,python,有道,爬虫,sign,参数,salt
来源: https://blog.csdn.net/Python_xiaowu/article/details/122333606

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有