python调用virustota接口api实现上传文件返回查毒结果
virustotal是一个可以检测文件与url,以及接口ip病毒的网站,如果要访问,可能要翻墙,这一就不详解了。在网上查看相关的知识的话,都是python2的代码,好多已经不能用了。因此在这里我就分享一下python3调用virustotal的api接口实现本地文件上传到该网站并返回查毒结果的功能。
这里一般是exe文件,如果有其他格式文件,就需要其他操作,这里先不讲解。
下面是实现代码,这里的apikey保密,大家可以自己去网站注册,私有的api可能要联系网站。
代码如下:
#www.virustotal.com/vtapi/v2/import requests
import jsondef getFileScanId(url,apikey,a,b):# /file/scan# /文件/扫描# 上传并扫描文件# 限制为32MBparams = {'apikey': apikey}files = {'file': (a, open(b, 'rb'))}response = requests.post(url, files=files, params=params)my_scan_id = str(response.json()['scan_id'])return my_scan_iddef getFieReportResult(url,apikey,my_scan_id):#/file/report# /文件/报告# 检索文件扫描报告#该resource参数可以是要获取最新的病毒报告文件的MD5,SHA-1或SHA-256。#还可以指定/ file / scan端点scan_id返回的值。#如果allinfo参数设置为true除了返回防病毒结果之外的其他信息。get_params = {'apikey': apikey, 'resource': my_scan_id,'allinfo': '1'}response2 = requests.get(url, params=get_params)jsondata = json.loads(response2.text)with open("jsonResult.json","w") as f:json.dump(jsondata, f, indent=4)return jsondatadef getResult(json):result = {}for k,v in json["scans"].items():result[k] = v['detected']print(result)print("一共有{0}条杀毒数据".format(len(result)))with open("result.txt","w") as g:g.write(str(result))def main():file_name = input("请输入文件名:")a = str(file_name)file_src = input("请输入文件路径:")b = str(file_src)url1 = 'https://www.virustotal.com/vtapi/v2/file/scan'url2 = "https://www.virustotal.com/vtapi/v2/file/report"#需要提供密钥,否者会出现403错误apikey = "保密"#获得文件scan_idscan_id = getFileScanId(url1,apikey,a,b)#获得返回的json结果并写入result文件#getFieReportResult(url2, apikey, scan_id)json = getFieReportResult(url2,apikey,scan_id)getResult(json)if __name__ == '__main__':main()
结果如下:
如果是False,则是安全的;如果出现了True,这可能有病毒。
没有病毒的文件:
有病毒的文件:
但有时可能会出现:
这里就是没有返回结果,为什么会这样,看一下官方的api文档的一些规则就知道了:
这段英文的意思是:
Public API限制为每分钟4个请求。
Public API不得用于商业产品或服务。
Private API返回更多威胁数据并公开更多端点。
Private API由SLA管理,可确保数据准备就绪。
原来我们的公共api只能够这样访问了,不过这些就够用了。如果大家想要一些高级功能的话,就可以联系官方,获得私有apikey,就可以获得更多功能了。
python调用virustota接口api实现上传文件返回查毒结果相关推荐
- python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...
- 上传文件返回数据提示下载
摘要: 最近项目中出现上传文件返回的json数据会被提示下载,只有在ie10+中才会出现这个问题.前端使用jQuery的插件ajaxForm提交表单,后台返回的数据格式为json.代码如下: 后端P ...
- springboot调用python脚本_Springboot实现上传文件接口,使用python的requests进行组装报文上传文件的方法...
记录瞬间 近段时间使用Springboot实现了文件的上传服务,但是在使用python的requests进行post上传时,总是报错. 比如: 1.Current request is not a m ...
- python的requests库发送携带上传文件的接口_python requests 库请求带有文件参数的接口实例...
python requests 库请求带有文件参数的接口实例 有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接 ...
- python百度网盘API分片上传实现,纯代码
client_id=您应用的AppKey client_secret=您应用的SecretKey 信息需要到百度网盘开发者信息需要自己申请,实名就可以申请. 分片放在内存中.如果文件过大,可以改放到磁 ...
- python socketserver实现服务器端执行命令 上传文件 断点续传
1 基于socketserver在服务器端实现执行cmd命令和上传文件(断点续传) 2 3 #server: 4 5 #!/usr/bin/env python 6 # -*- coding:utf- ...
- 阿里云使用idea通过hdfs api来上传文件时出现could only be written to 0 of the 1 minReplication nodes.错误
问题描述: 使用阿里云服务器,在本地windows电脑上使用idea进行hdfs api操作来上传文件时出现错误如下: org.apache.hadoop.ipc.RemoteException(ja ...
- Python+Selenium学习笔记10 - send_keys上传文件
在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...
- 手机如何看python文件大小_如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?)...
如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?) 我真的害怕read()操作,因为它使用内存. 例如,任何 ...
- php curl上传文件返回false,php curl上传文件$_FILES为空的问题
PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...
最新文章
- Android客户端捕获http请求包的方法
- BZOJ 1927 星际竞速
- ios34---GDC,dispatch_once
- 【经典回放】多种语言系列数据结构算法:队列(C版)
- HDU 6061 RXD and functions(NTT)
- LeetCode 676. 实现一个魔法字典(哈希)
- 23种设计模式之中介者模式
- java 32位_Java知识点:创建节约内存的JavaBean
- springdata和mysql_Spring Boot使用Spring Data JPA访问MySQL数据库
- 统一视角理解实例分割算法:最新进展分析与总结
- 【路径规划】基于matlab A星+改进A星的路径规划【含Matlab源码 225期】
- JDK下载安装及环境变量配置的图文教程(详解)
- 2018黑马java简历模板_2018黑马软件测试
- 企业微信和个人微信的区别是什么?
- 学科前沿讲座课程总结与感悟
- java获取连续日期天数
- java求两个非零正整数的最大公约数和最小公倍数
- 文章本天成 妙手偶得之 两句三年得 一吟双泪流
- Heartbeat+DRBD+MySQL高可用方案
- FileZilla远程上传文件失败原因和解决办法
热门文章
- Windows 入侵痕迹清理技巧
- [473]tf.nn.*()函数and tf.add()函数
- phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)
- 移动应用程序和网页应用程序_设计网站和移动应用程序的空白状态页
- word 文档密码 html,Word文档密码解决打开方法
- 异步编程举例之闹钟程序
- c语言写定时闹钟程序,定时闹钟C语言程序.doc
- 经典胶片图像效果lr预设
- 基金业绩的python分析_Python与量化多因子——聊聊Brinson业绩归因
- (数据结构)线性表(总结)——链式存储结构与顺序储存结构的优缺点