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()
|