API

简介

本文档用于描述FOFA全网资产收集与检索系统API使用方法,考虑到环境兼容性的问题,建议在Linux环境运行,当然Windows下面大多数也可以运行,本页实例部分的curl请另行安装。

输入必须包含认证信息,见 认证 一节。

输出格式为json,正常情况下都在result字段,错误情况见 错误和异常 一节。


  export FOFA_EMAIL=xxx@gmail.com
  export FOFA_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  curl "https://fofa.so/api/v1/info/my?email=${FOFA_EMAIL}&key=${FOFA_KEY}"


#1, 安装Ruby
#2, 安装fofagem:
#   gem install fofa
#3, 调用SDK
fofa = Fofa::API.new('xxx@gmail.com', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')

认证

所有的调用都将需要提供身份信息,主要是 email 和 key :

  • email: 注册和登陆时时填写的email
  • key:    会员到个人资料可得到key,为32位的hash值
  • 查询接口

    输入下列请求所需的qbase64,返回json数据格式

    请求

    qbase64 :
    string 经过base64编码后的查询语法,支持domain,host,ip,header,body,title,运算符支持== = != =~
    page :
    integer 翻页数,默认为第一页
    size :
    integer 每页返回记录数,默认为100条,购买F币后,最大可设置为10000条
    fields :
    string 【可选参数】字段列表,默认为host,用逗号分隔多个参数,如(fields=ip,title),可选的列表有:host title ip domain port country city

    返回

    mode :
    string 查询模式
    mode返回为"normal"代表普通查询(q=words)
    mode返回为"extended"代表高级查询(如q=domain=fofa.so,q=title=fofa,采用高级条件搜索)
    page :
    integer 当前请求页的页数
    size :
    integer 请求返回结果的个数
    results :
    array 请求返回结果的详情数组
    
    echo 'domain="fofa.so"' | base64 - | xargs -I{} curl "https://fofa.so/api/v1/search/all?email=${FOFA_EMAIL}&key=${FOFA_KEY}&qbase64={}"
    
    
      fofa.search('domain=nosec.org')
    fofa.Host.query(
      query='domain=="fofa.so"',
      page=1
      )
    
    
    
    # 正确返回结果
    {
      "mode": "extended",
      "error": null,
      "query": "domain=\"nosec.org\"\n",
      "page": 1,
      "size": 6,
      "results": [
        [
          "https://i.nosec.org"
        ],
        [
          "https://nosec.org"
        ],
        [
          "down3.nosec.org"
        ],
        [
          "www.nosec.org"
        ],
        [
          "nosec.org"
        ],
        [
          "cdn.nosec.org"
        ]
      ]
    }
    
    #错误返回
      #服务器异常
      {"errmsg":"Internal Server Error!","error":true}
      #F币不足
      {"errmsg":"FOFA coin is not enough!","error":true}
      #结果窗口过大
      {"errmsg":"Result window is too large, page must be less than or equal to...","error":true}
    
    

    错误和异常

    任何程序都不可避免出现异常情况,请随时关注可能提示的错误信息。

    Attributes

    error:
    boolean 是否发生错误
    errmsg:
    string 错误提示信息
    
    {
      "error": true,
      "errmsg": "401 Unauthorized, make sure email and apikey is correct."
    }
    
    

    用户协议

    1、定义
            1.1 FOFA API开放接口是由北京白帽汇科技有限公司(以下简称白帽汇)提供技术标准;
            1.2 FOFA API开放接口所有权归北京白帽汇科技有限公司所有。

    2、使用许可
            2.1 用户使用FOFA API数据接口,应遵守被协议的约定及法律、法规之相关规定;
            2.2 用户在使用FOFA API数据接口时,如有恶意使用及使用不当,后果由用户自身承担;
            2.3 用户不得对所提供的数据内容做出任何修改;
            2.4 白帽汇向用户提供API使用的相应技术支持,用户需按照白帽汇所提供的《操作说明》进行;
            2.5 用户在获得使用权时,有权根据自身的实际应用场景使用。

    3、保密内容及范围
            3.1 双方不得在未经对方允许情况下披露给其他个人或单位信息;
            3.2 用户不得像其他单位及个人提供使用FOFA API时必须的相关授权密钥,一经发现可马上终止本协议。