这次爬取的是一个爬虫的练习网站,主要是JS的加密,先看一下网站的这几加密的介绍
主要是AJAX的一个请求,那我们可以直接开始了。
因为主要是AJAX的请求,我们看一下xhr的加载就可以了。
这里有两个请求,点开分别看一下就知道我们主要是需要第一个请求了。
第一个链接返回的是一个JSON。我们可以看到他的参数一共有三个,page肯定就是页数,t看样子应该是一个时间戳,主要就是sign的生成。我的思路是先全局搜索一下sign。
一共是有三个页面包含这个参数的,点进去搜索了一下sign,发现第二页页面只有一个结果,还和我们不是很匹配,那我们重点搜索一下第一个和第三个页面。但是我刚开始发现的是,搜索的结果并不是那么友好。可以说几乎没有什么有价值的提示。很为难了。
我通常情况下面对这样的情况就会放弃了,世上无难事,只要肯放弃。
哦!!!不 。通常这种情况下还有很多的办法,我这里是手动加一个xhr的断点,可以看到这个xhr的地址是
http://glidedsky.com/api/level/web/crawler-javascript-obfuscation-1/items?page=2&t=1599897673&sign=749c440ed7ecc8f976869aa73d9588f140fba7dd
可以在浏览器的xhr 的地方手动去添加
只需要复制其中一部分就可以了。然后去刷新页面
这里是对堆栈信息,可以一步一步去挖。当点到第四个时候就出现了。
这里就很清楚了,先获取main下面的class为container的元素,在查找t的属性。
然后用这个值去减去99 在除以99 之后去整数
sign = sha1('Xr0Z-javascript-obfuscation-1' + t);
再用这个字符串加上这个整数去sha1加密之后就得到了所需要的数据。
可以再控制台验证一下。
最后验证是成功的,到这里几个JS的解密就算是完成了。剩下的就是去循环获取每页的数据了。