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
每份回應都包含的網頁指標
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 項指標
每次網頁評估都一定回傳全部 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 或音訊 · App 內建瀏覽器 · 疑似訪客模式 · 依簽章識別的 AI 代理 · 機器人類別 · 與核准套件不同的 SDK · 同一 SDK 工作階段出現在多台裝置 · 同一次收集在另一台裝置上重現 · 裝置 Cookie 在相距過遠的地點使用
速率 · 5
5 分鐘、1 小時與 24 小時內每台裝置與每個帳號的存取次數;5 分鐘與 1 小時內每個 IP 的存取次數 · 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 · ref 是您自己的不透明代碼,絕不是身分證號、電子郵件或流水號 · deadline_ms 是 250 到 5000 的整數,或 null 代表 5000;超過時會回傳可重試的 503 Problem,而不是部分分數
同步回應
接著是兩個回饋呼叫:customer_action 回報您做了什麼,等您得知後,truth_status 回報實際結果(outcome:合法、確認詐欺或證據不足)。合約對兩者的要求與評估呼叫相同:在持久化提交之前,什麼都不算已接受,完全相同的重試不會產生第二次效果。結果可以事後更正——更正以後繼紀錄的形式附加,先前的紀錄仍可讀取。
POST /v1/assessments/POST /v1/assessments/
網頁版,任何現代瀏覽器皆可使用 · 不需安裝 App · SDK、評估與回饋使用同一份版本化合約
npm install @fingertrackid/server 替您簽署呼叫,@fingertrackid/mcp 讓 Claude Code、Cursor 或任何支援 MCP 的程式碼代理依據公開合約完成整合。詳細步驟請見快速入門、Web SDK 指南與 API 參考文件。
10 · 對瀏覽器零信任
來自瀏覽器的任何東西都不被視為權威。評估是伺服器對伺服器、經過簽章,且每次嘗試只計算一次:重複送出不會產生新的效果。
誰與誰溝通
瀏覽器只會收到不透明的工作階段與事件 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 · 以合約保障隱私
明文個資不是產品需求。您送出不透明的人與帳號參照;評估一次存取,我們不要求身分證號、電子郵件或電話號碼。
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 測試向量