import sys
import requests
from optparse import OptionParser
from threading import Thread
# 扫描类
class webDirScan(Thread):
def __init__(self, options):
Thread.__init__(self) # 调用父类的Thread函数,用于初始化线程对象
# 调用父类的构造函数来初始化,子类可以继承父类的属性和方法
self.url = options.url
self.file = options.file
def run(self):
with open("dir.txt", 'r') as f: #字典可以从SVNDigger下载
for line in f.readlines():
line = line.strip()
response = requests.get(options.url+line, options.file)
if response.status_code == 200:
print(options.url+line + " |exist")
else:
print(options.url+line + " |non_exist")
if __name__ == '__main__':
optParse = OptionParser('python WebDirScanner.py -u <Target URL> -f <Dictionary file name> [-t <Thread_count>]')
optParse.add_option('-u', '--url', dest='url', type='string', help='target url for scan')
optParse.add_option('-f', '--file', dest='file', type='string', help='dictionary filename')
# optParse.add_option('-t', '--thread', dest='count', type='int', default=10, help='scan thread count')
(options, args) = optParse.parse_args()
if options.url and options.file:
# 创建一个扫描类的线程
webDirScan(options).start()
else:
optParse.print_help()
sys.exit()
工具脚本可见如上所示
模块:OptionParser,制定运行脚本的一些参数,设置参数用
1、导入optionparser
from optparse import OptionParser
2、构造optionparser的对象
parser = OptionParser()
3、往optionparser对象中增加option
parser.add_option("-f","--file",action="store",type="string",dest="filename",help='-f参数说明信息 ')
参数说明:
action:存储方式,分为三种store、store_false、store_true
type:类型
dest:存储的变量
default:默认值
help:帮助信息
4、调用optionparser的解析函数
让用户输入的命令保存在parse_args里
(options, args) = parser.parse_args() # 用于解析命令行参数
参数说明:
options: 包含命令行参数的对象,是一个字典,其key字典中的关键字可能会是我们所有的add_option()
args:是一个包含未被解析的命令行参数的列表
parser:用于定义命令行参数的选项和参数
parse_args():根据parser对象中定义的选项和参数来解析命令行参数
参考: