设备指纹

服务端 API

使用 Geelab 设备指纹 v2 服务端 API 查询设备标识、设备信息与风险信号

概述

查询设备指纹:用客户端 SDK 拿到的 device_token,换取设备标识、设备信息与风险信号。

接口

MethodPath用途
POST/api/v2/fp_query/{public_key}查询设备指纹

输入从哪里获取

字段用在从哪里获取
public_key路径 /api/v2/fp_query/{public_key}后台。应用公开标识,用于定位应用和地区。不是认证密钥。
secretAuthorization: Bearer <secret>后台。服务端查询认证。
device_token请求体客户端 SDK 接口。

支持的客户端

iOSAndroidWeb/H5

地区限制

每个应用只属于一个地区,由后台配置。请求必须发到该应用所属地区的节点。

地区说明
GLB全球
NA北美
EU欧洲

发到其他地区的节点时,返回 404messageintegration not found

响应信封

Content-Type: application/json。HTTP 状态码与 JSON code 相同。

成功:

{ "code": 200, "data": {}, "message": "Success" }

失败:

{ "code": 400, "data": {}, "message": "Invalid request" }

校验失败时 data 为:

{
  "errors": [
    { "field": "device_token", "reason": "Field required", "type": "missing" }
  ]
}

错误码

HTTP / codemessage含义
400Invalid request请求体不合法,或 device_token 无效
401Invalid bearer token认证失败,到后台核对 secret
403Forbidden应用不可用,或未通过 IP 白名单
404integration not foundpublic_key 无效,或请求未打到应用所属地区的节点
500Internal server error服务端错误

POST /api/v2/fp_query/{public_key}

查询设备指纹。传入客户端 SDK 返回的 device_token,得到设备标识、设备信息与风险信号。

MethodPOST
Path/api/v2/fp_query/{public_key}
AuthAuthorization: Bearer <secret>
Content-Typeapplication/json
SuccessHTTP 200,code=200message=Success

请求

POST /api/v2/fp_query/{public_key}
Authorization: Bearer <secret>
Content-Type: application/json

Path

字段类型必填含义从哪里获取
public_keystring应用公开标识后台

Headers

字段必填含义从哪里获取
AuthorizationBearer <secret>,服务端查询认证secret 从后台获取
Content-Typeapplication/json

Body

{
  "device_token": "<from-client-sdk>",
  "metadata": {
    "account_id": "account-001",
    "phone_num": "+8613800000000",
    "phone_sha256": "opaque-hash-value",
    "email": "[email protected]"
  },
  "event_type": "login",
  "event_time": "2026-08-20T10:30:00+08:00"
}
字段类型必填含义从哪里获取
device_tokenstring本次查询的设备凭证客户端 SDK 接口
metadataobject业务侧关联信息,见下表调用方自行填写
event_typestring业务事件类型,如 login调用方自行填写
event_timestring事件时间,RFC 3339(需带时区或 Z调用方自行填写
metadata

均为可选 string。

字段含义
account_id账户标识
phone_num手机号明文
phone_sha256手机号哈希
phone_country_code国家/地区代码
phone_prefix号码前缀
email邮箱明文
email_sha256邮箱哈希
email_domain邮箱域名
ip_addr_v4IPv4
ip_addr_v6IPv6
user_agentUser-Agent
ja3JA3
ja4JA4
mac_prefixMAC 前缀
wifi_bssid_prefixWi-Fi BSSID 前缀
tls_cipherTLS cipher

最小请求体:

{ "device_token": "<from-client-sdk>" }

响应 200

{
  "code": 200,
  "data": {
    "request_id": "req_0198c7a1-5b2e-7c10-8d44-1234567890ab",
    "event_id": "evt_0198c7a1-5b2e-7c10-8d44-1234567890ab",
    "fp_detail": {
      "device_id": "GEE4-xxxxxx",
      "version": "1.0"
    },
    "signals": [
      {
        "signal": "CLOUD_PHONE",
        "level": "HIGH",
        "confidence": 0.8
      }
    ],
    "detail": {
      "client_type": "Android",
      "device_basic": {
        "os": "Android",
        "pla": "arm64-v8a",
        "mod": "Pixel 8",
        "osv": "14"
      },
      "ip_info": {
        "ip": "1.1.1.1"
      }
    }
  },
  "message": "Success"
}

data

字段类型含义
request_idstring分析 ID。格式 req_ + UUID v7。同一 device_token 多次查询值相同。
event_idstring本次查询 ID。格式 evt_ + UUID v7。每次查询值不同。
fp_detailobject设备指纹
signalsarray命中的信号列表,未命中时为 []
detailobject客户端类型、设备信息、IP
fp_detail
字段类型含义
device_idstring设备指纹
versionstring指纹版本,当前为 "1.0"
signals[]
字段类型含义
signalstring信号标识,例如 CLOUD_PHONE
levelstringLOW / MEDIUM / HIGH
confidencenumber0.01.0

各信号的取值与说明见下文「信号」。

detail
字段类型含义
client_typestringAndroid / iOS / Web/H5
device_basicobject设备基础信息,结构随 client_type 变化
ip_infoobject{ "ip": "<string>" }

Android / iOS 的 device_basic

{
  "os": "Android",
  "pla": "arm64-v8a",
  "mod": "Pixel 8",
  "osv": "14"
}
字段含义
os操作系统
pla架构
mod型号
osv系统版本

Web/H5 的 device_basic

{
  "browser": { "name": "Chrome", "version": "145.0.0.0", "major": "145" },
  "device": { "model": "Macintosh", "vendor": "Apple" },
  "os": { "name": "macOS", "version": "10.15.7" }
}

错误

HTTP 状态码等于 codemessage 为下表中的精确字符串。

HTTPmessagedata含义
400Invalid request{ "errors": [ { "field", "reason", "type" } ] }缺字段、类型错误或 event_time 非法
400Invalid request{ "errors": [{ "field": "device_token", "reason": "Invalid token", "type": "value_error" }] }device_token 无效
401Invalid bearer token{}认证失败
403Forbidden{}应用不可用,或未通过 IP 白名单
404integration not found{}public_key 无效,或请求未打到应用所属地区的节点
500Internal server error{}服务端错误
{
  "code": 400,
  "data": {
    "errors": [
      { "field": "device_token", "reason": "Field required", "type": "missing" }
    ]
  },
  "message": "Invalid request"
}
{
  "code": 401,
  "data": {},
  "message": "Invalid bearer token"
}

示例

{public_key}{secret} 从后台复制;{device_token} 用客户端 SDK 返回值;请求发到应用所属地区的节点。

curl -sS -X POST "https://{host}/api/v2/fp_query/{public_key}" \
  -H "Authorization: Bearer {secret}" \
  -H "Content-Type: application/json" \
  -d '{
    "device_token": "{device_token}",
    "metadata": { "account_id": "account-001" },
    "event_type": "login",
    "event_time": "2026-08-20T10:30:00+08:00"
  }'

信号

fp_query 成功响应里 data.signals[] 的取值。未命中时数组为 []

字段类型含义
signalstring信号标识,例如 CLOUD_PHONE
levelstringLOW / MEDIUM / HIGH
confidencenumber0.01.0

信号一览(51)

signallevelconfidence说明
BEING_DEBUGGEDHIGH1设备存在被调试风险,可进行逆向分析、破解、群控自动化
DEBUG_MODE_OR_TEST_APPLOW1设备开启了调试模式或使用 debug/ 破解版本非商店下载的应用包
EMULATORHIGH0.95检测到传统模拟器风险
CLOUD_PHONEHIGH0.8检测到云手机(或 ARM 服务器)风险
RUNNING_ON_MACOSMEDIUM1检测到 Mac 运行 App 风险
VPN_ENABLEDLOW1设备开启 VPN 中
NETWORK_PROXYMEDIUM1设备开启网络代理中
INVALID_PACKAGELOW1检测到包名篡改或重打包
TOKEN_EXPIREDMEDIUM0.9device_token 过期或重复使用
LIMIT_EXCEEDMEDIUM1超过限制
SCREEN_SHARINGLOW1设备正在进行屏幕分享
VOICE_CONNECTEDLOW1设备正在语音通话中
WHITELIST_ACCOUNT_IDHIGH1用户账号黑名单
WHITELIST_IPHIGH1IP 黑名单
WHITELIST_DEVICE_FINGERPRINTHIGH1设备指纹黑名单
IP_CRAWLER_OR_BOTMEDIUM0.8IP 存在恶意破解或爬虫行为
IP_MALICIOUS_ATTACKHIGH0.6IP 存在恶意攻击行为
IP_SUSPICIOUS_PROXYMEDIUM0.8IP 疑似代理IP
BLACKLIST_ACCOUNT_IDLOW1用户账号白名单
BLACKLIST_IPLOW1IP 白名单
BLACKLIST_DEVICE_FINGERPRINTLOW1设备指纹白名单
DEVICE_JAILBREAKHIGH1iOS 设备存在越狱行为
DEVICE_ROOTEDHIGH1Android 设备存在 Root 行为
SUSPICIOUS_CUSTOM_ROMHIGH0.8Android 设备使用可疑定制 ROM
SUSPICIOUS_OPEN_SOURCE_ROMHIGH0.9Android 设备 ROM 为安卓开源项目
BROWSER_COOKIE_FEATURE_DISABLEDMEDIUM0.9浏览器cookie不可用
PSEUDO_BROWSER_ENVHIGH0.9伪造的浏览器环境
BROWSER_INCOGNITO_MODELOW0.8浏览器处于隐私模式
DEVICE_BOOTLOADER_UNLOCKEDHIGH0.8检测到设备 Bootloader 已解锁
SUSPICIOUS_DEVICE_RESETHIGH0.8疑似设备重置
SYSTEM_VERSION_TOO_LOWMEDIUM0.6设备系统版本过低
DEVICE_WITHOUT_SIMLOW0.4检测到设备未插 SIM 卡
HOOK_TAMPERING_LOWMEDIUM1设备有代码篡改低风险,使用该标签需要排除自身开发篡改的行为
HOOK_TAMPERING_MEDIUMHIGH1设备有代码篡改中风险,可篡改代码逻辑
HOOK_TAMPERING_HIGHHIGH1设备有代码篡改高风险
SUSPICIOUS_DEVICE_INFO_TAMPEREDHIGH0.8设备存在信息伪造风险,设备属性或指纹不匹配
ANTIDETECT_BROWSERHIGH0.8设备运行在反检测浏览器中
APP_CLONE_TOOL_INSTALLEDLOW1设备存在安装多开工具风险
TAMPER_TOOL_INSTALLEDLOW1检测到设备安装了改机工具风险
AUTOMATION_TOOL_INSTALLEDLOW1检测到设备安装了群控/自动化工具风险,可规模化黑产操作
REVERSE_ENGINEERING_TOOL_INSTALLEDLOW1检测到设备安装逆向工具风险
NETWORK_TAMPER_TOOL_INSTALLEDLOW1设备存在使用网络篡改工具风险
GAME_TAMPER_TOOL_INSTALLEDLOW1设备存在使用游戏修改器工具风险
VIRTUAL_LOCATION_TOOL_INSTALLEDLOW1检测到设备安装了虚拟定位风险
RUNNING_IN_VIRTUAL_MACHINEHIGH1当前设备处于虚拟机环境中
RUNNING_IN_CLONED_APPHIGH1当前处于处于多开环境中
USING_DEVICE_TAMPERING_TOOLHIGH1当前正使用改机或风险工具
USING_AUTOMATION_TOOLHIGH0.95当前正使用群控或自动化工具
USING_REVERSE_ENGINEERING_TOOLHIGH1当前正使用逆向篡改工具
USING_VIRTUAL_LOCATIONHIGH1当前正使用虚拟定位工具
RUNNING_IN_SYSTEM_CLONEDLOW0.9设备系统多开风险

OpenAPI 3.1

需要生成客户端或请求校验器时,可下载 设备指纹 v2 OpenAPI 3.1 描述文件