调用ZoomEye API获取信息

最近在提高自己编程能力,拿一些实用的小工具练下。该脚本为python语言,主要涉及模块urllib,json,os模块。

功能:调用ZoomEye API获取信息

import urllib.request
import json
import os

def login():
        username = input("username:")
        password = input("password:")
        url = "https://api.zoomeye.org/user/login"
        data = json.dumps({‘username‘:username,‘password‘:password})
        data_bytes = bytes(data,‘utf8‘)
        try:
                req = urllib.request.Request(url,data_bytes)
                response = urllib.request.urlopen(req)
                html = response.read().decode(‘utf-8‘)
                target = json.loads(html)

                access_token = target[‘access_token‘]
                with open(‘access_token.txt‘,‘w‘) as f:
                        f.write(access_token)
                        f.close
                        print(‘login seccess !!!‘)
                #print(‘your access_token is:%s‘%(access_token))
        except Exception as err:
                print(‘[info]:username or password is wrong !‘)

def apiget():
        while True:
                host_or_web = input("search for host or web:(‘q!’Sign out):")
                if host_or_web == ‘q!‘:
                        break
                query = input("input your keyword(-r for your resources-info):")  #查看自己的套餐剩余量
                if query == ‘-r‘:
                        req = urllib.request.Request(‘https://api.zoomeye.org/resources-info‘)
                        ida = open(‘access_token.txt‘).read() 

                        req.add_header(‘Authorization‘,‘JWT %s‘%(ida))
                        re = urllib.request.urlopen(req)
                        ae = (re.read().decode(‘utf-8‘))
                        ae = target = json.loads(ae)
                        dict_web = ae[‘resources‘][‘web-search‘]
                        dict_host = ae[‘resources‘][‘host-search‘]
                        print(‘your web search:%s‘%(dict_web))
                        print(‘your host search:%s‘%(dict_host))
                else:
                        try:                   req = urllib.request.Request(‘https://api.zoomeye.org/%s/search?query=%s‘%(host_or_web,query))
                                idb = open(‘access_token.txt‘).read()
                                req.add_header(‘Authorization‘,‘JWT %s‘%(idb))
                                r = urllib.request.urlopen(req)
                                a = (r.read().decode(‘utf-8‘))
                                a = target = json.loads(a)
                                print(‘tatal:%s‘%(a[‘total‘]))
                                for i in range(len(a[‘matches‘])):
                                        print (a[‘matches‘][i][‘ip‘])

                        except Exception as err:
                                print(‘[erro]:Please enter the correct syntax !‘)

def start():
        if not os.path.isfile(‘access_token.txt‘): #首次使用会检查脚本目录下access_token.txt文件,没有的话登录会创建
                print(‘[info]:you need login‘)
                login()

        apiget()

if __name__ == ‘__main__‘:
    start()
        

时间: 2024-07-29 06:16:34

调用ZoomEye API获取信息的相关文章

android调用webservice接口获取信息

我的有一篇博客上讲了如何基于CXF搭建webservice,service层的接口会被部署到tomcat上,这一篇我就讲一下如何在安卓中调用这些接口传递参数. 1.在lib中放入ksoap2的jar包并导入 2.在xml 配置文件中加入: <!-- 访问网络的权限 --> <uses-permission android:name="android.permission.INTERNET" /> 3.接下来就要通过代码调用借口了 String WSDL_URI

使用Google Elevation API获取海拔高度(java版)

Google Elevation API提供了根据某地经纬度获取该地点海拔高度的接口.开发者可以调用该API获取地点的海拔信息.使用Google Elevation API之前,用户首先需要注册为Google Developer,获取API key. 开发者可以查看API的调用记录,目前Elevation API的限制次数为2500次/每天,每次API访问的字节数小于2000字符. 相应的Java代码如下所示: package elevation; import java.io.*; impor

Python调用ansible API系列(四)动态生成hosts文件

方法一:通过最原始的操作文件的方式 #!/usr/bin/env python # -*- coding: utf-8 -*- """ 通过操作文件形式动态生成ansible的hosts文件 """ import sys class Inventory: def __init__(self): # ansible的hosts文件路径 self._hostsfile = "./aaa" self._data = self._ge

C# 网络编程之通过豆瓣API获取书籍信息(一)

这篇文章主要是讲述如何通过豆瓣API获取书籍的信息,起初看到这个内容我最初的想法是在"C# 网络编程之网页简单下载实现"中通过HttpWebResponse类下载源码,再通过正则表达式分析获取结点标签得到信息.但后来发现可以通过豆瓣API提供的编程接口实现. 该文章仅是基础性C#网络编程文章,尝试测试了下豆瓣API,并没什么高深的内容.但希望对大家有所帮助,仅供学习. (警告:文章仅供参考,提供一种想法,否则访问多次-10次被403 forbidden莫怪.建议认证使用豆瓣API) 一

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地(转)

HTML5页面直接调用百度地图API,获取当前位置,直接导航目的地 我是应用在微信中,自定义菜单,菜单直接链接到这个HTML5页面,获取当前位置后,页面中定好目的地,这样打开页面后直接进入导航页面 可以省下先发送位置信息后,点确定再出导航,省一步, <!DOCTYPE html> <html lang="zh-cmn-Hans"> <meta charset="UTF-8"> <meta name="viewpor

python 调用zabbix api实现查询主机信息,输出所有主机ip

之前发现搜索出来的主机调用zabbix api信息都不是那么明确,后来通过zabbix官方文档,查到想要的api信息,随后写一篇自己这次项目中用到的api. #!/usr/bin/env python #coding:utf8 import requests import json headers = {'Content-Type': 'application/json-rpc'} server_ip = '10.37.149.109' url = 'http://%s/zabbix/api_j

PHP通过Zabbix API获取服务器监控信息

开源监控系统Zabbix提供了丰富的API,供第三方系统调用. 基本步骤如下: 1.获取合法认证:连接对应Zabbix URL,并提供用户名和密码,HTTP方法为"POST",HTTP头部类型为"application/json" 1 public function zabbixJsonRequest($uri, $data) { 2 try{$json_data = json_encode($data); 3 $c = curl_init(); 4 curl_se

开源项目成熟度分析工具-利用github api获取代码库的信息

1.github api github api是http形式的api,功能还是比较丰富的,博主因为项目的原因主要用到的是提取project信息这项功能,返回的数据是JSON格式. api页:https://developer.github.com/v3/ Options: (H) means HTTP/HTTPS only, (F) means FTP only --anyauth Pick "any" authentication method (H) -a, --append Ap

借助Sigar API获取磁盘信息

Sigar(全称System Information Gatherer And Reporter,即系统信息收集报表器),它提供了一个开源的跨平台的收集计算机硬件和操作系统信息的API(该API底层接口用C语言编写),本文将演示如何借助Sigar API获取磁盘信息: package com.ghj.packageoftest; import org.hyperic.sigar.FileSystem; import org.hyperic.sigar.FileSystemUsage; impor