善融商城这个月上货了一些大家“喜闻乐见”的商品,而且还没有溢价,有利润空间自然这部分商品就会招到哄抢,没库存那是必须的。
因而我尝试去分析了下,以下作为过程记录,供参考。
首先,在浏览器进入商品页面,大大的红色“到货提醒”直接怼过来,不用多想这提醒指望不上。
麻利地按下F12并刷新一下,发现以下url比较可疑,因为它含有“ProDetail”这种关键字眼。
http://buy.shanrongmall.com/client/ajaxProdDetail.jhtml?skuId=null&productId=******&creditpaymentId=&isJointTeamBuyType=&ts=2023041602224
查看它的返回数据,是一段Json信息,逐项给它展开,发现了字段“storage”,对应的值也为0,那应该大差不差了。
那再返回去看url的组成和请求数据,最明显的就是url后面的ts=2023041602224(这是我比较早就测试了,所以时间比较早)。
很明显它是个跟时间有关的参数,一般来说它应该是要最新的时间,但这个url用旧的时间也是能够返回数据,也懒得去验证ts参数是否影响数据的准确性。既然都到这一步了,肯定想再看看ts是怎么来的。
因为ts是变化的,所以url应该是通过字符串构造出来的。以url中的“ajaxProdDetail”作为关键词搜索,得到以下两个结果,第一个就是url本身,另一个di就是构造url的js文件。
双击它跳转到js代码界面,往下看就发现了ts所在位置
可见ts的来源就是这行代码:
'ts': (new Date()).toJSON().match(/\d/g).slice(0, 13).join('')
老样子,不放心就复制到控制台中运行一下:
从结果看显然是对的。
简单地理解下ts的构造函数,就是获取ISO 8601日期格式时间,然后正则取所有数字,最后取前13位。
以我现在的时间为例,取ISO时间得到:
2023-04-19T11:06:41.000Z
取所有数字得到:
20230419110641000
再取前13位得到:
2023041911064
然后就组合一下url,搞定啦~收工。
注:未验证ts参数的必要性,仅做自己js逆向的学习记录,也给有需要的人一点参考。
- End -
更多精彩文章
点击下方名片关注【偶尔敲代码】
点亮小花 让更多人了解