如果我们有几十万个网站需要检测,该如何实现?手工检测吗?当然不行,这是非常不现实的,只有自动化才是正确的选择,那么如何自动化实现?
对于几十个网站的目标,如果要对所有网站进行扫描,每一个网站的扫描都需要比较长的时间,而且,其中难免有很多无效网站,如果我们可以将无效网站排除,那么我们就可以节省扫描的时间,从而提升检测效率。
自动化检测,离不开自动化的工具,今天来为大家分享一款命令行版的 HTTP 工具集 httpx,项目地址:
https://github.com/projectdiscovery/httpx
该工具使用 go 语言编写,安装方式也比较简单,需要提前安装 go 环境,安装完成之后需要换成国内的代理,否则安装的时候,会出现连接超时的问题,安装命令如下:
Windows 下安装时报错,然后执行下面的命令之后,再进行安装就可以了:
go env -w GOSUMDB=off
安装完成之后,查看帮助信息:
使用场景一:检查网站是否存活
将网站列表保存为一个文本,比如:
最简单的命令,无需加任何参数:
type domain.txt | httpx (windows)/ cat domain.txt | httpx (Linux)
或者
httpx -l domain.txt
无法访问的网站,在结果中未进行显示:
这个工具在 linux 下使用显示会比较好看,如果我们想要显示连接失败的网站,可以使用命令:
httpx -l domain.txt -silent -probe
使用场景二:获取网站 Title 、状态码等
通过获取网站的 Title 和状态码,可以排除大量非正常网站,比如 404、500 等状态码,还有很多域名指向同一个网站,然后通过网站标题可以去掉大量重复的网站域名,从而提升检测的效率。
httpx -l domain.txt -title -tech-detect -status-code
对于有大量无法访问网站的情况,默认的超时时间是 5 秒,想要提升速度,可以将超时时间,比如:
httpx -l domain.txt -title -tech-detect -status-code -timeout 2
目标多的情况下,可以结合多线程技术,使用参数 -threads:
httpx -l domain.txt -title -tech-detect -status-code -timeout 2 -threads 30
如果还想获取目标网的服务器信息,可以使用 -web-server 参数:
httpx -l domain2.txt -title -tech-detect -status-code -threads 30 -web-server
使用场景三:使用域名作为目标,获取网站信息
当我们收集了很多域名,并没有生成网站的链接,httpx 通用可以检测域名上搭建的网站信息,比如下面的域名:
通用使用获取 title 的命令:
httpx -l domain2.txt -title -tech-detect -status-code -timeout 2 -threads 30