这个是我很久之前写的代码了,只是一小块的调用脚本demo
我简单修改了下代码 增加了10s的等待时间用于生成报告
最好的方式是去下面我提供的资料找到一个获取报告状态的接口来进行判断,而且代码是python2的 要注意
如果有问题可以看简单打印下下面的状态,参数等调试,再根据自己的awvs看下。
还有我下面提供的资料有很多,这个脚本的难度主要在
1.不知道接口,可以通过下面的资料或者自己看awvs请求找到
2.不熟悉流程,简单用下,脚本只是自动化

流程:

创建任务->启动任务扫描->获取扫描状态完成->生成报告->下载报告

# -*- coding: utf-8 -*-
import requests
import json
import timeimport sys
reload(sys)
sys.setdefaultencoding('utf8')requests.packages.urllib3.disable_warnings()tarurl = "https://127.0.0.1:3443/"
apikey="1986ad8c0a5b3df4d7028d5f3c06e936c82b87e6efe0740df81a3f1f82a1e5e82"
headers = {"X-Auth":apikey,"content-type": "application/json"}def addtask(url=''):#添加任务,返回任务iddata = {"address":url,"description":url,"criticality":"10"}try:response = requests.post(tarurl+"/api/v1/targets",data=json.dumps(data),headers=headers,timeout=30,verify=False)result = json.loads(response.content)print('add_tesk.....')print(result)print('target_id: '+result['target_id'])return result['target_id']except Exception as e:print(str(e))returndef startscan(task_id):#创建扫描,返回扫描iddata = {"target_id":task_id,"profile_id":"11111111-1111-1111-1111-111111111111","schedule": {"disable": False,"start_date":None,"time_sensitive": False}}try:response = requests.post(tarurl+"/api/v1/scans",data=json.dumps(data),headers=headers,timeout=30,verify=False)result = response.headersprint('start_scan....')print(result)scan_id = result['Location'].split('/')[4]return scan_idexcept Exception as e:print(str(e))return#
def get_scan_session(scan_id):#获取scan_session_idtry:response = requests.get(tarurl+"/api/v1/scans/"+scan_id,headers=headers,timeout=30,verify=False)result = json.loads(response.content)print('get_scan_sessoion...')print(result)scan_session_id = result['current_session']['scan_session_id']print('scan_session_id: '+scan_session_id)return scan_session_idexcept Exception as e:print(str(e))returndef get_scan_gk(scan_id,scan_session_id):#有扫描状态等很多信息#获取扫描概况try:response = requests.get(tarurl+"/api/v1/scans/"+scan_id+'/results/'+scan_session_id+'/statistics',headers=headers,timeout=30,verify=False)result = json.loads(response.content)print('get_scan_gk...')print(result)print('获取扫描概况包括状态: .............')print('status: '+result['status'])return result#next_runexcept Exception as e:print(str(e))returndef get_report_url(scan_id):# 生成scan_id的扫描报告data = {"template_id":"11111111-1111-1111-1111-111111111112","source":{"list_type":"scans","id_list":[scan_id]}}try:response = requests.post(tarurl+"/api/v1/reports",data=json.dumps(data),headers=headers,timeout=30,verify=False)result = response.headersprint(result)report = result['Location'].replace('/api/v1/reports/','/reports/download/')print(report)return tarurl.rstrip('/')+report+'.html'except Exception as e:print(str(e))returndef down_report(url):r = requests.get(url, verify=False)with open("report.html", "wb") as code:code.write(r.content)def scan(url):#创建任务,获取任务idtarget_id = addtask(url)#启动扫描,获取扫描idscan_id = startscan(target_id)time.sleep(2)#获取扫描会话idscan_session_id = get_scan_session(scan_id)#获取扫描状态:gk = get_scan_gk(scan_id,scan_session_id)while gk['status'] !='completed':time.sleep(10)gk = get_scan_gk(scan_id,scan_session_id)print('没有完成扫描: status: '+gk['status'])print('完成扫描........')print('获取报告')report_url = get_report_url(scan_id)print('报告地址: '+report_url)time.sleep(10)# 这里我只简单的等待了10s 可以参考下面的一些资料# 我记得是有个获取报告状态的接口 通过这个接口去判断更好down_report(report_url)print('报告保存完成....')if __name__ == '__main__':scan('http://xxxx')

其中有扫描类型id, profile_id 就是1111-1111那个
详细的扫描类型和对应的id:
https://github.com/h4rdy/Acunetix11-API-Documentation/blob/master/Document/Scans/main.md

其中报告模板类型id,template_id 也是 11111-111的
详细的类型和对应id:
https://github.com/h4rdy/Acunetix11-API-Documentation/blob/master/Document/Reports/main.md

参考:
curl
https://blog.csdn.net/qq_31497435/article/details/64441474

批量
https://im1gd.me/2017/05/25/AWVS/

很完整还有代码解释
http://0cx.cc/about_awvs11_api.jspx

批量
https://www.52pojie.cn/thread-610851-1-1.html

非官方API 很详细
https://github.com/h4rdy/Acunetix11-API-Documentation

csdnn上别人总结的文档很好很详细。
https://download.csdn.net/download/lonely09baby/9977912?web=web

python操作AWVS11创建扫描并下载报告相关推荐

  1. python识别文字软件_|python图片文字识别扫描工具下载免费版 - 欧普软件下载

    python图片文字识别扫描工具是一款文字识别软件,软件基于Python和百度识别接口设计而来,可快速识别图片中的文字,写入TXT文件,支持快捷键F1截屏,虽说是基于命令行的操作,但是操作也算简单,需 ...

  2. python虚拟环境安装包_Python虚拟环境的创建和包下载过程分析

    为什么使用虚拟环境 因为直接在真实环境进行安装python的包会造成环境之间的污染,因此需要创建虚拟环境,原则上每一个项目都需要有一个独属于自己的虚拟环境 Python项目的每次运行都需要启动环境,如 ...

  3. Python操作Memcached

    Memcached是一个高性能的分布式内存对象缓存系统,用于动态WEB应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态,数据库网站的速度.Memcached基于一 ...

  4. Python操作Memcache

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  5. Python操作Redis和Memcached

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  6. 使用Python操作Jenkins(创建,构建,获取Job日志和报告)

    文章目录 使用Python操作Jenkins(创建,构建,获取Job日志和报告) 模块安装 使用前准备 模块使用方法 1. 初始化Jenkins连接 2. Job基本操作 2.1 创建Job 2.2 ...

  7. python 笔记 之 sqlalchemy操作数据库-创建表

    2019独角兽企业重金招聘Python工程师标准>>> ''' pip install SQLAlchemy 操作数据库-创建表 ''' import sqlalchemy''' s ...

  8. 26.如何使用python操作我们自己创建的docker image呢?

    因为逻辑复杂 我们建个文件来 python #是单行注释 '''是多行注释 或者""" 我们想使用python来操作docker 那么就要一个api https://gi ...

  9. python的ppt报告_看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!...

    一.导读 大家好,今天依旧是Python办公自动化基础系列,在之前我们分别详细讲解了 今天本文将基于第三方库pptx,详细讲解如何使用Python操作Office全家桶最后一位--PPT. 二.安装 ...

最新文章

  1. 添加摇头刷脸_小区门禁系统开始刷脸的时代,你准备好了吗?
  2. 【图论】用一道题从本质上讲清楚Floyd算法
  3. boost::spirit模块实现从一个包含键/值对的容器中生成输出的测试程序
  4. 127.0.0.1和0.0.0.0地址的区别 | 文末送书
  5. native react 更新机制_react-native热更新全方位讲解
  6. MySQL查询表的所有列名,用逗号拼接
  7. 百度地图标点点击变色_原神wiki地图工具,原神全地图资源标记全览
  8. ES6学习笔记 -- 尾调用优化
  9. Window10下让自己开发的自启动程序支持拉起一个图形化软件
  10. delphi与python_Delphi与Python结合之二
  11. LNode *和LinkList的小区分
  12. 设备管理——Spooling技术原理
  13. spool模式导出数据库指定表的数据到Excel
  14. 计算list的字节数/mb数
  15. Java枚举详使用解
  16. WPF 项目开发入门(一) 安装运行
  17. 仿短信验证码连续输入
  18. 物联网卡是否正规卡,有什么功能?
  19. AHT10温湿度传感器总结
  20. 在线新闻推荐网 Python+Django+Mysql开发技术 基于用户、物品的协同过滤推荐算法 个性化新闻推荐系统 协同过滤推荐算法在新闻网站中的运用 个性化推荐算法、机器学习、分布式大数据、人工智

热门文章

  1. Python贪吃蛇小游戏教程
  2. 【系统分析师之路】2008年上系统分析师下午论文真题
  3. spark和shark
  4. 大一python题库及答案,大一python期末必考题
  5. CAN协议的学习与理解
  6. Python:请输入一段信息,并计算这串消息的信源熵
  7. 【Java编程】02_面向对象
  8. Python使用pd.read_excel()报错Exception has occurred: ImportError, Missing optional dependency ‘openpyxl‘
  9. 计算机系统基础(一)
  10. Vijos P1389婚礼上的小杉