0x00 前言
趁五一结束前再更新一篇文章,我突然意识到我好像很久没发关于逆向的文章了,所以今天就来更一篇针对某鱼的sign分析,难度为简单,初学者可以看一看这篇文章。
0x01 正文
打开某鱼:

打开F12并搜点东西:

随便复制一个商品名,然后确认一下调的是哪个接口:



可以看到sign,将请求转为py代码,看看是不是sign作验证的。
复制curl格式:

访问https://curlconverter.com/:

将刚刚复制的curl语句粘贴到框里:

复制下来并执行:

调用成功,现在修改一下sign的最后一位:


执行:

确认是通过sign进行验证的,回到chrome查看请求参数:

参数有点多,直接搜固定参数appKey:

可以看到sign,打个断点验证一下是不是这里:

确认是这里,分析一下代码:

sign是用下面这段代码生成的:
k = i(d.token + "&" + j + "&" + h + "&" + c.data)
看一下d.token是什么:

c570e4c7ea83f2e23cf914ed494e3ed7
查一下请求有没有携带这个值:

看来是cookie,键为_m_h5_tk,我们把cookie清除了看看是哪个接口设置的这个键:

刷新:


确认是我们获取商品的那个接口设置的_m_h5_tk,继续看下一个参数:

j为时间戳:
j = (new Date).getTime()
h:

h为固定值appKey:

c.data:

放掉查看请求:

确认c.data为请求体,最后看一下代码把拼接后的字符串传递给的i函数内部做了什么:


说实话,这看着就像md5加密,拿上面的数据拼接加密看看是否是请求的sign。
_m_h5_tk:`47a31b745f9a96f2343a66aca3e03f72`
j:1746346593869
h:34839810
c.data:`{"pageNumber":1,"keyword":"手机","fromFilter":false,"rowsPerPage":30,"sortValue":"","sortField":"","customDistance":"","gps":"","propValueStr":{},"customGps":"","searchReqFromPage":"pcSearch","extraFilterValue":"{}","userPositionJson":"{}"}`
拼接:
47a31b745f9a96f2343a66aca3e03f72&1746346593869&34839810&{"pageNumber":1,"keyword":"手机","fromFilter":false,"rowsPerPage":30,"sortValue":"","sortField":"","customDistance":"","gps":"","propValueStr":{},"customGps":"","searchReqFromPage":"pcSearch","extraFilterValue":"{}","userPositionJson":"{}"}
放掉看一下请求的sign:

0c89316a2479ddce8fe42bffaa941bbf
md5加密刚刚拼接的字符串:

验证为md5加密。
脚本编写:

将搜索的关键字修改为电脑测试一下:

执行:

成功请求。

















请登录后查看评论内容