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实现上传文件返回查毒结果相关推荐

  1. python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)

    python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv) 一.上传文件 上传一个图片 使用input type="file& ...

  2. 上传文件返回数据提示下载

    摘要:  最近项目中出现上传文件返回的json数据会被提示下载,只有在ie10+中才会出现这个问题.前端使用jQuery的插件ajaxForm提交表单,后台返回的数据格式为json.代码如下: 后端P ...

  3. springboot调用python脚本_Springboot实现上传文件接口,使用python的requests进行组装报文上传文件的方法...

    记录瞬间 近段时间使用Springboot实现了文件的上传服务,但是在使用python的requests进行post上传时,总是报错. 比如: 1.Current request is not a m ...

  4. python的requests库发送携带上传文件的接口_python requests 库请求带有文件参数的接口实例...

    python requests 库请求带有文件参数的接口实例 有些接口参数是一个文件格式,比如fiddler 抓包参数如下显示 这个接口的 form-data fiddler 显示的和不带文件参数的接 ...

  5. python百度网盘API分片上传实现,纯代码

    client_id=您应用的AppKey client_secret=您应用的SecretKey 信息需要到百度网盘开发者信息需要自己申请,实名就可以申请. 分片放在内存中.如果文件过大,可以改放到磁 ...

  6. python socketserver实现服务器端执行命令 上传文件 断点续传

    1 基于socketserver在服务器端实现执行cmd命令和上传文件(断点续传) 2 3 #server: 4 5 #!/usr/bin/env python 6 # -*- coding:utf- ...

  7. 阿里云使用idea通过hdfs api来上传文件时出现could only be written to 0 of the 1 minReplication nodes.错误

    问题描述: 使用阿里云服务器,在本地windows电脑上使用idea进行hdfs api操作来上传文件时出现错误如下: org.apache.hadoop.ipc.RemoteException(ja ...

  8. Python+Selenium学习笔记10 - send_keys上传文件

    在火狐浏览器上传文件 上传前,同一个HTML文件在火狐和Edge浏览器显示有些不同 这是Firefox浏览器的显示 这是Edge浏览器 上传后 1 # coding = utf-8 2 3 from ...

  9. 手机如何看python文件大小_如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?)...

    如何安全地检查上传文件的大小?(How to check size of uploaded file safely in bottlepy?) 我真的害怕read()操作,因为它使用内存. 例如,任何 ...

  10. php curl上传文件返回false,php curl上传文件$_FILES为空的问题

    PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...

最新文章

  1. Android客户端捕获http请求包的方法
  2. BZOJ 1927 星际竞速
  3. ios34---GDC,dispatch_once
  4. 【经典回放】多种语言系列数据结构算法:队列(C版)
  5. HDU 6061 RXD and functions(NTT)
  6. LeetCode 676. 实现一个魔法字典(哈希)
  7. 23种设计模式之中介者模式
  8. java 32位_Java知识点:创建节约内存的JavaBean
  9. springdata和mysql_Spring Boot使用Spring Data JPA访问MySQL数据库
  10. 统一视角理解实例分割算法:最新进展分析与总结
  11. 【路径规划】基于matlab A星+改进A星的路径规划【含Matlab源码 225期】
  12. JDK下载安装及环境变量配置的图文教程(详解)
  13. 2018黑马java简历模板_2018黑马软件测试
  14. 企业微信和个人微信的区别是什么?
  15. 学科前沿讲座课程总结与感悟
  16. java获取连续日期天数
  17. java求两个非零正整数的最大公约数和最小公倍数
  18. 文章本天成 妙手偶得之 两句三年得 一吟双泪流
  19. Heartbeat+DRBD+MySQL高可用方案
  20. FileZilla远程上传文件失败原因和解决办法

热门文章

  1. Windows 入侵痕迹清理技巧
  2. [473]tf.nn.*()函数and tf.add()函数
  3. phalapi-入门篇6(小技巧和浅谈API适用范围以及入门篇总结)
  4. 移动应用程序和网页应用程序_设计网站和移动应用程序的空白状态页
  5. word 文档密码 html,Word文档密码解决打开方法
  6. 异步编程举例之闹钟程序
  7. c语言写定时闹钟程序,定时闹钟C语言程序.doc
  8. 经典胶片图像效果lr预设
  9. 基金业绩的python分析_Python与量化多因子——聊聊Brinson业绩归因
  10. (数据结构)线性表(总结)——链式存储结构与顺序储存结构的优缺点