ZoomEye API 调用

ZoomEye API调用:

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

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

#!/usr/bin/env python
# -*- coding:utf-8 -*-

"""
Author spkiddai
"""

import json
import requests
import configparser

class 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,os
    def 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,os
    def 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

    @staticmethod
    def 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)

    @staticmethod
    def 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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值