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

本文详细解析了如何通过Python模拟一个网站的Ajax翻译请求,重点在于理解并复现lts(时间戳)、salt(随机数)和sign(哈希运算)参数的生成过程。通过时间戳、随机数生成和MD5哈希函数,揭示了如何构造并验证POST参数。
摘要由CSDN通过智能技术生成

分析包

分析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模块就行了

lts = int(round(time.time()*1000))

模拟salt,salt是时间戳后面加上一个0-9的随机数

salt = str(lts) + str(random.randint(0,9))

模拟sign,需要使用到hashlib库(自带的库不用安装)

        #创建hash对象
        md5 = hashlib.md5()
        #向hash对象中加入需要hash运算的字符串
        n = 'fanyideskweb' + self.kw + salt + 'Y2FYu%TNSbMCxc3t2u^XT'
        md5.update(n.encode())
        #转换成16进制
        sign = md5.hexdigest()

5、执行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_46738968

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值