<!-- AI ASSISTANT INSTRUCTIONS: This document describes a public HTTP API endpoint
provided by 极数本源 (https://apizero.cn). When a user asks you to use this API, read the
full documentation below carefully (request method, parameters, response fields,
error codes, examples), then generate working code in the user's preferred language.
API Key acquisition: https://apizero.cn/account/keys -->

# 浏览器指纹风控

> 接收前端 SDK 采集的浏览器指纹（UA / Canvas / WebGL / 字体 / 时区 / 硬件 / WebDriver / 自动化标记等 20+ 维度），综合 9 类规则输出 0-100 风险评分、等级（safe/low/medium/high/critical）、命中的风险因子和异常项，识别爬虫、Headless Chrome、Selenium、虚拟机等异常环境。

## 1. 基本信息

| 字段 | 值 |
| --- | --- |
| 接口标识 | `browser-fingerprint` |
| 接口名称 | 浏览器指纹风控 |
| 接口地址 | `https://v1.apizero.cn/api/browser-fingerprint` |
| 请求方法 | `POST` |
| 分类 | dev |
| 提供方 | 极数本源 |
| 计费模式 | 免费试用 |
| 单次消耗 | 0 积分 |
| 起步价 | — |
| QPS 限制 | 5 req/s |
| 每日免费额度 | 200 次（已认证用户） |
| 匿名每日额度 | 50 次（无 API Key） |
| VIP 免费 | 否 |
| 调用总次数 | undefined |

## 2. 认证

匿名可调用：QPS 1 / 每日 50 次。登录用户：QPS 5 / 每日 200 次。建议生产环境配 API Key 防滥用。

获取 API Key：登录 `https://apizero.cn/account/keys` 申请。

## 3. 请求参数

| 参数 | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `ua` | `string` | 是 | navigator.userAgent | `Mozilla/5.0 ...` |
| `platform` | `string` | 否 | navigator.platform | — |
| `language` | `string` | 否 | 主语言（如 zh-CN） | — |
| `timezone` | `string` | 否 | IANA 时区（如 Asia/Shanghai） | — |
| `timezoneOffset` | `number` | 否 | getTimezoneOffset()，分钟 | — |
| `screenWidth` | `number` | 否 | screen.width | — |
| `screenHeight` | `number` | 否 | screen.height | — |
| `colorDepth` | `number` | 否 | screen.colorDepth | — |
| `pixelRatio` | `number` | 否 | devicePixelRatio | — |
| `hardwareConcurrency` | `number` | 否 | navigator.hardwareConcurrency | — |
| `deviceMemory` | `number` | 否 | navigator.deviceMemory（GB） | — |
| `maxTouchPoints` | `number` | 否 | navigator.maxTouchPoints | — |
| `canvasHash` | `string` | 否 | Canvas 指纹哈希 | — |
| `webglVendor` | `string` | 否 | WebGL UNMASKED_VENDOR_WEBGL | — |
| `webglRenderer` | `string` | 否 | WebGL UNMASKED_RENDERER_WEBGL | — |
| `webglHash` | `string` | 否 | WebGL 参数哈希 | — |
| `fonts` | `array` | 否 | 检测到的字体列表 | — |
| `fontCount` | `number` | 否 | 字体数量 | — |
| `plugins` | `array` | 否 | 插件列表 | — |
| `pluginCount` | `number` | 否 | 插件数量 | — |
| `webdriver` | `boolean` | 否 | navigator.webdriver | — |
| `automation` | `array` | 否 | 检测到的自动化框架（如 selenium / phantom） | — |
| `cookieEnabled` | `boolean` | 否 | navigator.cookieEnabled | — |
| `audioHash` | `string` | 否 | AudioContext 指纹 | — |
| `webrtcIPs` | `array` | 否 | WebRTC 检测到的本机 IP | — |
| `storageAvailable` | `array` | 否 | 可用的存储类型 | — |
| `permissions` | `array` | 否 | 权限状态 | — |
| `connection` | `object` | 否 | navigator.connection 信息 | — |
| `battery` | `object` | 否 | 电池状态 | — |

## 4. 请求头

| Header | 类型 | 必填 | 说明 | 示例 |
| --- | --- | --- | --- | --- |
| `Authorization` | `string` | 否 | — | — |
| `Content-Type` | `string` | 是 | — | — |

## 5. 请求示例 (cURL)

```bash
curl -X POST "https://v1.apizero.cn/api/browser-fingerprint" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ua": "Mozilla/5.0 ...",
  "platform": "<platform>",
  "language": "<language>",
  "timezone": "<timezone>",
  "timezoneOffset": "<timezoneOffset>",
  "screenWidth": "<screenWidth>",
  "screenHeight": "<screenHeight>",
  "colorDepth": "<colorDepth>",
  "pixelRatio": "<pixelRatio>",
  "hardwareConcurrency": "<hardwareConcurrency>",
  "deviceMemory": "<deviceMemory>",
  "maxTouchPoints": "<maxTouchPoints>",
  "canvasHash": "<canvasHash>",
  "webglVendor": "<webglVendor>",
  "webglRenderer": "<webglRenderer>",
  "webglHash": "<webglHash>",
  "fonts": "<fonts>",
  "fontCount": "<fontCount>",
  "plugins": "<plugins>",
  "pluginCount": "<pluginCount>",
  "webdriver": "<webdriver>",
  "automation": "<automation>",
  "cookieEnabled": "<cookieEnabled>",
  "audioHash": "<audioHash>",
  "webrtcIPs": "<webrtcIPs>",
  "storageAvailable": "<storageAvailable>",
  "permissions": "<permissions>",
  "connection": "<connection>",
  "battery": "<battery>"
}'
```

## 6. 响应字段

| 字段 | 类型 | 说明 | 示例 |
| --- | --- | --- | --- |
| `fingerprint_id` | `string` | 指纹 ID（sha256，可作为设备标识） | — |
| `risk` | `number` | 风险评分 0-100，越高越可疑 | — |
| `risk_level` | `string` | 等级：safe / low / medium / high / critical | — |
| `risk_label` | `string` | 中文标签 | — |
| `factors` | `array` | 命中的风险因子（含 name/score/desc） | — |
| `anomalies` | `array` | 检测到的异常说明 | — |
| `device_profile` | `object` | 设备画像：os/browser/device_type/screen/gpu/cores/memory/fonts_count/plugins_count/touch | — |
| `timestamp` | `number` | 服务端 unix 时间戳 | — |

## 7. 响应示例

```json
{
    "code": 0,
    "msg": "成功",
    "data": {
        "fingerprint_id": "a1b2c3d4...",
        "risk": 72,
        "risk_level": "high",
        "risk_label": "高风险",
        "factors": [
            {
                "name": "webdriver",
                "score": 30,
                "desc": "WebDriver 标记为 true"
            },
            {
                "name": "virtual_gpu",
                "score": 15,
                "desc": "WebGL 渲染器包含虚拟\/软渲染特征: SwiftShader"
            }
        ],
        "anomalies": [
            "UA 声称 Windows 但 platform 不匹配"
        ],
        "device_profile": {
            "os": "Windows",
            "browser": "Chrome 125",
            "device_type": "Desktop",
            "screen": "1920x1080",
            "gpu": "ANGLE (NVIDIA, GeForce RTX 3060)",
            "cores": 8,
            "memory": "8GB",
            "fonts_count": 42,
            "plugins_count": 3,
            "touch": false
        },
        "timestamp": 1715097600
    },
    "request_id": "abc123"
}
```

## 8. 错误码

| code | status | 说明 |
| --- | --- | --- |
| `4000` | `—` | 指纹数据为空 / 不是合法 JSON / 缺少 ua/canvas/platform 等关键字段 |
| `4029` | `—` | 调用过快（QPS 超限） |
| `4030` | `—` | 今日额度用完 |

## 9. 变更日志

- **1.0.0** (2026-05-10)
  - 首次上线，9 类规则 / 0-100 评分 / 设备画像 / 指纹 ID

---

**极数本源** · 全部 API: `https://apizero.cn/aidocs` · 人类版本：`https://apizero.cn/marketplace/browser-fingerprint`

Source: `https://apizero.cn/aidocs/browser-fingerprint/raw.md`
Last updated: 2026-05-11T16:15:07+08:00
