利用 selenium 和 PhantomJS 写自动渗透工具

想写一个自动渗透工具很久了,毕竟手工测试会消耗大量的时间和精力。
一个全自动的渗透测试工具,无异于一个上好的爬虫+一个上好的判断规则。
但是很多时候,我们需要监听浏览器的 Network 请求,获取一个页面多所有子请求,然后分析每个url。
这是一般的源码分析爬虫无法获取的,很多ajax请求并不能很好的通过正则来获取出来。
这个时候就需要一个基于webkit的爬虫了,起码是带js引擎的。
刚开始入眼的是基于 QtWebkit 的 Ghost.py ,无奈这个环境配置的蛋疼不说,到最后总是在读取复杂页面时候报错。
后来找到了selenium,自动测试利器啊,首先自然是 selenium + chrome,但是每打开一个页面总是有一个chrome的ui弹出来,这点是首先比较蛋疼的,其次关于Network请求的监听,我竟然是用了一个http代理进行的,结果有时候遇到 Connection:Keep-alive 也挂掉了,主要体现在卡在 driver.get() 上,无法获取源码进行下一步操作。
最后换了个浏览器,PhantomJS,解决了这个问题
解决办法是

dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.resourceTimeout"] = 10
dcap["phantomjs.page.settings.loadImages"] = False
driver = webdriver.PhantomJS(executable_path='/myJobs/myHackTool/phantomjs',desired_capabilities=dcap)

当然机智的我最后也没有用神器的http代理获取子请求的办法,获取的办法是:

reqMonitoring = json.loads(driver.get_log("har")[0]["message"])["log"]["entries"]

神器还没写好,但是能够写出这样的爬虫,觉得已经是成功的一半了,跑了几圈,感觉不错,能够挖出大量的url。
自然一个好的爬虫还需要基于搜索引擎的挖掘,哎哟卧槽我给忘了,记录到这儿,写代码去了。