跳到正文

Quake 服务索引数据检索

接口说明

按 Quake 查询语句(QRule DSL)在 quake_service(服务维度网络测绘资产)索引中检索资产,返回以单条服务记录为单位(IP + 端口 + 协议 + 服务)的结构化数据,支持分页、时间范围过滤、返回字段裁剪与多种输出格式。 quake_service 是 Quake 最核心、数据量最大的索引,每条记录对应一个具体的开放服务,粒度比 quake_host(主机维度)更细。

请求地址

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

请求方法

POST

请求参数

名称类型位置是否必填示例值描述
querystringbody是-查询语句(支持的字段为获取服务数据筛选字段接口返回的字段)
rulestringbody否-类型为IP列表的服务数据收藏名称
ip_listList[string]body否-IP列表
startintbody否0分页起始
sizeintbody否10分页大小
ignore_cacheboolbody否false是否忽略缓存
start_timestringbody否-查询起始时间,接受2020-10-14 00:00:00格式的数据,时区为UTC
end_timestringbody否-查询截止时间,接受2020-10-14 00:00:00格式的数据,时区为UTC
includeList(string)body否-包含字段
excludeList(string)body否-排除字段
lateststringbody否-是否只统计最新数据(去重库 unique);false 使用全量库

响应参数

一级字段二级字段类型可选值描述
codeint0响应状态码,0 表示成功
messagestring响应说明
dataarray查询结果列表
dataidstring资产唯一标识
dataipstringIP 地址
dataportinteger服务端口
datatransportstringtcp/udp传输协议
datahostnamestring主机名
dataorgstring所属组织
dataos_namestring操作系统名称
dataasnintegerASN 编号
datais_ipv6booleantrue/false是否为 IPv6
datatimestringISO8601数据更新时间
dataversionstring协议版本

components

一级字段二级字段类型说明
data.componentsarray识别出的产品组件列表
data.componentsproduct_levelstring产品层级
data.componentsproduct_typearray产品类型
data.componentsproduct_vendorstring产品厂商
data.componentsproduct_name_cnstring产品中文名称
data.componentsproduct_name_enstring产品英文名称
data.componentsversionstring产品版本
data.componentsproduct_catalogarray产品分类
data.componentsidstring产品唯一标识

service

一级字段二级字段类型说明
data.serviceobject服务信息
data.servicenamestring服务名称
data.serviceversionstring服务协议版本
data.serviceresponsestring服务 Banner 信息
data.serviceresponse_hashstringBanner 哈希值

service.ssh

一级字段二级字段类型说明
data.service.sshobjectSSH 服务信息
data.service.sshkey_typesarray支持的主机密钥算法
data.service.sshserver_keysarray服务端公钥信息
data.service.sshciphersarray支持的加密算法
data.service.sshdigestsarray支持的 MAC 算法
data.service.sshcompressionarray支持的压缩算法
data.service.sshkexarray支持的密钥交换算法

net

一级字段二级字段类型说明
data.netobject网络探测信息
data.netservice_probe_namestring服务探测方式
data.netrouter_ipstring路由 IP
data.net.tcpwindowintegerTCP 窗口大小
data.net.ipdistanceinteger网络跳数
data.net.ipinitial_ttlinteger初始 TTL
data.net.ipttlinteger当前 TTL
data.net.iptosintegerTOS 值

location

一级字段二级字段类型说明
data.locationobject地理位置信息
data.locationcountry_cnstring国家(中文)
data.locationcountry_enstring国家(英文)
data.locationcountry_codestring国家代码
data.locationprovince_cnstring省份(中文)
data.locationprovince_enstring省份(英文)
data.locationcity_cnstring城市(中文)
data.locationcity_enstring城市(英文)
data.locationdistrict_cnstring区县(中文)
data.locationdistrict_enstring区县(英文)
data.locationstreet_cnstring街道(中文)
data.locationstreet_enstring街道(英文)
data.locationgpsarray经纬度坐标 [longitude, latitude]
data.locationradiusnumber定位精度(公里)
data.locationispstring网络运营商
data.locationownerstring资产所有者
data.locationasnamestringASN 名称
data.locationscene_cnstring场景类型(中文)
data.locationscene_enstring场景类型(英文)

meta

一级字段二级字段类型说明
metaobject元数据
meta.paginationobject分页信息
meta.paginationcountinteger当前页返回数量
meta.paginationpage_indexinteger当前页码
meta.paginationpage_sizeinteger每页数量
meta.paginationtotalinteger总记录数

请求示例

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

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

APPID=""  # apikey
SECRET=""  # salt
URL="https://api.f.360.cn/api/v3/search/quake_service"
BODY='{"query":"ip: 193.36.119.50","start":0,"size":1}'

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": [
        {
            "components": [
                {
                    "product_level": "服务协议层",
                    "product_type": ["常见网络服务"],
                    "product_vendor": "openssh",
                    "product_name_cn": "OpenSSH",
                    "product_name_en": "openssh",
                    "id": "5e831df9421aa99e9885e4bc",
                    "product_catalog": ["网络设备与服务"],
                    "version": "8.9p1 Ubuntu 3ubuntu0.15"
                },
                {
                    "product_level": "操作系统层",
                    "product_type": ["常见操作系统"],
                    "product_vendor": "Canonical Ltd.",
                    "product_name_cn": "Ubuntu",
                    "product_name_en": "Ubuntu",
                    "id": "5f4611f03cde3400c2cb2494",
                    "product_catalog": ["操作系统"],
                    "version": ""
                }
            ],
            "hostname": "",
            "org": "EstNOC OY",
            "port": 8022,
            "service": {
                "response": "SSH-2.0-OpenSSH_8.9p1 Ubuntu-3ubuntu0.15\r\n",
                "response_hash": "67a0dfef592b7e06c2688110ed6fb293",
                "name": "ssh",
                "version": "2.0",
                "ssh": {
                    "key_types": ["rsa-sha2-512", "rsa-sha2-256", "ecdsa-sha2-nistp256", "ssh-ed25519"],
                    "server_keys": [
                        {
                            "fingerprint": "39:e1:36:cd:27:01:c5:53:7d:85:81:ca:47:09:f7:8d",
                            "type": "ecdsa-sha2-nistp256",
                            "key": "AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAy..."
                        }
                    ],
                    "ciphers": ["chacha20-poly1305@openssh.com", "aes128-ctr", "aes256-ctr"],
                    "digests": ["umac-64-etm@openssh.com", "hmac-sha2-256-etm@openssh.com"],
                    "compression": ["none", "zlib@openssh.com"],
                    "kex": ["curve25519-sha256", "ecdh-sha2-nistp256", "diffie-hellman-group-exchange-sha256"]
                },
                "net": {
                    "service_probe_name": "NULL",
                    "tcp": {"window": 64240},
                    "router_ip": "63.223.29.246",
                    "ip": {"distance": 17, "initial_ttl": 64, "tos": 0, "ttl": 47}
                }
            },
            "ip": "193.36.119.50",
            "os_name": "Ubuntu",
            "location": {
                "province_cn": "香港",
                "isp": "EstNOC OY",
                "province_en": "Hongkong",
                "country_en": "China",
                "country_cn": "中国",
                "city_cn": "香港",
                "city_en": "Hongkong",
                "district_cn": "",
                "district_en": "",
                "street_cn": "",
                "street_en": "",
                "gps": [114.184921, 22.350617],
                "country_code": "CN",
                "asname": "EstNOC-GLOBAL",
                "scene_cn": "数据中心",
                "scene_en": "Hosting",
                "radius": 40.0088,
                "owner": ""
            },
            "is_ipv6": false,
            "transport": "tcp",
            "time": "2026-07-03T05:08:19.848Z",
            "asn": 206804,
            "id": "193.36.119.50_8022_tcp"
        }
    ],
    "meta": {
        "pagination": {
            "count": 1,
            "page_index": 1,
            "page_size": 1,
            "total": 4
        }
    }
}

业务异常响应

{
    "code": "t6003",
    "message": "查询请求出错,请检查查询语句,或者与管理员联系",
    "data": {},
    "meta": {}
}
{
    "code": "GC00105", 
    "src": "apiholder",
    "msg": "appid over field"
}
{
    "code": "q2001",
    "message": "用户当前积分不足以完成本次查询操作。",
    "data": {},
    "meta": {}
}

Quake 检索类接口业务错误码(HTTP 状态码均为 200,通过 code 字段区分):

codemessage说明
0Successful.查询成功
q2001用户当前积分不足以完成本次查询操作。账号积分不足,无法完成本次检索,需充值或联系管理员提升积分
q2001筛选字段传参错误: [xxx], 请调用可筛选字段接口查看可筛选字段include/exclude 传入了不在白名单内的字段,先调用对应索引的可筛选字段接口获取白名单
q3005调用API过于频繁触发接口调用频率限制,降低调用频率(建议两次检索间隔15秒以上)后重试