最近忙着当码农,不debug也没遇到有意思的案例,只能分享个以前发现的漏抓案例~
案例URL: https://lvyou.baidu.com/main/event/rank
说是漏抓,实际上是动态分析超时导致没有结果返回。
动态爬虫里触发行内绑定事件的代码如下:
逻辑是遍历所有的节点的所有属性,执行以on开头的属性值,即 onclick=alert(1) 这种。
但是抓取上面案例的时候,发现一直没有返回结果,使用伟大的print调试法打印了触发的具体内容后,发现页面一直在不停的触发同一个事件。
for循环竟然会失效?
仔细看下页面源码:
登录应该是用JSONP来实现的,每次点击登录都会生成一个script标签,而且这个标签恰好还插入在了登录标签前面。
遍历数组的过程中,也在不断扩展这个数组。这就是问题的关键。
那应该怎么解决呢?本帅选了个比较蠢的方法:
看起来不是很优雅,或许你还有更好的方法?