59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
|
#!/usr/bin/env python
|
||
|
import sys
|
||
|
from optparse import OptionParser
|
||
|
|
||
|
from .__version__ import __version__ as VERSION
|
||
|
from .webtech import WebTech
|
||
|
|
||
|
|
||
|
def split_on_comma(option, opt_str, value, parser):
|
||
|
setattr(parser.values, option.dest, value.split(','))
|
||
|
|
||
|
|
||
|
def main():
|
||
|
"""
|
||
|
Main function when running from command line.
|
||
|
"""
|
||
|
parser = OptionParser(prog="webtech", version="%prog {}".format(VERSION))
|
||
|
parser.add_option(
|
||
|
"-u", "--urls",
|
||
|
help="url(s) to scan", type="string", action="callback", callback=split_on_comma)
|
||
|
parser.add_option(
|
||
|
"--urls-file", "--ul",
|
||
|
help="url(s) list file to scan", type="string")
|
||
|
parser.add_option(
|
||
|
"--user-agent", "--ua",
|
||
|
help="use this user agent")
|
||
|
parser.add_option(
|
||
|
"--random-user-agent", "--rua", action="store_true",
|
||
|
help="use a random user agent", default=False)
|
||
|
parser.add_option(
|
||
|
"--database-file", "--db",
|
||
|
help="custom database file")
|
||
|
parser.add_option(
|
||
|
"--json", "--oj", action="store_true",
|
||
|
help="output json-encoded report", default=False)
|
||
|
parser.add_option(
|
||
|
"--grep", "--og", action="store_true",
|
||
|
help="output grepable report", default=False)
|
||
|
parser.add_option(
|
||
|
"--update-db", "--udb", action="store_true",
|
||
|
help="force update of remote db files", default=False)
|
||
|
parser.add_option(
|
||
|
"--timeout", type="float", help="maximum timeout for scrape requests", default=10)
|
||
|
|
||
|
(options, _args) = parser.parse_args(sys.argv)
|
||
|
options = vars(options)
|
||
|
|
||
|
if options.get('urls') is None and options.get('urls_file') is None and options.get('update_db') is None:
|
||
|
print("No URL(s) given!")
|
||
|
parser.print_help()
|
||
|
exit()
|
||
|
|
||
|
wt = WebTech(options)
|
||
|
wt.start()
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|