前言

在红蓝对抗的时候,需要频繁的使用fofa进行子域名的查找,如果一个一个域名去查找子域,那效率太低了且耗时,我们可以利用fofa提供的api批量的对一批主域进行子域名的查找!

fofa api参考文档:https://fofa.info/api

代码实现

主代码如下

http://fofa.info/api/v1/search/all?email=%s&key=%s&qbase64=%s&size=10000&fields=host,ip,port,title

  • email和key:fofa会员的key
  • qbase64:查询语法
  • size:每页查询数量
  • fields:查询显示的字段。默认host,ip,port,还可以加title等

fofa 调用api查询的结果为json格式,结果在result键值中且为列表形式。一条数据又为一个列表

fofa.py

import requests, base64, os, win32api
from colorama import init,Fore
init(autoreset=True)
from requests.packages import urllib3
urllib3.disable_warnings()fofa_email = "xxx"
fofa_key = "xxxx"
headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 7.1.2; PCRT00 Build/N2G48H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.158 Safari/537.36 fanwe_app_sdk sdk_type/android sdk_version_name/4.0.1 sdk_version/2020042901 screen_width/720 screen_height/1280',}
fofa_set = set()def fofa(target):query = 'domain="%s"'%(target)    #fofa查询的语法query = (base64.b64encode(query.encode('utf-8'))).decode('utf-8')   #语法需要经过base64编码url_api = 'https://fofa.info/api/v1/search/all?email=%s&key=%s&qbase64=%s&size=10000&fields=host,ip,port&full=true'%(fofa_email,fofa_key,query)print(Fore.RED + "[INFO]开始调用fofa api查询%s子域..."%(target))for i in range(1,5):try:response = requests.get(url=url_api,headers=headers,timeout=15,verify=False,proxies={'https':'http://127.0.0.1:7890'}).json()#print(response)if response.get('error') != False:print("fofa查询失败\r"+response)returnprint('fofa查询成功!')subdomain = response.get("results") #查询的结果保留在列表中#print(subdomain)for list in subdomain:host = list[0]     #子域ip = list[1]       #子域所属ipport = list[2]     #开放端口if "https" in host:url = hostelse:url = "http://" + hostprint(url)fofa_set.add(url)breakexcept Exception as e:print("请求出错,正在尝试重新请求...",e)if __name__ == '__main__':#批量读取主域名for domain in open("domain.txt",'r'):fofa(domain.replace("\n",""))print("获取去重后子域名个数为:",len(fofa_set))#将结果进行保存if os.path.exists("fofa_subdomain.txt"):os.remove("fofa_subdomain.txt")for i in fofa_set:with open("fofa_subdomain.txt","a",encoding="utf-8") as f:f.write(i + "\n")print(Fore.GREEN + "结果保存完毕!")win32api.ShellExecute(0, 'open', 'fofa_subdomain.txt', '', '', 1) 

python实现fofa调用api批量查询子域相关推荐

  1. 日期调用API,查询是否是节假日

    日期调用API,查询是否是节假日 http://api.goseek.cn/Tools/holiday?date=20170721 工作日为0,周目休息日1,节假日2 工作日http://api.go ...

  2. shell调用api store查询手机号码归属地

    一.api store简介 api store是属于一个API聚合平台,可以向外提供各种的数据服务,比较有代表性的有dev store,百度api store和聚合数据等等,这类服务通过向外提供res ...

  3. python调用百度地图API批量查询全国高速收费站点经纬度

    写在前面 大家好,我是饭都吃不起的南南 昨天帮朋友爬了全国的高速站点收费站这里下载 [http://www.bestunion.cn/gaosu/p_4/sfzlist.html] 由于该网站并没有西 ...

  4. python 调用api上传物流信息,python实现快递鸟API物流查询接口 数据签名方法

    # 请求数据处理方法 def before_reqData(shipperCode, logisticCode): """请求报文""" f ...

  5. Android中调用API实现查询身份证信息

    要实现这个功能,首先就要知道如何通过Http协议访问网络,向网络发送请求,其次了解如何解析JSON或者XML文件. 1.我的身份证查询接口是在聚合数据申请的,完成认证后,你会得到一个KEY,这在之后会 ...

  6. Python通过高德地图API批量计算两地路线距离

    公司需求批量计算两地之间行车距离,故此记录一下,数据接口采用高德地图开发者api,需要注册,注册后免费版的数据量已够满足大多数使用. import pandas as pd import reques ...

  7. zabbix 调用api 批量删除主机

    脚本名称 zabbix_api.py 脚本内容如下: #!/usr/bin/env python #-*- coding: utf-8 -*-import json import sys import ...

  8. Python通过百度地图API批量计算两地路线距离(货车路线规划)

    与之前普通车辆的代码大体相似,只是货车参数较多,根据自己需要设定. 需要注意的是百度地图开发者的Web API 免费额度是不提供货车路线规划数据的,因此有这个需求的话,需要付费购买.import pa ...

  9. python 批量查询网页导出结果_李亚涛:python批量查询网页收录情况并计算收录率...

    想要一个关键词有排名 第一件事就是保证有一个页面布局了这个关键词,而且这个页面已经被收录了. 所以,我们网站在更新一些信息的时候,比如发布资讯,如果没有被收录,那就无法获得排名,也就没办法带来流量. ...

最新文章

  1. [Django] 查看orm自己主动运行的原始查询sql
  2. pytorch笔记:pytorch的乘法
  3. 【网易云信招聘啦】216位攻城狮,呼唤7个好基友
  4. python处理ini文件_python对ini配置文件处理
  5. python- 决策树分类器
  6. keil c语言 位域,联合体位域在keil c遇到的问题怎样解决?
  7. 语言的MASS包干什么的_R语言绘制平行坐标图(PCP)示例
  8. 《AutoCAD 2014中文版超级学习手册》——1.4 配置绘图系统
  9. 【JAVA程序设计】基本数据类型
  10. 团队编程项目作业4-开发文档
  11. html吃豆豆游戏代码,吃豆豆小游戏
  12. 螺母_常用硬件的种类以及选用_day15
  13. 如何将腾讯视频QLV格式转换成MP4
  14. phpstudy8.1安装duxcms3.1.3
  15. pytest框架笔记(十三) : Pytest+Allure定制报告
  16. CF894A QAQ
  17. C语言复习 随手写3
  18. Java面向对象系列[v1.0.0][枚举类]
  19. 小虎队《爱》 —— 米扑科技公司司歌
  20. jQuery实现购物车功能(小计、总计)

热门文章

  1. CSS 实现高度自适应铺满整屏的实现
  2. CVPR 2021 旷世团队提出YOLOF
  3. vi(vim)编辑器
  4. 企业为什么要上管理系统软件
  5. 数据库导出数据模型图
  6. 缅怀 Delphi,缅怀 Borland
  7. Safari浏览器自动化测试(Python脚本测试)
  8. vue父子组件传值方法(案例)
  9. win11打开移动热点显示“我们无法设置移动热点”
  10. 有效ip地址_本地连接没有有效IP配置,可尝试这3种方法,轻松解决此问题