ZoomEye API调用:

因为ZoomEye API 很难用,加入重试机制后,请求还是会一直500,所以没有加入请求重试机制。可以自行加入,或者增加一个时间长度的重试。

尽量避免大量请求API 经测试,1秒1次都会报500。

#!/usr/bin/env python
# -*- coding:utf-8 -*-"""
Author spkiddai
"""import json
import requests
import configparserclass ZoomEyeUnit():def __init__(self):self.config = self.read_config()#读取配置文件配置self.headers = self.create_token() #生成Access_TOKEN的header#配置文件内容 用户、密码、API接口地址def read_config(self):result = {}config = configparser.ConfigParser()config.read("Config.ini")result['user'] = config['ZoomEye Login']['USER']result['pass'] = config['ZoomEye Login']['PASS']result['login'] = config['ZoomEye API']['Login']result['info'] = config['ZoomEye API']['Info']result['host'] = config['ZoomEye API']['Host']result['web'] = config['ZoomEye API']['Web']return result#生成Token,用户名密码登录login接口def create_token(self):data = json.dumps({"username":self.config['user'],"password":self.config['pass']})response = self.req_post(self.config['login'],data=data)header = {"Authorization": "JWT %s" % (response["access_token"])}return header#用户信息接口:无需参数传入def info(self):response = ZoomEyeUnit.req_get(self.config['info'],header=self.headers)return response#主机搜索接口:需传入参数 query查询表达式 示例:prrt:8080   page页码 示例:1  facets排序 示例:app,osdef Host_search(self,query,page=None,facets=None):params = {"query" : query }if page:params.update({"page" : str(page)})if facets:params.update({"facets" : facets})response = self.req_get(self.config['host'],params,self.headers)return response#Web搜索接口:需传入参数 query查询表达式 示例:prrt:8080   page页码 示例:1  facets排序 示例:app,osdef Web_search(self,query,page=None,facets=None):params = { "query" : query }if page:params.update({"page" : str(page)})if facets:params.update({"facets" : facets})response = self.req_get(self.config['web'],params,self.headers)return response@staticmethoddef req_get(url, params=None, header=None):try:response = requests.get(url=url, params=params, headers=header)if response.status_code == 200:return response.json()else:print('[-ERROR]:' + str(response.status_code) + response.text)exit(0)except Exception as e:raise ('[-ERROR]:' + e)@staticmethoddef req_post(url, data, header=None):try:response = requests.post(url=url, data=data, headers=header)if response.status_code == 200:return response.json()else:print('[-ERROR]:' + str(response.status_code) + response.text)exit(0)except Exception as e:raise ('[-ERROR]:' + e)

配置读取为Config.ini的配置文件:

[ZoomEye Login]
USER = test
PASS = test[ZoomEye API]
Login = https://api.zoomeye.org/user/login
Info = https://api.zoomeye.org/resources-info
Host = https://api.zoomeye.org/host/search
Web = https://api.zoomeye.org/web/search

调用方法:

z = ZoomEyeUnit()
result = z.Host_search("port:8080"",page=1)
print(result)

github地址:https://github.com/spkiddai/ZoomEyeUnit

说明:个人制作,仅供学习使用,不可用于商业用途,如有版权问题,请联系删除,切勿将代码内容用于任何违法行为。

ZoomEye API 调用相关推荐

  1. Tensorflow C++ API调用Keras模型实现RGB图像语义分割

    我的实验是基于PSPNet模型实现二维图像的语义分割,下面的代码直接从得到的h5文件开始往下做... 也不知道是自己的检索能力出现了问题还是咋回事,搜遍全网都没有可以直接拿来用的语义分割代码,东拼西凑 ...

  2. novaclient的api调用流程与开发

    novaclient的api调用流程与开发 2015年07月05日 19:27:17 qiushanjushi 阅读数:3915 http://blog.csdn.net/tpiperatgod/ar ...

  3. Windows恶意软件API调用特征分析

    本文讲的是Windows恶意软件API调用特征分析, 1.背景 目标: 1)找到病毒调用概率高的API 2)找到病毒调用概率不高,但是当调用频次高的时候,是病毒概率高的API. 通常对病毒使用API的 ...

  4. WPF技术触屏上的应用系列(二): 嵌入百度地图、API调用及结合本地数据库在地图上进行自定义标点的实现...

    原文:WPF技术触屏上的应用系列(二): 嵌入百度地图.API调用及结合本地数据库在地图上进行自定义标点的实现 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系 ...

  5. saltstack一些常用模块和api调用方法

    研究可执行模块的时候,发现很多自带的模块已经很完善,可以帮助我们完成日常工作了,这里写入自己的记录操作: 1.使用salt.clien调用接口操作举例: >>> import sal ...

  6. 【Flutter】Dart 数据类型 字符串类型 ( 字符串定义 | 字符串拼接 | 字符串 API 调用 )

    文章目录 I . 字符串定义 I . 字符串拼接 III . 字符串 API 调用 IV . 字符串 Demo 示例 I . 字符串定义 使用单引号 ' ' 和 双引号 " " 都 ...

  7. 【阿里云API】 阿里云API调用的若干说明

    阿里云API 为了监控我们使用的一些阿里云产品,需要些一些脚本,定时调用这些脚本来获得相关阿里云产品的信息. ■ 概述 调用阿里云API大约分成两类方法,一个是直接从HTTP协议开始,自己根据阿里云的 ...

  8. Python 技术篇-20行代码实现微信机器人斗图功能实例演示!斗图啦官网API调用方法

    话不多说,看效果图: 先说下原理: 微信接收到你说的话,发给机器人来回复,用回复的话传参给斗图网,然后获得斗图网返回的图片,保存后把图片再发给跟你斗图的人. 斗图啦官网API调用文档 斗图啦官网 菜单 ...

  9. php 菜谱 源码,基于php的菜谱大全api调用代码实例

    代码描述:基于php的菜谱大全api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/46 PHP代码 // +-------------------------- ...

最新文章

  1. node.js 多异步之间的协作方案
  2. 视频防抖 Opencv
  3. SAP ABAP SQL查询分析器
  4. 【机器学习】27 个机器学习、数学、Python 速查表
  5. CLR via C#学习笔记-第十三章-定义接口、继承接口
  6. delphi switch语句例子_Java 14 祭出增强版 switch,真香!!
  7. 湖南大学计算机与通信学院研究生,湖南大学计算机与通信学院2010年硕士研究生招生学科...
  8. java script中==和===_Java Script 中 ==(Equal) 和 === (Identity Equal) 的区别和比较算法逻辑...
  9. 用c#控制台模拟双色球随机选
  10. nginx虚拟主机配置实例
  11. 工控: 西门子STEP 7安装和连接S7-200遇到的问题
  12. Linux服务器查看任务计划,Linux的任务计划
  13. 程序人生 - 游戏帧数很高,为什么还是会卡顿?
  14. kettle | error working with XUL definition
  15. VC6.0 中文代码显示乱码的问题
  16. KICAD——手动生成嘉立创可识别的BOM和POS文件
  17. import * as 用法导入模块变量
  18. 什么是《现代 JavaScript 教程》?
  19. iOS 如何判断静音开关是否打开
  20. Oracle查看用户所在的表空间

热门文章

  1. python根据文件名分类文件
  2. Lab: Password brute-force via password change 通过暴力破解获取密码靶场复盘
  3. 微信小程序 实现分页加载数据
  4. 【xxljob简介】
  5. mkmf.rb can‘t find header files for ruby at /System/Library/Frameworks/Ruby.framework/... ...
  6. 周易卦爻解读笔记——蒙卦
  7. DRF序列化器详细使用
  8. 机器学习---第一个应用——鸢尾花分类
  9. 网络安全学科复习知识点个人整理
  10. TensorFlow Adding visible gpu devices: 0 加载GPU速度慢