旅行数据 _sn 的逆向生成逻辑

最近公司需要旅行数据的抓取,研究了半天,发现首页很容易,没有任何限制,那就写程序吧,详情页发现不行解析不出来,抓取下发现是加速乐,真是麻烦,查了些资料,发现页面每个模块都是一个接口,接口有个_sn知不知道哪来的,看着不长,不是base64,搞不清楚啊。慢慢追吧(查到一个朋友些的方法,但是不是一个接口,搞不清楚代码的参数顺序,所以发现不通用)。

打断电,追,cA(cv, l, c, x); 还能看到明文。

最核心的就是断点的位置,进入正确的断电能看到一个大的数组。

一步步追踪能看到一个熟悉的字符了。

这个js里的变量名和调用的变量都是这个数组里的。慢慢研究,慢慢追能看到 加密前的字符串

追到最后能看到加密后的字符串,但是长度不够,后面获取一个 2,多少

运行完发现和前面的内容类似了。

最后这块可以还原成python的代码,但是重点在于 data字符串的顺序。

import hashlib
def get_params(page=1, Mddid=None):
	"""
	获取params参数
	:param page: 页码
	:param iMddid: 景点id
	:return: params参数
	"""
	# 创建一个md5对象
	m = hashlib.md5()
	# 将字典转换为JSON格式的字符串并传入md5对象
	ts = str(int(time.time() * 1000))
	data = {
		'_ts':str(int(time.time() * 1000)),
		'mddid':f'{Mddid}',
		'page':f'{page}',
		'type':'2',
	}

	salt = "c9d6618dbc657b41a66eb0af952906f1"
	u = (json.dumps(data, separators=(',', ':')) + salt).encode()
	m.update(u)
	# 获取md5加密后的十六进制字符串
	data.update({"_sn": m.hexdigest()[2:12]})
	return data

有问题可以一起谈论

微信号:liu_yue_yang 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值