资产测绘查询
资产测绘查询 API 支持通过统一的资产测绘查询语句检索互联网资产,返回 IP、端口、协议、域名、网页标题、HTTP 状态码、应用组件、Banner、证书及相关指纹 Hash 等信息。
该接口适用于外部攻击面发现、互联网资产梳理、告警上下文补全和威胁基础设施拓线等场景。
请求方法
请求地址: https://api.threatbook.cn/v3/internet_assets/query请求方式:GETPOST
使用说明
- GET 请求通过 URL parameters 传递
apikey和syntax。 - POST 请求使用
application/json,syntax放入 JSON 请求体;apikey可放入 JSON 请求体或 URL parameters。 - 查询语句未声明
before或after时,默认查询最近 3 个月的数据;声明任一时间条件时,以用户指定的时间范围为准。 - 结果按最近扫描时间倒序排列,单次最多返回最近的 100 条,
total_count表示全部命中数量。 syntax的字段、运算符和组合规则请前往“查看详细语法说明”。
查询语法范围限制
为避免端口、地域、状态码、时间等低选择性条件产生大范围扫描,每个能够独立扩大结果范围的查询分支都必须包含至少一个使用 = 或 == 的正向锚点字段。使用 != 的排除条件不能作为锚点。
port、地域字段、status_code、after、before、exists、icp_type、owner 以及其他未列入上表的字段只能用于限定查询范围,不能单独查询。
A && B:任意一侧存在正向锚点即可,另一侧仅用于缩小查询范围。A || B:每个能够独立成立的 OR 分支都必须包含正向锚点;若外层通过 AND 提供公共锚点,该锚点同时约束 OR 两侧。- 括号表达式按完整组合关系递归判断。
例如,ip="1.1.1.1" && country="中国"、ip="1.1.1.1" || domain="example.com" 可以查询;port="80"、icp_type="企业"、root_domain!="example.com"、ip="1.1.1.1" || port="80" 会被拦截。
请求参数说明
| 序号 | 参数名称 | 必选 | 类型 | 描述 |
|---|---|---|---|---|
| 1 | apikey | 是 | string | API 请求的唯一标识。GET 通过 URL parameters 传递;POST 可放入 JSON 请求体或 URL parameters。 |
| 2 | syntax | 是 | string | 资产测绘查询语句。GET 通过 URL parameters 传递并进行 URL Encode;POST 放入 JSON 请求体。可前往 “查看详细语法说明”。 |
| 3 | page | 否 | int | 查询页码,从 1 开始,默认值为 1。 |
| 4 | size | 否 | int | 单页返回数据条数。当 include 不包含 header 和 banner 时支持 1~100(默认 100 条);当 include 包含 header 或 banner 时支持 1~50(默认 50 条)。 |
| 5 | include | 否 | string / array | 返回字段选择列表。GET 请求通过 URL parameters 传递逗号分隔字符串(如 include=domain,header,banner);POST 请求在 JSON 请求体中传递字符串数组(如 ["domain", "header", "banner"])。支持的值包括:domain、header、banner、cert、application、component、page_info、hash。如果不传则对应字段不返回。 |
响应参数说明
| 序号 | 参数路径 | 类型 | 描述 |
|---|---|---|---|
| 1 | response_code | int | 响应状态码。成功为 0,无结果为 2,其他状态参见响应状态码说明。 |
| 2 | verbose_msg | string | 响应状态说明。成功为 OK,无结果为 No Data。 |
| 3 | data | object | null | MCP 资产测绘业务返回结构;请求失败时可为 null。 |
| 4 | data.total_count | int | 全部命中的测绘结果数量。 |
| 5 | data.page | int | 当前返回的页码(从 1 开始)。 |
| 6 | data.size | int | 当前分页大小(单页返回的最大记录数)。 |
| 7 | data.message | string | 查询结果数量、分页情况或无结果说明。 |
| 8 | data.data | array | 当前页测绘查询结果,按最近扫描时间倒序排列。 |
| 9 | data.data[].id | string | 测绘数据唯一标识 ID,可用于检索单条数据详情。 |
| 10 | data.data[].ip | object | IP 地址及相关情报。 |
| 11 | data.data[].ip.ip | string | IP 值。 |
| 12 | data.data[].ip.verdict | string | IP 地址相关情报判定。 |
| 13 | data.data[].ip.location | object | IP 地理位置。 |
| 14 | data.data[].ip.location.country | string | 国家。 |
| 15 | data.data[].ip.location.region | string | 省或区域。 |
| 16 | data.data[].ip.location.city | string | 城市。 |
| 17 | data.data[].ip.isp | string | ISP 运营商。 |
| 18 | data.data[].ip.asn | object | IP 相关 ASN 信息。 |
| 19 | data.data[].ip.asn.number | string | ASN 号码。 |
| 20 | data.data[].ip.asn.name | string | AS 名称或归属网络运营商。 |
| 21 | data.data[].ip.asn.organisation | string | AS 注册机构。 |
| 22 | data.data[].port | string | 开放端口。 |
| 23 | data.data[].protocol | string | 协议名称。 |
| 24 | data.data[].protocol_type | string | 协议类型,例如 tcp 或 udp。 |
| 25 | data.data[].tunnel | string | 传输隧道类型,例如 ssl。 |
| 26 | data.data[].domain | object | 域名及相关情报。 |
| 27 | data.data[].domain.domain | string | 域名值。 |
| 28 | data.data[].domain.verdict | string | 域名相关情报判定。 |
| 29 | data.data[].domain.icp | object | ICP备案信息。 |
| 30 | data.data[].domain.icp.owner | string | 域名归属。 |
| 31 | data.data[].domain.icp.company_name | string | 备案单位。 |
| 32 | data.data[].domain.icp.company_type | string | 备案单位性质。 |
| 33 | data.data[].domain.icp.site_license | string | 备案编号。 |
| 34 | data.data[].domain.icp.site_name | string | 网站名称。 |
| 35 | data.data[].domain.icp.main_page | string | 网站主页。 |
| 36 | data.data[].domain.icp.verify_time | string | 备案审核时间。 |
| 37 | data.data[].web_title | string | 网页标题;命中敏感内容时返回空字符串。 |
| 38 | data.data[].status_code | string | HTTP 响应状态码。 |
| 39 | data.data[].header | string | HTTP 响应头完整文本;命中敏感内容时返回空字符串。 |
| 40 | data.data[].host | string | 主机名。 |
| 41 | data.data[].application | string | 应用。 |
| 42 | data.data[].component | string[] | 组件列表。 |
| 43 | data.data[].page_info | object[] | 页面内嵌技术栈与组件精细识别信息列表。 |
| 44 | data.data[].page_info[].category | string[] | 页面技术栈分类。 |
| 45 | data.data[].page_info[].name | string | 识别到的技术栈或组件名称。 |
| 46 | data.data[].banner | string | 协议 Banner;命中敏感内容时返回空字符串。 |
| 47 | data.data[].cert | object | 证书信息。 |
| 48 | data.data[].cert.user_name | string | 证书使用者。 |
| 49 | data.data[].cert.user_organization | string | 证书使用者单位名称。 |
| 50 | data.data[].cert.user_location | string | 证书使用者国家或地区。 |
| 51 | data.data[].cert.issuer_name | string | 证书颁发者名称。 |
| 52 | data.data[].cert.issuer_organization | string | 证书颁发者单位名称。 |
| 53 | data.data[].cert.issuer_location | string | 证书颁发者国家或地区。 |
| 54 | data.data[].cert.fingerprint | string | 证书指纹。 |
| 55 | data.data[].cert.purpose | string | 证书用途。 |
| 56 | data.data[].cert.status | string | 证书状态,例如正常或过期。 |
| 57 | data.data[].cert.begin | string | 证书开始时间。 |
| 58 | data.data[].cert.end | string | 证书失效时间。 |
| 59 | data.data[].cert.serial_number | string | 证书序列号。 |
| 60 | data.data[].cert["cert.is_trust"] | bool | 证书是否可信。true 代表可信,false 代表不可信。 |
| 61 | data.data[].hash | object | 网站、Banner、SSH 和 TLS 等指纹 Hash。 |
| 62 | data.data[].hash.html_hash | string | 网站完整源码 Hash。 |
| 63 | data.data[].hash.body_hash | string | 网页 Body 源码 Hash。 |
| 64 | data.data[].hash.dom_hash | string | 网页 DOM 树 Hash。 |
| 65 | data.data[].hash.html_header_hash | string | 网页 Head 源码 Hash。 |
| 66 | data.data[].hash.sitemap_hash | string | 网站 Sitemap Hash。 |
| 67 | data.data[].hash.robots_hash | string | 网站 Robots Hash。 |
| 68 | data.data[].hash.icon_hash | string | 网站图标 Hash。 |
| 69 | data.data[].hash["icon-mm3h-hash"] | string | 网站图标 mm3h Hash。 |
| 70 | data.data[].hash.icon_dhash | string | 网站 Favicon 图标相似性 dHash。 |
| 71 | data.data[].hash.header_hash | string | HTTP 响应头 Hash。 |
| 72 | data.data[].hash.ssdeep_hash | string | 网页源码 Ssdeep Hash。 |
| 73 | data.data[].hash.banner_hash | string | Banner 指纹。 |
| 74 | data.data[].hash.ssh_finger_md5 | string | SSH MD5 指纹。 |
| 75 | data.data[].hash.ssh_finger_sha256 | string | SSH SHA256 指纹。 |
| 76 | data.data[].hash.jarm | string | JARM 指纹。 |
| 77 | data.data[].hash.ja3s | string | JA3S 指纹。 |
| 78 | data.data[].hash.ja4x | string | JA4X 指纹。 |
| 79 | data.data[].hash.ja4s | string | JA4S 指纹。 |
| 80 | data.data[].last_scan_time | timestamp | 最近扫描时间。 |
| 81 | data.permalink | string | X 资产测绘对应查询结果页链接。 |
GET 请求示例
微步在线云 API 支持 cURL、Python、PHP、Java、Go 语言的请求:
Python
cURL
PHP
Java
Go
Python
POST 请求示例
以下示例将 apikey 和 syntax 一并放入 JSON 请求体:
Python
cURL
PHP
Java
Go
Python
POST 请求也可以通过 URL parameters 传递 apikey,JSON 请求体仅保留 syntax:
若 JSON 请求体和 URL parameters 同时传入 apikey,两处值必须一致。
响应规则
- 支持通过
page和size分页查询:- 当
include不包含header和banner时,单页最大支持返回100条数据(size默认 100)。 - 当
include包含header或banner任意大文本字段时,单页最大支持返回50条数据(size默认 50);若传入size > 50系统自动限制为 50 条。
- 当
- 支持通过
include参数按需选择返回字段(支持domain、header、banner、cert、application、component、page_info、hash);若不传则对应字段不返回,仅返回基础固定字段。 - 无结果时返回
response_code=2、verbose_msg="No Data",业务结果数组为空;未指定时间条件时提示“近3个月内未查询到相关结果”,已指定时间条件时提示“指定时间范围内未查询到相关结果”。 - 仅
web_title、banner、header执行敏感过滤;命中敏感内容时对应字段返回空字符串。 app_category命中不支持的组件类型时,返回response_code=-1、data=null,并提示“当前组件类型不支持查询”。- 查询语句的任一独立分支缺少正向锚点时,返回
response_code=-1、verbose_msg="查询条件过于宽泛"、data=null;该请求不发起资产查询,也不消耗调用额度。语法结构错误仍按无效参数处理。
响应示例(JSON)
云API是北京微步在线科技有限公司旗下产品了解微步在线《用户服务条款》《数据保护政策》
联系我们:api@threatbook.cn
Copyright © ThreatBook.CN All Rights Reserved. 京ICP备15044984号-4 北京微步在线科技有限公司 京公网安备11010802025715号