跳到正文

Quake 服务索引聚合统计

接口说明

对 quake_service(服务维度网络测绘资产)索引执行分组聚合统计。在给定 Quake 查询语句的命中结果范围内,按指定字段(端口、服务、产品、标题、应用、地区等)做聚合,返回每个字段各取值的资产数量分布(Top N),或返回某字段的去重基数(unique_*)。 quake_service 是数据量最大的核心索引,可聚合维度远多于其他索引,覆盖服务指纹、HTTP 特征、应用组件、地理位置等。

请求地址

https://api.f.360.cn/api/v3/aggregation/quake_service

请求方法

POST

请求参数

名称类型位置是否必填示例值说明
querystringbody是-查询语句(支持的字段为获取聚合数据筛选字段接口返回的字段)
rulestringbody否-类型为IP列表的主机数据收藏名称
ip_listList[string]body否-IP列表
sizeintbody否-分页大小
aggregation_listList[string]body是-需要获取的聚合名称列表 [注:最多仅支持聚合两个字段]
ignore_cacheboolbody否-是否忽略缓存
start_timestringbody否-查询起始时间,接受2020-10-14 00:00:00格式的数据,时区为UTC
end_timestringbody否-查询截止时间,接受2020-10-14 00:00:00格式的数据,时区为UTC
lateststringbody否-是否只统计最新数据(去重库 unique);false 使用全量库

响应参数

一级字段二级字段类型可选值描述
codeInteger | String0响应状态码,0 表示成功
messagestring响应说明
dataobject聚合结果,key 为聚合字段名
data.{field}array指定字段的聚合结果列表
data.{field}keyInteger | String聚合值(数值型字段返回 int,字符串字段返回 string)
data.{field}doc_countinteger该值对应的文档数量
metaobject固定返回空对象 {}

请求示例

支持cUrl、Python、Java、PHP、Go语言的请求,示例如下

#!/usr/bin/env bash
set -euo pipefail

APPID=""  # apikey
SECRET=""  # salt
URL="https://api.f.360.cn/api/v3/aggregation/quake_service"
BODY='{"query":"city:beijing","aggregation_list":["port"]}'

NONCE=$(printf '%08d' $((RANDOM % 100000000)))
TIMESTAMP=$(date +%s)
BODY_MD5=$(printf '%s' "$BODY" | openssl dgst -md5 -hex | awk '{print $NF}')
SIGNATURE=$(printf '%s' "${BODY_MD5}${APPID}${NONCE}${TIMESTAMP}${SECRET}" | openssl dgst -md5 -hex | awk '{print $NF}')
SIGNATURE=${SIGNATURE:16}

curl --location --request POST "$URL" \
  --header "Content-Type: application/json" \
  --header "X-360-Key: ${APPID}" \
  --header "X-360-Nonce: ${NONCE}" \
  --header "X-360-Timestamp: ${TIMESTAMP}" \
  --header "X-360-Signature: ${SIGNATURE}" \
  --data "${BODY}"

响应示例

业务正常响应

{
    "code": 0,
    "message": "Successful.",
    "data": {
        "port": [
            {"key": 80, "doc_count": 46306737},
            {"key": 443, "doc_count": 34593952},
            {"key": 8888, "doc_count": 4584481},
            {"key": 8080, "doc_count": 3758103},
            {"key": 888, "doc_count": 2915647}
        ]
    },
    "meta": {}
}

业务异常响应

{
    "code": "t6003",
    "message": "查询请求出错,请检查查询语句,或者与管理员联系",
    "data": {},
    "meta": {}
}
{
  "code": "q3005",
  "message": "调用API过于频繁",
  "data": {},
  "meta": {}
}
{
    "code": "GC00105", 
    "src": "apiholder",
    "msg": "appid over field"
}