Delphi版多线程网站目录扫描器:CatScan

这是一款速度略低于御剑的一款扫描器,好吧,我为什么说略低,因为我是抱着准备在速度上超越御剑而写的,同样也是我在Delphi多线程的学习中的成果。

简介:

一直以来我都对在Delphi的多线程中怎么样简单的去调度任务队列十分迷糊,用全局变量?显然这种方法并不适合(网上给出的方法应该大部分是用线程池)。

之后又在youtube上看了一位中东网友的一段视频,他是介绍多线程操作数据库,通过EOF来让任务循环执行下去,这样结合我前段时间学习的Python多线程方面的Queue,其实Delphi中同样也有queue类型,之后结合泛型顺利解决。

下面放上一张截图吧:

补充:

各位不要被界面迷惑了,另外两个功能我暂时没有写,速度的话因为我网速不行,所以上不来,速度我测试过,应该比御剑慢一点,另外下面说一下我写程序的时候遇到的一些细节问题。

总结:

首先我一开始是使用idhttp来提交head请求的,但是我发现速度略慢,而且请求中包含了一个"Accept-Encoding"无法去除,本着去掉一个多余的字符是一个的原则,我换上了ICS,顺利解决该问题,速度较为提升。

其次是ICS的一些关于https相关的内容了,大体就是在安装组件之前开启在编译安装,之后才能使用,不过给的demo似乎不需要。

最后根据抓包情况来看也显示了速度略低这个我一直强调的词语,御剑是通过开启20个socket请求,然后不停的去发包,而我使用ICS的话是开启socket,请求之后断开,再去循环,相较来说就会变慢了(在这期间我也尝试过用原始socket来写,但是问题颇多,不符合我一贯偷懒原则,所以socket版也一直是半成品状态.)。

另外一个我提起的是御剑在扫描一些自定义404页面的网站的时候会过滤,我根据网上给出的方法也同样写了该功能,这样会减少误报吧,之后可以自定义UA这个并不是什么难实现的就不多说了。

下载:

代码我已经放到github上了,有兴趣可以看一下,相互学习,代码下载、程序下载(自带一个3M的字典文件,Delphi XE编译之后略大,UPX压缩,不放心可以自己下载源码编译)仅供学习

20140325补充:
可以采用"Connection":"Keep-Alive"长连接的方式加快速度。

没有评论: