nps
介绍
nps 是一款高性能的网络代理扫描器( scan proxy),同时支持 http socks5 代理扫描。至于为什么编写这一款扫描器是因为目前网上的扫描器不是很满足我的需求,所以就自己写了。
本软件,应该算是我编写第二版软件了,第一版,技术站对别人来说应该是比较复杂但对我来说比较简单,使用 shell 脚本 masscan curl redis go 等完成。颇有几分草稿的味道。在使用过程用发现了不少问题,而这些问题为了更好的造就本软件提供了坚实的基础。
该类型的软件其瓶颈在于对方的网络对我发起的请求进行的限制,(内网扫描不会存在限制的情况)。一般来说扫描类的软件都会以极高的速度发起请求,而正常情况下请求数是不会这么高的。所以我将请求数和超时时间联系起来让请求均匀的分布在超时时间内,这样就不会出现,请求瞬间发起,然后程序在哪里傻等,等请求完成后再发起因的一轮请求。就算是使用进程池也不能避免这种暴涨态。然而这种暴涨态,很容易触发对方监测。导致自己的扫描遭到对方的屏蔽。一旦被被别人发现那再高的效率都等于零,所以加了等待机制单位为微秒,这也使得本软件的每秒最大请求数不能超过 一百万。
本软件直接对互联网的 IP 或 IP 段进行扫描。至于为什么这样干,一是觉得好玩二是我之前做过数据爬取类的软件,对方一更新我就需要跟进,有的网站更新比较猛一个月更几次。当我不发布新软件时对方就不更了。这就更蛋疼了。所以我决定从更深的层次出发,直接解决问题。
安装
本软件使用 go 进行编写,所以直接 go get
就好了
go get github.com/elissa2333/nps
使用
如果不加任何参数的话会打印帮助信息,类似于这样
Author: niconiconi
由 go 编写的一款高性能的网络代理扫描器,可同时扫描 socks5 代理和 http 代理,每秒可发起到达一百万次的请求。
本软件可以对 单 IP 或 IP 段进行扫描
例如:
nps 8.8.8.8
或
nps 8.8.8.0/24
命令行参数:
help 查看帮助信息
version 查看版本信息
-m int
最大超时时间,单位为秒 (default 10)
-o string
输出文件文件名 (default "output.txt")
-p string
扫描端口范围 (default "0-65535")
-v 显示详细信息
-w int
每秒请求数,最多不能超过 1000000 (default 500)
其实基本使用我在 help
里已经写的比较清楚了,但是为了方便大家的理解我这里还是再写一下
本软件支持两种格式的 IP 地址。
单 ip 式:
nps 8.8.8.8
ip 段式:
nps 8.8.8.8/24
当然也可以加上 flag 参数调节程序的工作状态
例如
nps -v 8.8.8.8
这会将每一个扫描的 端口打印出来,我觉得太乱了,所以直接隐藏,需要的话可以使用 -v
进行开启
使用 -o
可改变程序输出的文件名,例如
nps -o elissa.txt 8.8.8.8
既然说到了输出那就再说一下输出的文件内容如果 开头带 http://
则为 http 代理,如果是 socks5://
则为 socks5 代理
格式类似于这样
http://127.0.0.1:2333
socks5://127.0.0.1:2334
一行一个,当下一次进行扫描时,输出的文件如果是同一个的话会覆盖而不是添加。
使用 -w
可以规定每秒发起的请求数,这个数不能过大,看你的网络和对方的的网络进行设置。太高会被别人屏蔽,效率等于零,太低那就太低效了。
nps -w 1000 8.8.8.8
使用 -m
可以规定超时时间,在网络劣质的情况下可增加超时时间进行解决,在连接效果比较好的情况下可适当的减少超时时间
nps -m 20 8.8.8.8
当然这些参数是可以混合使用的
例如
nps -v -p 1-65535 -m 20 -o elissa.txt -w 1000 8.8.8.8/24