声明:如有侵权,请告知删除,谢谢。
今天我们继续查找JS的入口。
目标地址:https://www.huanhuanhuishou.com/gujia/47.html
目的:爬取该网页上的商品价格 (4670)。
工具:Chrome浏览器 + 油猴插件
第一步:打开Chrome浏览器,地址栏输入网址,并按下F12,打开调试器,切换到Network面板,再按下回车,进行访问。
这个页面加载了很多很多:
先全局搜索商品价格:4670,发现搜索不到,那只有去一个一个页面看了。
在这里,我们只查看 XHR加载的页面:
从上面往下依次看看响应内容是否有可以之处,点到第三个页面时:
响应的是一段加密后的字符,既然要在前端显示,肯定有解密的函数,这个怎么搜索,先不讲,按下图的方式打上断点:
鼠标移动到 红色箭头 处,并点击弹出的第一个位置,打上断点:
再次刷新下页面,重新加载,停在了这里:
像往常一样跟堆栈:
跟到这里时,有个 可爱的 decode 函数,我们在 这行 打上断点:
按F8运行,很快就会来到这里:
F10 单步运行,看看这个 res的内容:
看到了 有个 oldprice 字段,其值是 4670,所以这里就应该是它显示的价格了。
再次刷新重新加载页面,我们重新看看参数:
var str = decode(res, code).str_replace(["+","x2b","x2B"],[" ","+","+"])
res就是那一串加密的字符串,code在上面:
var code = xhr.getResponseHeader('content-text')
code在 响应头的content-text字段,它的值我们在控制台下看看:
按F8运行,再看看响应头里的内容:
可以看出,果然这个code值就在这里。
全局搜索,decode函数在这里:
到此,入口已找到,请读者自行扣出代码进行验证。
找这种入口比较费劲,能不能写个脚本直接定位到decode函数呢?
答案是可以的,不过得提前知道它是怎样的解密函数。也就是把之前遇到过的类似的需要解密的函数写进一个数组里,然后依次查询是否有这样的函数。(有种碰运气的感脚)
我们来看看效果:
控制台直接显示出了这个函数,双击函数名,即可跟进去。再打上断点,轻松就能Hook到。
下面看看其他的网站及效果:
1.http://ac.scmor.com/
2.https://www.aqistudy.cn/html/city_detail.html
3.https://g.hongshu.com/content/93416/13877912.html
到这里,就不一一举例了,这样我们以后遇到一个添加一个,像爆破。
调试JS是个很需要耐心的过程,关注我,让我们一起进步。