login · password_recovery · profile_change
账户盗用(账户接管)防护
已知账户出现在从未用过的设备上,浏览器谎报自身信息,反检测浏览器,时间上不可能完成的出行。每一项都以证据形式返回,让您只在必要时才要求第二因素验证。
01 · 面向反欺诈的设备智能 由您打标签的业务环节
您选择的每个页面,一个标签
在您的网站上部署一段脚本,桌面端约十分之一秒即可读取浏览器与设备信息。您的后端发起一次带签名的调用,附上您命名的标签,即刻获得结果:信任分、证据覆盖率和 13 项指标,覆盖机器人与自动化、浏览器伪装与模拟器,以及 VPN、代理和 Tor,每条建议都附带理由。用证据而非猜测识别账户盗用(账户接管)、虚假注册和提现欺诈。我们给出建议,由您决策并执行。
在您打标签的任意页面同步返回 · 先以影子模式运行,再影响任何决策 · 规则、名单和决定都由您掌握
如何解读这条响应 · v1.1/login_completed 示例
为什么给出这条建议
ALLOW
策略所计入的指标均未检测到。合同示例:FingerTrackID 的托管策略在任何分数下都建议 MONITOR;ALLOW 来自贵公司在自有风控规则中设定的分数区间。依据 policy-login-v1 作出。
分数是什么,不是什么
trust_score 100
表示在该策略版本下对本次访问的信任度,而非欺诈概率。在 COMPLETED 之外它为 null,绝不使用默认值。
能看到多少
evidence_coverage 100
预期检查中实际完成的比例。缺失的证据会在这里列明:它会降低覆盖率,但绝不会成为风险理由。
接下来交给您
customer_action
您的后端决策并执行,再回传它做了什么以及真实结果。我们从不拦截,也从不冻结资金。
POST /v1/assessments → 201
event-assessment.v1.1 · 合同示例
{ "schema_version": "event-assessment.v1.1", "tag": "login", "assessment_status": "COMPLETED", "trust_score": 100, "device_match_confidence": 0.98, "evidence_coverage": 100, "signals": [ … 13 objects ], "limitation_codes": [], "reason_codes": ["NO_ADVERSE_INDICATOR_MATCH"], "recommended_action": "ALLOW", "recommendation_basis": "EVALUATION", "policy_version": "policy-login-v1" // … 21 more fields in the full response: ids, snapshot, versions, timestamps}
1{2 "schema_version": "event-assessment.v1.1",3 "assessment_id": "01996f2a-0000-7000-8000-000000000101",4 "assessment_version": 1,5 "supersedes_assessment_id": null,6 "business_event_id": "01996f2a-0000-7000-8000-000000000102",7 "external_event_id": "login_20260904_000001",8 "tag": "login",9 "assessment_status": "COMPLETED",10 "retryable": false,11 "trust_score": 100,12 "device_intelligence_snapshot_id": "01996f2a-0000-7000-8000-000000000103",13 "device_intelligence_snapshot_version": 1,14 "device_id": "dev_0123456789abcdefghij",15 "device_match_confidence": 0.98,16 "evidence_coverage": 100,17 "data_freshness": {18 "evidence_cutoff_at": "2026-09-04T12:00:00Z",19 "oldest_required_observed_at": "2026-09-04T11:59:59Z",20 "maximum_required_age_ms": 300000,21 "all_required_fresh": true22 },23 "signals": [24 { "signal_code": "ANTI_FINGERPRINTING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },25 { "signal_code": "BOT_AUTOMATION", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },26 { "signal_code": "BROWSER_SPOOFING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },27 { "signal_code": "EMULATED_ENVIRONMENT", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },28 { "signal_code": "PRIVATE_BROWSING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },29 { "signal_code": "BROWSER_PRIVACY_BRAVE", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },30 { "signal_code": "BROWSER_PRIVACY_SAFARI", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },31 { "signal_code": "BROWSER_PRIVACY_SAMSUNG_INTERNET", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },32 { "signal_code": "NETWORK_PROXY", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },33 { "signal_code": "NETWORK_VPN", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },34 { "signal_code": "NETWORK_HOSTING", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },35 { "signal_code": "NETWORK_TOR", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … },36 { "signal_code": "DEVICE_MULTI_USER", "signal_state": "NOT_DETECTED", "source": "DERIVED", "detector_version": "detector-web-v1", … }37 ],38 "limitation_codes": [],39 "reason_codes": ["NO_ADVERSE_INDICATOR_MATCH"],40 "recommended_action": "ALLOW",41 "recommendation_basis": "EVALUATION",42 "policy_version": "policy-login-v1",43 "fallback_policy_version": "production-observation-fallback-v2",44 "ruleset_version": "ruleset-web-v1",45 "signal_catalog_version": "signals-web-v1",46 "feature_schema_version": "features-v1",47 "resolver_version": "resolver-v1",48 "sdk_version": "web-sdk-1.0.0",49 "provider_versions": ["network-provider-2026-09-04"],50 "evidence_cutoff_at": "2026-09-04T12:00:00Z",51 "evaluated_at": "2026-09-04T12:00:01Z",52 "expires_at": "2026-09-04T12:05:00Z",53 "correlation_id": "corr-assessment-login-0001"54}
决定它的版本 · policy-login-v1 · production-observation-fallback-v2 · ruleset-web-v1 · signals-web-v1 · features-v1 · resolver-v1 · web-sdk-1.0.0 · network-provider-2026-09-04
完整响应中的 13 个信号 · 指标矩阵 ↓
数字里的产品
响应
13
每次响应都包含的 Web 指标
3
每项指标的状态:已检测到、未检测到、未评估
14
“未评估”都有明确理由,绝不静默返回 false
5
可能的建议
3
相互独立的度量:信任度、设备匹配、证据覆盖率
1
每个被评估事件一次签名调用
采集
17
每次采集包含的浏览器与设备证据分区
48
与浏览器自称版本进行核对的浏览器 API
125
毫秒以内:Chrome、Firefox 和 Safari 桌面端采集耗时中位数
0
向您的用户弹出的权限请求
您的规则与您的调查
54
每次评估中计算的上下文洞察
67
贵公司可计入自有评分的规则:13 项指标和 54 项洞察
6
网络指标所依据的公开参考名单
6
控制台语言:英语、葡萄牙语(巴西和葡萄牙)、西班牙语、法语、德语
绝不 —— 且不因套餐而改变
—— 除采集耗时(在我们的测试机上冷缓存测得)外,每个数值都是对某个版本化合同、目录或名单的计数。它们都不随套餐或用量变化。
03 · 应用场景
在您的后端放行操作之前,设备智能回答一个问题:这个页面的另一端到底是什么?同一个调用服务于每个业务环节;您发送的标签只用于归档。
login · password_recovery · profile_change
已知账户出现在从未用过的设备上,浏览器谎报自身信息,反检测浏览器,时间上不可能完成的出行。每一项都以证据形式返回,让您只在必要时才要求第二因素验证。
signup · login · checkout
无头浏览器、自动化框架、按签名识别的 AI 代理,以及来自数据中心的流量。BOT_AUTOMATION 和 NETWORK_HOSTING 说明看到了什么;覆盖率说明能看到多少。
signup · deposit · promotions
每台设备、每个 IP 上的账户数和人数,设备画像在您用户群中的稀有程度,同一次采集在另一台设备上重复出现。这些是您的规则可以计入的上下文,绝不是自动裁定:一个人可以拥有多个合法账户。
withdrawal · pix_transfer · trade
新设备出现后一小时内的提现、多个账户共用的收款人、被您标记为确认欺诈的关联账户。资金的暂缓或审核由您的后端处理;我们从不经手。
任意业务环节
Android 模拟器与虚拟化、与声明系统不可能匹配的 GPU、被自身 API 揭穿的浏览器版本。设备指纹信号以哈希值和系列形式读取,绝不读取原始像素。
任意业务环节
已知 VPN 服务商、公共代理、Tor 出口节点、托管网段和 Apple iCloud Private Relay,均来自我们自行更新的公开名单。匿名化只是上下文,不是罪证:权重多少由您的策略决定。
04 · 度量
把信任度、覆盖率和设备匹配合并成一个数字,恰恰掩盖了分析师最需要看到的东西:问题出在访问本身,还是出在证据上。
trust_score
72
回答在该策略版本下本次访问有多可信;您发送的标签不会改变它。取值为 0 到 100 的整数。仅在 assessment_status = COMPLETED 时存在;其他任何状态下都为 null,绝不使用默认值。
不是欺诈概率、个人信誉,也不是缺失数据时的默认值。我们展示 72/100,绝不说“72% 可信”。
device_match_confidence
0.94
表示本次访问来自同一台已见设备的证据强度,取值 0 到 1。随附 device_id,即该概率聚类的不透明公开标识符。
不是个人身份,也不是硬件证明。Party 和 Account 是两回事。
evidence_coverage
100
预期的检查集合中有多少能够执行,取值 0 到 100。每个适用但处于 NOT_EVALUATED 的指标都会降低覆盖率,并出现在 limitation_codes 中。
不计入分数。覆盖率低既不会拉低分数,也不会抬高分数:它只会让评估结果为不确定。
为什么我们不把它们加总
单一的“可疑度”分数混合了三个不同的问题:这次访问值得信任吗?证据是否充分?是不是同一台设备?答案分开给出时,您的分析师知道该要求第二因素、等待采集,还是查看历史。答案混在一起时,他们只知道“得了 42 分”。
05 · 13 项指标
每次 Web 评估都会返回全部 13 个代码。变化的是每一项的状态,列表本身永远不变。每项指标都有自己的版本化检测器,响应会注明评估它的版本。缺失、过期或出错的检测器绝不会变成 false。
signal_catalog web · 13 个代码 · withdrawal_completed 示例
环境完整性
浏览器隐私 · 中性上下文
网络 · 中性上下文
设备
在我们的托管策略中,仅凭 Tor 绝不足以给出 BLOCK_RECOMMENDED;贵公司配置的规则则遵循其自行选择的权重和阈值。在这个 v1 合同示例中,policy-withdrawal-v1 要求对提现进行审核,而非拦截,唯一的原因代码说的正是这一点。目前生产环境中的托管策略在任何分数下都建议 MONITOR。
同一项指标,三种状态
缺失、过期或出错的检测器绝不会变成 false。NOT_APPLICABLE 只来自目录中按渠道、引擎和平台划分的不可变矩阵;您的标签永远不会改变它,策略关闭、超时或服务中断也绝不会走这条捷径。
默认为中性上下文
它们可能限制我们能观测到的内容。只有在证据未被评估的地方,覆盖率才会下降。它们不是欺诈。它们描述的是环境,而不是指控个人。在我们的托管策略中,它们单独出现时绝不足以给出 BLOCK_RECOMMENDED;贵公司配置的规则则遵循其自行选择的权重和阈值。当网络类型无法区分时(例如在 Apple 的 iCloud Private Relay 之后),托管、VPN 和代理都保持 NOT_EVALUATED,并附 NETWORK_TYPE_AMBIGUOUS:我们绝不会凭一个布尔值标出三项检测结果。
网络证据来自我们在自有基础设施上更新的公开参考名单:Tor 出口地址、云服务商网段、托管网络名单、VPN 服务商网段以及公共代理数据库。您用户的地址绝不会发送给名单发布方。超过最长有效期的名单会使对应指标保持 NOT_EVALUATED,绝不会变成 NOT_DETECTED。
06 · 上下文洞察
在每次评估中、返回响应之前,我们会根据采集到的数据和贵公司自身的历史计算 54 项上下文洞察:还有谁在用这台设备,账户的动作有多快,来自哪个网络,与哪些账户相邻。FingerTrackID 的托管策略不把它们计入分数。在您自己的风控规则中,每一项都可以设为关闭、幽灵或启用,并为“异常”和“非常异常”分别设定扣分:启用的洞察一旦触发,就会从信任分中扣分,并在 reason_codes 中注明自身。
context-insight.v1 · 六大主题共 54 项洞察 · 与控制台和您的规则中的分组一致
账户与设备 · 10
账户的新设备和新操作系统 · 30 天内该设备上的不同账户数和人数 · 同一人在该设备上的账户 · 24 小时内每个账户和每个人的设备数 · 高活跃设备 · 设备画像在贵公司中是常见、少见还是罕见 · 设备 cookie 丢失
提现与订单 · 7
新设备出现后一小时内的提现 · 30 天内每台设备的收款人数和每个收款人对应的账户数 · 每个账户的提现次数和金额 · 每个账户的订单数及订单间隔中位数
网络与位置 · 12
账户的新国家和新网络服务商(ASN) · 每个账户的不同国家、服务商和 IP 数 · 每个 IP 的账户数和人数 · 不可能的出行 · 浏览器时区与 IP 所在国家不符 · VPN 出口国家 · 服务商在公开滥用名单上 · Apple iCloud Private Relay
浏览器与 SDK 完整性 · 16
开发者工具已打开 · 自动化痕迹 · 反检测浏览器标记 · 与声明浏览器不符的 TLS 签名及其 30 天内的稳定性 · 软件渲染器和 GPU 系列 · 两次读取之间发生变化的 canvas 或音频 · 应用内浏览器 · 可能的访客模式 · 按签名识别的 AI 代理 · 机器人类别 · 与批准包不同的 SDK · 一个 SDK 会话出现在多台设备上 · 同一次采集在另一台设备上重复出现 · 设备 cookie 在相距过远的地点被使用
速度 · 5
每台设备和每个账户在 5 分钟、1 小时和 24 小时内的访问次数;每个 IP 在 5 分钟和 1 小时内的访问次数 · 每个账户和每台设备在 1 分钟、5 分钟和 1 小时内使用同一标签的评估次数
账户关联,一跳 · 4
使用过相同设备的其他账户 · 检测到自动化或浏览器伪装的相邻账户 · 被您标记为确认欺诈的相邻账户 · 与其他账户共用的提现收款人
三种状态 · 给出理由,绝不填零
部分洞察取决于您发送的内容。没有账户或个人引用、没有标签或没有结果回传时,该项会如实说明:未发送账户、评估无标签、未发送结果。带标签的请求不包含金额或收款人,因此提现金额和收款人相关项也会如此说明。首次访问、匿名化网络,或某项检查一小时窗口之外的 IP,同样是理由。
它们不是什么
reason_codes。分析师在哪里查看它们
访问详情。“访问上下文”卡片按主题对洞察分组,显示各自的时间窗口、所依据历史的截止时间、在您的标尺上的异常程度,以及每个无值项的理由。超出评估时间预算的洞察会在后台完成并注明;它绝不会拖延响应或导致响应失败。
指标目录。一个页面说明 13 项指标各自检测什么、什么情况下会未评估、能否影响分数,并列出上下文洞察及其可能无值的理由。
Canvas、WebGL、音频和字体在每家公司的托管采集策略下读取,仅以派生值形式存在,并为其中少数洞察提供数据,例如 GPU 系列、软件渲染器或两次读取之间变化的渲染结果。浏览器不允许某项检查时,该项保持未评估,并附理由。
07 · 不确定也是一种结果
缺失的证据不会产生 100 的信任度,也不会变成欺诈信号。没有分数时,建议来自冻结在策略版本中、并受其哈希覆盖的回退方案,而且所有无分数状态都只有一个答案,与标签无关:MONITOR。绝不会是 ALLOW。
合同示例中的无分数情形
标签从不选择回退方案。在托管策略中,任何标签下的每个无分数状态都建议 MONITOR:继续放行并记录。下面三个合同示例也是如此。
INCONCLUSIVE标签 login · SDK 未加载
无采集:trust_score: null、evidence_coverage: 0、COLLECTOR_NOT_LOADED,依据 INSUFFICIENT_EVIDENCE。绝不会以 ALLOW 放行。
INCONCLUSIVE网络证据不可用
四项网络指标 NOT_EVALUATED、evidence_coverage: 69、PROVIDER_UNAVAILABLE。无论是什么操作,都留在您的系统中,由您决定;我们从不冻结资金。
FAILED标签 pix_transfer · 策略不可用
技术故障:POLICY_UNAVAILABLE、policy_version: null,依据 TECHNICAL_FAILURE。绝不解读为“无风险”。
没有分数时我们绝不建议 ALLOW · 示例中的 fallback_policy_version 为 production-observation-fallback-v2 · 每次读取策略时都会一并校验回退方案
四种评估状态
目录中的 14 个限制代码 · 说明缺了什么,绝不说明为何有风险
限制代码解释的是采集与质量;原因代码解释的是策略。每个 NOT_EVALUATED 的指标都指向自己的限制代码;评估会把它们全部汇总到 limitation_codes。采集限制绝不是风险理由。
08 · 由您决定
recommended_action 说明策略的建议。customer_action 说明您做了什么。两个字段,因为是两件事实。
谁建议,谁决定,谁执行
FingerTrackID 给出建议
绝不仅凭隐私因素 · Tor、VPN、代理、无痕模式、共用设备
您的流程做决定
您的后端决策并执行。我们返回建议;目前托管策略的回答是 MONITOR,仅作观察。访问如何处理,由您这边决定并执行。您了解账户、额度、历史和摩擦成本。我们不了解。
您执行并回传
customer_action · 您回传的字段
每种建议不意味着什么
策略未发现需要对本次访问增加摩擦的理由。不意味着此人合法或此次访问已获认证。只有在有分数且必需证据已评估时才会给出。
继续放行,但要记录。这是所有标签下的无分数回退方案,也是目前托管策略在任何分数下的回答。不意味着嫌疑已确认,也不要求用户采取任何动作。
要求第二因素或确认。不意味着我们会去质询任何人:展示验证的是您。
转人工审核。不意味着我们冻结资金:操作留在您的系统中,由您决定。
策略建议拒绝。不意味着已执行拦截、已确认欺诈或已封禁。当您拦截时,这会成为 customer_action: BLOCKED,即您自己的事件,并用于衡量准确率。
09 · 集成
网站上一段脚本,后端一个服务器到服务器的端点,再加两个调用回传动作和结果。客户端不做任何决策。
网站上的 SDK
从您自己的子域名提供。在您发送需要评估的请求之前,无论哪个页面,它都会采集浏览器和环境信号并收到 202 PROCESSING:这只确认已接收,不是结果。网络信号由您采集域名上的边缘节点补充,绝不由脚本采集。分数、信号或决策都不会返回浏览器。
import { initializeSdk } from '@ftid/sdk-web'
// publicKey is a public locator, not a secret.
// collectionOrigin is YOUR collection domain (https).
const sdk = initializeSdk({
publicKey: 'pub_app_0123456789abcdef',
collectionOrigin: 'https://collect.yourcompany.com',
})
// ACCEPTED (202 PROCESSING on the wire): confirms receipt, not a result.
const collection = await sdk.collect()
if (collection.status !== 'ACCEPTED') {
// Without collection the journey continues; the backend will get
// INCONCLUSIVE / COLLECTOR_NOT_LOADED: no fake score.
return continueWithoutToken()
}
// Create the event before sending the request to be assessed.
const event = sdk.createEvent(collection.observation)
// Only a COMPLETED collection yields a token. The token goes in the POST
// that YOUR backend makes; the decision never comes back here.
const ctx = await sdk.getEventContext(event)
const token =
ctx.status === 'COMPLETED'
? ctx.eventContextToken
: null您的后端发起调用
对十行规范文本做 HMAC-SHA-256 —— 标记、key_id、方法、路径、时间戳、事件与请求 ID、内容元数据,最后一行是请求体原始字节的 SHA-256。计算哈希前绝不重新序列化 JSON;合同附带规范向量。key_id 是唯一的公开定位符。密钥从不传输。v1.1 合同中的规范向量 requests.both_refs_deadline_750:与 v1 相同的路由和相同的签名,用 tag 取代 journey、action 和 journey_context。
POST /v1/assessments HTTP/1.1
Host: api.fingertrackid.com
Content-Type: application/json
X-FTID-Signature: v1=<key_id>:<mac-hex>
X-FTID-Timestamp: 1791720000
X-FTID-Request-Id: <uuidv7 of the attempt>
X-FTID-External-Event-Id: evt:tag-0003
{
"schema_version": "event-assessment-request.v1.1",
"external_event_id": "evt:tag-0003",
"idempotency_key": "idem-tag-0003",
"occurred_at": "2026-10-11T12:00:00.000Z",
"subject_ref": "subject:synthetic",
"account_ref": "account:synthetic",
"event_context_token": "ctx.synthetic-token_0003",
"tag": "pix_transfer_a1b2c3d4e5f6g7h8i9j0abcdeabcdeabcdeabcdeabcdeabcdez",
"deadline_ms": 750
}tag 是最长 64 个字符的小写 slug(字母、数字和下划线,最多十个数字),绝不包含个人数据;此向量正好处于该上限 · subject_ref 和 account_ref 可以为 null,且 account_ref 必须搭配 subject_ref · refs 是您自己的不透明代码,绝不是身份证号、邮箱或顺序 ID · deadline_ms 是 250 到 5000 之间的整数,或为 null 表示 5000;超时将返回可重试的 503 Problem,而不是部分分数
同步响应
然后是两个反馈调用:customer_action 回传您做了什么,得知结果后再用 truth_status 回传真实结果(结局:合法、确认欺诈或证据不足)。合同对二者的要求与评估调用相同:持久提交之前不算接受,完全相同的重试不会产生第二次效果。结果可以事后更正 —— 更正以后继记录追加,之前的记录仍可读取。
POST /v1/assessments/POST /v1/assessments/
Web,任何现代浏览器均可 · 无需安装应用 · SDK、评估和反馈在同一份版本化合同中
npm install @fingertrackid/server 替您为调用签名,@fingertrackid/mcp 让 Claude Code、Cursor 或任何支持 MCP 的编程代理依据公开合同完成集成。分步说明见快速入门、Web SDK 指南和 API 参考。
10 · 对浏览器零信任
来自浏览器的任何内容都不被视为权威。评估是服务器到服务器的签名调用,每次尝试只计一次:重复调用不会产生新效果。
谁与谁通信
浏览器只收到不透明的会话 ID 和事件 ID。分数、信号和建议在服务器上产生,也只留在服务器上。第一方 cookie 经过签名,HttpOnly、Secure,并限定于您的租户和应用。
调用剖析
ftidHmacV1key_id UUIDv7 是唯一的定位符;租户、应用、环境和能力只有在恒定时间比较验证 MAC 有效后才具有权威。X-Client-Id、旧版 nonce 和多重签名一律拒绝。request_id;无效的 MAC 不会产生预留。assessment-unavailable(503、retryable: true),而不是部分分数。key_id 不存在、已吊销或签名错误,都返回同样的 authentication-failed。key_id 是否存在。请签发新的 request_id。11 · 版本化策略
调整任一指标的灵敏度都会生成新版本,附带作者、生效期、模拟和回滚。历史不会改变。缺少真实版本将阻止使用。
作出决策的版本 · withdrawal_completed 示例
policy-withdrawal-v1
correlation_id 用于支持排查,不暴露个人标识符。对外暴露的版本是不透明的公开标签;数据库内部 ID 从不出现在 API、webhook 或控制台中。
策略版本冻结了什么
可复现,绝不改写
login_completed 示例
assessment_version1
supersedes_assessment_idnull
login_completed_revision_2 示例
assessment_version2
supersedes_assessment_id…0000000101
运营修订会保留事件 received_at 时生效的策略及其他所有版本。用新策略重算旧事件是单独的模拟;它绝不会改写当初指导该历史决策的建议。
12 · 影子模式
影子模式就是让 FingerTrackID 与您现有的方案并行运行,响应不触及任何决策。您进行对比、回传真实结果,然后才开始采用建议。我们建议从这里起步。
完整闭环
SDK 采集
202 PROCESSING · event_context_token
您的后端请求评估
POST /v1/assessments · 同步
您通过自己的流程决策
影子模式下,不使用响应
您回传动作
customer_action · POST …/customer-actions
您回传结果
truth_status · POST …/outcomes
recommendation_alignment · 由服务器根据“建议 × 动作”组合推导;绝不由客户端声明。两者一致既不能证明因果,也不能证明准确或欺诈。
逐字段对比
| recommended_action | customer_action | recommendation_alignment |
|---|---|---|
REVIEW | REVIEWED 或 HELD | ALIGNED |
STEP_UP | ALLOWED | NOT_ALIGNED |
ALLOW 或 MONITOR | ALLOWED | ALIGNED |
BLOCK_RECOMMENDED | BLOCKED | ALIGNED |
| 任意 | CANCELLED | NOT_COMPARABLE |
拦截不能证明欺诈。确认欺诈需要独立证据:truth_status 从 PENDING 变为 LEGITIMATE、FRAUD_CONFIRMED 或 INSUFFICIENT_EVIDENCE,成熟度为 PROVISIONAL 或 MATURE。只有成熟的标签才会成为质量指标。
闭环为哪些环节提供数据
customer_action 和 truth_status 是两件独立的事实,每次更正都会生成后继记录。13 · 合同保障的隐私
明文 PII 不是产品所需。您发送不透明的个人和账户引用;评估一次访问,我们不要求身份证号、邮箱或电话号码。
packages/contracts/src/sdk-handshake-v1.ts · 采集策略
canvas: z.boolean(),
audio: z.boolean(),
fonts: z.boolean(),
behavioral: z.literal(false),packages/contracts/src/sdk-signals/rendering-v1.ts · 节选
const Hash128 = z.string().regex(/^[0-9a-f]{32}$/)
canvas_hash: Hash128.optional(),
webgl_gpu_family: z.enum(SDK_RENDERING_GPU_FAMILY_V1).optional(),
audio_hash: Hash128.optional(),
fonts_count: z.number().int().min(0).max(SDK_RENDERING_FONT_COUNT_V1).optional(),行为采集(即指针移动和按键)只接受关闭值:要开启它必须修改合同,而不是改某个设置。Canvas、WebGL、离线音频和字体存在性在托管采集策略下读取,该策略为每家公司开启,且它们离开浏览器时只是派生值:定长哈希、封闭的 GPU 系列、一个计数和基于固定字体列表的存在掩码。合同中没有像素、音频采样、GPU 厂商或渲染器名称、字体名称的字段。这些派生值组合起来能够再次识别同一浏览器,因此被视为设备数据,而非匿名数据。作为绝对规则,从不采集:密码、输入的文本、聊天或文档内容、剪贴板、截屏、麦克风、摄像头。每项证据都有隐私等级,而等级不是风险权重。
不依赖善意的保证
tenant_id,并在数据库层强制隔离。客户之间不共享任何信誉或标签。HttpOnly、Secure,限定于您的租户和应用。其值绝不进入数据库、队列或日志;缺失或被拒绝时,连续性会作为限制项降级,评估不会中断。Party 不是 Account
关联来自您的后端 · 绝不从指纹推断
一个人,多个合法账户。账户绝不会悄悄更换所属个人;会话只会从匿名推进到个人,再推进到同一个人的某个账户。矛盾即冲突,不是新的关联,也不是临时拼凑的负面证据。
数据存放在哪里
14 · 控制台
控制台首先回答“我们是否在高质量地接收、评估和解释?”,然后才谈合法性。每个百分比都注明分母。
示意图,非截图 · 框内为控制台配色
访问详情。三项度量作为三个独立组件;建议及其 recommendation_basis、生效的策略以及您的团队回传的动作;证据新鲜度;13 项指标的状态、适用性、来源、检测器置信度、新鲜度以及任何未评估项的理由;限制代码与原因代码;会话、设备及其关联;设备上的多重性;基于网络的大致位置;访问上下文;以及技术数据标签页,包含 SDK 和边缘节点采集的全部内容,其中有从浏览器所暴露 API 读出的真实版本,与其声明的版本并列。
调查筛选。访问列表可按网络服务商(ASN)、网络所在国家、设备安装、指标未评估的理由筛选,并可同时按最多两项指标的指定状态筛选,还能通过您自己的账户或个人引用查找访问。不提供按 IP 地址筛选:它属于个人数据。每条访问详情还附有其上下文洞察 ↑。
深入调查。从任意访问出发,关联图谱会逐跳展开其周边的设备和账户,覆盖您自己最长 92 天的历史。每次展开都是一次被记录的读取;IP 地址永远不会成为节点。
黑名单与白名单。在访问详情中,您的团队可以把设备、账户引用或单个 IP 加入贵公司的黑名单(拦截或审核)或白名单,附带备注和添加人姓名。在有分数的生产访问上,名单条目会覆盖建议,并在 reason_codes 中注明自身。不会删除任何内容:移除条目会记录是谁、在何时移除的。
AI 助手。侧边面板解释每个页面,并在贵公司和您的角色范围内,回答有关您自己的集成和访问的问题。
风控配置。贵公司自己的风控规则,按应用配置:13 项指标中的每一项都可以设为关闭、幽灵或启用,权重为 1 到 100 分,并由您设定分数区间及每个区间的动作。幽灵规则会被计算和记录,但从不改变响应。发布之前,影响卡片会用过去 1、7 或 30 天的评估回放您的草稿。54 项上下文洞察 ↑中的每一项都可以按各自的分值加入。您的管理员或风控主管可直接发布;每次发布都是一个经过审计的新版本,全部切换为幽灵可一次停用您的所有规则。FingerTrackID 从不替您启用规则:其支持团队只能把某个应用的全部规则切换为幽灵,并附上您控制台中可见的理由。在没有启用任何规则时,由托管策略作答,该策略由 FingerTrackID 团队在有记录的审批下发布。
四组共十六个页面 · 主页、检测、运营、管理
审核队列即提现审核模块:一个构建在同一核心之上的运营队列,把每笔被建议 REVIEW 的 v1 提现连同证据一起交给人工处理。带标签的评估从不进入该队列;当策略建议 MONITOR 时(正如目前的托管策略),队列保持为空。
支持英语、葡萄牙语(巴西和葡萄牙)、西班牙语、法语和德语。使用通行密钥或第二因素登录;按角色授权;审计记录谁查看了敏感数据、谁修改了什么。原始数据不会随意显示:每次访问都会被记录。
15 · 我们如何计费
按已完成采集的量计价,在报价方案中确定。影子模式消耗同样的单位,并在控制台中显示为预估用量;该阶段的发票内容由报价方案约定。
计费单位
它既是计量单位,也是候选计费单位。每个 device_intelligence_snapshot_id 最多产生一个单位,无论有多少评估、标签、服务商或重处理使用了这次采集。
事件 · 是否产生计费单位?
idempotency_key 的重试否customer_action 和结果否4xx否5xx、我方超时、采集 INCONCLUSIVE 或 FAILED否按量报价,影子模式用量一并摆上桌面。
获取报价16 · 常见问题
customer_action 和结果,并在控制台中逐条访问对比建议与您的团队回传的动作,同时跟踪证据覆盖率。当数据说得通时,由您的团队决定建议是否以及在何处开始影响决策,而执行始终由您的后端完成。tag,即小写 slug,例如 login、withdrawal 或 pix_transfer:无需注册,没有封闭列表,也没有数量限制。控制台可按标签筛选、分组和导出,而模板(注册、登录、找回密码、第二因素、资料修改、充值、提现、Pix 转账、交易、结账)只是集成指南。标签从不选择策略、检测器、回退方案或时限:所有带标签的评估都在同一策略和同样的 13 项指标下运行。标签绝不能包含个人数据。请求不包含金额、币种或收款人。BLOCK_RECOMMENDED 是最强的建议,但它仍然只是建议。当您拦截时,您记录 customer_action: BLOCKED,它会成为衡量建议是否正确的数据。BLOCK_RECOMMENDED;贵公司配置的规则则遵循其自行选择的权重和阈值。无痕模式和浏览器防护是中性上下文:可能降低覆盖率并显示在详情中,但不附带不利的原因代码。Tor、代理、VPN 和托管网络是匿名化上下文:策略可以结合其他观测结果对其加权,但绝不按标签加权。目前托管策略中只有自动化和浏览器伪装会影响分数,建议为 MONITOR。在本页的 v1 提现合同示例中,检测到 Tor 导致了 REVIEW,原因代码也如此说明。它本身绝不等于欺诈。event_context_token 的情况下调用 API,收到 INCONCLUSIVE、trust_score: null、evidence_coverage: 0、limitation_codes: ["COLLECTOR_NOT_LOADED"] 以及回退建议 MONITOR。绝不会编造分数。绝不会因缺乏证据而给出 ALLOW。deadline_ms 可设为 250 到 5000 之间的任意值(使用默认值时,请将 HTTP 超时设在约 6 秒以上);超时将返回 Problem assessment-unavailable(503、retryable: true,附 Retry-After),而不是部分响应。请用新的 request_id 重复同一逻辑操作。延迟和 SLA 写入报价方案,并在任何决策依赖响应之前,于您的影子模式中实测。key_id UUIDv7 是唯一的公开定位符;request_id 被预留以防重放;认证失败统一返回 401,不透露密钥是否存在。密钥从不传输。协议的规范测试向量是合同的一部分;借助它,您可以逐字节复现签名。@fingertrackid/server 为调用签名,MCP 服务器 @fingertrackid/mcp 为 Claude Code、Cursor 或任何支持 MCP 的代理提供合同、签名向量、每个标签现成的服务端模块以及对您采集域名的检查,全部只读;文档还发布了 llms.txt 和一段可直接用于您的 AGENTS.md 的规则。密钥留在您的环境中;代理永远不需要看到它。17 · 联系我们
从影子模式开始:响应与您的真实流程并行运行,不触及任何决策;您进行对比、回传结果,然后才开始采用建议。如果您有决策攸关的页面,并希望在信任响应之前先看到它的解释,欢迎联系我们。
预约演示
如何开始
包含的内容
event-assessment.v1 合同,附 HMAC 测试向量