跳到正文

Quake相似网站图标(Favicon)聚合统计

接口说明

以一个网站图标(Favicon)为种子,先通过相似图标计算服务扩展出一批视觉相似的图标哈希,再在 quake_service 索引中按这些哈希做聚合统计,返回每个相似图标对应的资产数量分布及图标图像(base64)。 用于"以图搜资产"——即使目标站点更换了图标文件、导致哈希不同,也能通过图像相似度把同一套系统/同一厂商的资产聚到一起。

请求地址

https://api.f.360.cn/api/v3/query/similar_icon/aggregation

请求方法

POST

请求参数

名称类型位置是否必填示例值说明
favicon_hashstringbody是-favicon的MD5值
similarfloatbody是0.9相似度,范围0-1
sizeintbody否-返回数量,最多支持50条数据返回
ignore_cacheboolbody否-是否忽略缓存
start_timestringbody否-查询起始时间,接受2020-10-14 00:00:00格式的数据,时区为UTC
end_timestringbody否-查询截止时间,接受2020-10-14 00:00:00格式的数据,时区为UTC

响应参数

data 字段说明

名称类型示例值描述
codeinteger-状态码,0 成功,非 0 异常
messagestring-提示信息
dataArray(object)-相似图标聚合结果列表,每个元素为一个图标分组
data.keystring-图标 Favicon 的 MD5 哈希
data.doc_countinteger-该图标哈希对应命中的资产数量
data.datastring-图标图像的 base64 编码(优先取命中数据中的图像,缺失时从图标存储桶回源获取)

请求示例

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

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

APPID=""  # apikey
SECRET=""  # salt
URL="https://api.f.360.cn/api/v3/query/similar_icon/aggregation"
BODY='{"favicon_hash":"827fd6c561d4b1f932f75e0f9a17f766","similar":0.9}'

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": [
        {
            "key": "827fd6c561d4b1f932f75e0f9a17f766",
            "doc_count": 84622,
            "data": "AAABAAEAICAAAAEAIADSAgAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAAgAAAAIAgGAAAAc3p69AAAAplJREFUWIXt1j2IHGUYB/DfOzdnjIKFkECIVWIKvUFsIkRExa9KJCLaWAgWJx4DilZWgpDDiI0wiViIoGATP1CCEDYHSeCwUBBkgiiKURQJFiLo4d0eOxYzC8nsO9m9XcXC+8MW+3z+9/l6l2383xH+iSBpElyTdoda26xsDqp/h0CVZ3vwKm7tMBngAs7h7eRYebG6hMtMBHbMBX89vfARHprQ5U8cwdFQlIOZCVR5di1+w/wWXT/EY6EoN5NZCODuKZLDwzgSMCuBe2fwfX6QZwtpWzqfBBtLC3txF/ZhxKbBGx0EfsTJS77vwmGjlZrD4mUzUOXZjVjGI65cnTXchB8iupdDUb7QinsQZ7GzZftdQj2JVZ49iC/w6JjksIo7OnS9tiA5Vn6GtyK2+1MY5NkhfGDygVrBAxH5WkPuMjR7/3UsUFLl2Q68s4XkA3ws3v9zoSjX28Kr5wL1xrTxa6ou+f6OZGvqPg9v1wZeaUjcELE/DVfNhWFSvy/enOIZ9eq1sTokEMNLWI79oirP8g6fXpVnh7GEvY1sV/OJ4f0UhyKKk6EoX4x5pEkgXv6L6OM99YqNw/c4kXSwG5nkIfpLCynuiahW1GWeJHkfT4aiXO9atz1XcD6I6yLyHu6bIPk6Hg9FeYZ63y9EjBarPDvQ8VJ1nd9V3D4m+RncForyxFCQ4hSeahlej88Hefauurdwaufr5z/F/ZHAX6nL+mZE18e36IWiHLkFocqzW9QXcNz1+wUHxJ/f10JRPjvGP4pk/vj5L3F8AtufdD+/p6dJDknzX+05fDLGtife/766t9MRgFCUffWTudwE3AqBlVCUf0xLYGTQqzzbhydwJ3Y34g318J1tmX+DPBTlz9MS2MY2/nP8DTGaqeTDf30rAAAAAElFTkSuQmCC"
        }
    ],
    "meta": {}
}

业务异常响应

{
    "code": "q3005",
    "message": "调用API过于频繁",
    "data": {},
    "meta": {}
}
{
    "code": "GC00105", 
    "src": "apiholder",
    "msg": "appid over field"
}