js逆向分析之库存信息

发布时间丨2022-03-05 12:54:50作者丨zhaomeng浏览丨30


Js逆向分析是爬虫开发的一道拦路虎,需要拥有丰富的逆向经验以及爬虫开发的经验。但在现在的网站设计中并不是所有的网站都存在js加密的(也并不是所有的前端开发都具备反爬虫的能力)。本篇博文记录分享的是存在js分析但不存在js加密的一个国外网站(国外公司的但国内也能访问)。写这篇文章的初衷在于,这个网站之前有编写过爬虫代码,当时呢,在页面分析上没有发现存在库存的提取信息,分析发现这个库存信息也不存在于异步请求中(即Ajax),就暂时将它的值设置成了空。后面老板使用系统的过程中,发现还是需要有这个网站的库存信息的,就让我给加上。那么本着“所见即所得”的原则,我再次对网站进行了分析。分析过程如下:

网站数据源:Enamine

第一步:页面分析,发现页面中的库存信息存在elements结果中:如下图:

但源代码里面经过搜索分析没有库存信息(In Stock),分析异步请求也没有库存这个值,反爬虫经验告诉我,可能存在于js代码中。

第二步:控制台搜索In Stock结果如下:

经过分析发现存在于js代码中,点开进入该js文件在进行分析,结果如下:

到这里凭着经验可以确定该库存信息是经过js处理的,上图中的运算详情对了解或熟悉js三目运算的小伙伴应该就能明白了。大概的意思就是inStock为真true即前端显示“?”后面的,为假false就是“:”后面的。分析到这里基本就知道了他的库存信息的设置与inStock变量参数有关。因此下面重点分析它。

第三步:控制台搜索分析参数inStock,结果如下图:

分析搜索结果可以发现js代码中果然存在库存的设置代码,点开进入js源码分析如下图所示:

如上面的代码,经过分析我们可以提炼出对我们有用的代码如下,代码里面有详细的对库存的设置,但是这里的比较运算的参数我们并不知道,如下图所示:

第四步:经过前面三步的代码分析基本已经可以得出库存js设置的一个算法。只需要找到相应的代码就可以使用python代码还原即可;这里结合前面的价格接口数据的返回数据,就一下子明白了其中参数的作用:如下图:

数据如下图:

到此结合前面的库存算法可以得出如下结论:当接口返回的数据stock>amount的参数值时,显示In Stock 否则显示out of stock!

到此库存信息js分析获取完成!

文章原创!未经允许不得转载!

推荐文章:NodeJs破解AES参数加密