根据署理的Web扫描器的完成
在WEB事务上线前,QA测验阶段,可将QA的浏览器署理设到一个指定的署理中或测验pc拨入特定的vpn中,QA在测验功用的一起, 安全测验也会在后台同步完结,其优点显而易见。
该类扫描器常见的有2种:
署理式
vpn + 通明署理
本文只讲第1种,第2种的完成方法稍费事一些,一天半响的时间内写不出来,留在下篇文章中写。
架构阐明
proxy模块的完成
用户恳求数据抓取
proxy模块是在开源项目 https://github.com/senko/tornado-proxy的基础上改的,将用户的恳求与服务器的呼应数据过滤后存入了mongodb中。 我新加的代码在30 – 38行之间。
class ProxyHandler(tornado.web.RequestHandler):
SUPPORTED_METHODS = ['GET', 'POST', 'CONNECT']
@tornado.web.asynchronous
def get(self):
url_info = dict(
method=self.request.method,
url=self.request.uri
)
self.request_info = None
def handle_response(response):
if (response.error and not
isinstance(response.error, tornado.httpclient.HTTPError)):
self.set_status(500)
self.write('Internal server error:n' + str(response.error))
else:
self.set_status(response.code)
for header in ('Date', 'Cache-Control', 'Server','Content-Type', 'Location'):
v = response.headers.get(header)
if v:
self.set_header(header, v)
v = response.headers.get_list('Set-Cookie')
if v:
for i in v:
self.add_header('Set-Cookie', i)
if response.body:
self.write(response.body)
# Insert http request and response into mongodb
if self.application.scan:
url = url_info.get('url')
url_filter = UrlFilter(url)
if url_filter.filter():
http_info = HttpInfo(url_info, self.request_info, response)
values = http_info.get_info()
mongodb = Mongodb(db_info)
mongodb.insert(values)
self.finish()
body = self.request.body
self.request_info = self.request
if not body:
[1] [2] [3] 黑客接单网