def get_scan_info(target_id):
try:
response = requests.get(AWVS_HOST + "api/v1/scans", headers=AWVS_API_HEADER, timeout=30, verify=False)
results = json.loads(response.content.decode('utf-8'))
logger.info(results['scans'])
for result in results['scans']:
if result['target_id'] == target_id:
logger.info(target_id)
return result
except Exception as e:
logger.critical('* %s' % e)
return
def get_status(result):
# 获取scan_id的扫描状况
try:
logger.info(result)
scan_id = result['scan_id']
response = requests.get(AWVS_HOST + "api/v1/scans/" + str(scan_id), headers=AWVS_API_HEADER, timeout=5, verify=False)
result = json.loads(response.content.decode('utf-8'))
status = result['current_session']['status']
# 如果是completed 表示结束.可以生成报告
if status == "completed":
return "completed"
else:
return result['current_session']['status']
except Exception as e:
logger.critical('* %s' % e)
return 'aborted'
def get_reports(result, subdomain):
while True:
time.sleep(15)
res = get_status(result)
if res == 'completed':
logger.info(subdomain + ', scan completed')
break
if res == 'aborted':
break
for row in results:
if row[1]:
continue
if row[2] == 'yes':
continue
subdomain = row[0]
subdomains.append(subdomain)
db.close()
except Exception as e:
logger.critical(e)
jobs = len(subdomains)
count = 0
i = 0
while True:
count = get_scans_running_count()
if count < 3:
subdomain = subdomains[i]
start(subdomain)
time.sleep(15)