Python 调用Zoomeye搜索接口
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 调用Zoomeye搜索接口相关的知识,希望对你有一定的参考价值。
钟馗之眼是一个强大的搜索引擎,不同于百度谷歌,它主要收集网络中的主机,服务等信息,国内互联网安全厂商知道创宇开放了他们的海量数据库,对之前沉淀的数据进行了整合、整理,打造了一个名符其实的网络空间搜索引擎ZoomEye,运用Python接口可以灵活的实现数据采集。
钟馗之眼的常用搜索关键字如下所示。
app:组件名称
ver:组件版本
搜索 apache组件 版本2.4 --> app:apache ver:2.4
port:端口号 ---> 例如:搜索开放了SSH端口的主机 port:22
指定搜索的操作系统 OS:操作系统名称 ---> OS:Linux
指定搜索的服务 service:服务名称 ---> 例如,搜素SSH服务 Service:SSH
指定搜索的地理位置范 --> country:国家 city:城市名 country:China --> city:Beijing
搜索指定的CIDR网段 例如: CIDR:192.168.158.12/24
搜索指定的网站域名 ---> site:www.baidu.com
搜索指定的主机名 ---> hostname:zwl.cuit.edu.cn
搜索指定的设备名 --> device:router
搜索具有特定首页关键词的主机 ---> keyword:technology
提供的搜索脚本如下。
import os,json,requests
import argparse
def login():
url_login="https://api.zoomeye.org/user/login"
data=
"username": "1098395580@qq.com",
"password": "xiaohua@1998"
data=json.dumps(data)
r=requests.post(url=url_login,data=data)
return json.loads(r.content)[access_token]
def GetResidual(token):
url="https://api.zoomeye.org/resources-info"
headers=Authorization:JWT + token
r=requests.get(url=url,headers=headers)
datas=json.loads(r.content)
print("剩余搜索次数: ".format(datas[resources][search]))
def Search(token,search,files,page):
url="https://api.zoomeye.org/web/search?query=&page=".format(search,page)
headers=Authorization:JWT + token
r=requests.get(url=url,headers=headers)
data = json.loads(r.content)[matches]
with open(files,w,encoding=utf-8) as f:
json.dump(data,f,ensure_ascii=False)
print("[+] 保存文件: 长度: 页码: 查询语法: ".format(files,len(data),page,search))
def Get_System(files):
try:
with open(files,r,encoding=utf8) as fp:
json_data = json.load(fp)
json_len = len(json_data)
for item in range(0,json_len):
print("IP地址: %15s |" %(json_data[item][ip][0]),end="")
print("地区: %1s %3s "%(json_data[item][geoinfo][continent][names][zh-CN],
json_data[item][geoinfo][subdivisions][names][zh-CN]))
except Exception:
pass
def Banner():
print(" _ ____ _ _ ")
print(" | | _ _/ ___|| |__ __ _ _ __| | __")
print(" | | | | | \\___ \\| _ \\ / _` | __| |/ /")
print(" | |__| |_| |___) | | | | (_| | | | < ")
print(" |_____\\__, |____/|_| |_|\\__,_|_| |_|\\_\\\\")
print(" |___/ \\n")
print("E-Mail: me@lyshark.com")
if __name__== "__main__":
Banner()
parser = argparse.ArgumentParser()
parser.add_argument("-s","--search",dest="search",help="根据传入语法搜索指定内容")
parser.add_argument("-f","--file",dest="file",help="保存文件的名字 *.json")
parser.add_argument("-p","--page",dest="page",help="需要检索第几页的数据")
parser.add_argument("-q","--query" ,dest="query",help="单独使用,可用于查询剩余次数")
parser.add_argument("-g","--get" ,dest="get",help="提取本地json文件并解析出关键数据")
args = parser.parse_args()
if args.search and args.file and args.page:
token = login()
Search(token,args.search,args.file,args.page)
elif args.query and args.search == None:
token = login()
GetResidual(token)
elif args.get:
Get_System(args.get)
else:
parser.print_help()
查询使用次数: 默认情况下,钟馗之眼每月给与10000条左右的查询次数,可以使用 -q 参数实现次数的查询。
**搜索功能的使用:**通过-s
选项指定你需要搜索的关键字,可以结合钟馗之眼搜索语法使用-p
就是搜索的页码数-f
保存为json文件。
在JSON中解析IP地址: 在本地JSON文件中解析IP地址,提取出关键数据。
以上是关于Python 调用Zoomeye搜索接口的主要内容,如果未能解决你的问题,请参考以下文章