> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# 位置验证警告与 LOCATION_ 代码

> 详述 Didit 在位置核验中触发的各类 LOCATION_ 警告，涵盖地理围栏、精度、欺骗攻击、VPN、距离与权限检测，附触发条件及默认操作。

## 概述

位置报告上的警告会标出 Didit 在位置验证步骤中发现的所有情况。
它们位于 `geolocation_checks[]` 各项的 `warnings[]` 数组中（参见[位置报告](https://docs.didit.me/zh/core-technology/location-verification/report-location-verification.md)）。

每项警告包含三个层面：

1. **`risk` 代码**：用于匹配的稳定标识符，均以 `LOCATION_` 开头。
2. **`log_type`**：`information`、`warning` 或 `error`。对于可配置的风险，它遵循所配置的操作：`NO_ACTION` 对应 `information`，`REVIEW` 对应 `warning`，`DECLINE` 对应 `error`。
3. **决策影响**：所有警告中权重最高的操作将决定步骤的 `status`。`REVIEW` 产生 `In Review`，`DECLINE` 产生 `Declined`，而 `NO_ACTION` 则保持不变。

不确定性和拒绝授权默认归为 `REVIEW`，绝非 `DECLINE`：权限被拒绝、室内定位或较大的半径并非欺诈证据。
有关准确度、新鲜度、区域、距离和匿名化工具的警告仅在最后一次尝试时触发，因此在第二次尝试成功的用户不会带有任何警告。
节点上的自定义 `status_rules` 可以保持或提高状态级别，但绝不能降低。

## 自动拒绝条件

这些情况始终会拒绝该步骤，其 `log_type: "error"`，且没有操作键。

| 风险 | 触发条件 |
| - | - |
| `LOCATION_REPLAY_DETECTED` | 提交的内容包含属于另一个会话的挑战。每次尝试都会获得一个与其会话绑定的单次使用挑战，因此在其他地方出示即视为重放。 |
| `LOCATION_INTEGRITY_FAILED` | 伴随位置信息的设备证明未通过验证。 |

## 生成的警告

默认值是指未配置 `geolocation_preset` 的步骤所执行的操作。
在 `licensing` 预设下，`LOCATION_VPN_DETECTED`、`LOCATION_TOR_DETECTED` 和 `LOCATION_EMULATOR_DETECTED` 默认为 `DECLINE`，而 `LOCATION_PROXY_DETECTED` 默认为 `REVIEW`。
在 `fraud_screening` 预设下，所有默认为 `DECLINE` 的操作均变为 `REVIEW`，且这四项匿名化工具检测结果也均变为 `REVIEW`。
您显式设置的操作始终具有最高优先级。

### 权限与可用性

| 风险 | 触发条件 | 配置键 | 默认值 |
| - | - | - | - |
| `LOCATION_PERMISSION_DENIED` | 用户在所有允许的尝试中均拒绝或关闭了位置提示。这是用户的选择，并非欺诈证据。 | `geolocation_permission_denied_action` | `REVIEW` |
| `LOCATION_RESTRICTED` | 操作系统在用户做出响应之前即予以拒绝：设备全局关闭了定位服务，或者设备管理策略、家长控制策略阻止了该服务。 | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNAVAILABLE` | 设备接受了请求，但其定位系统在所有允许的尝试中均未返回位置。在室内和地下环境中很常见。 | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_TIMEOUT` | 在任何允许的尝试中，均未在 `geolocation_timeout_seconds` 内获取到位置。 | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_SKIPPED` | 工作流允许跳过，且用户在未共享位置的情况下继续操作。 | `geolocation_unavailable_action` | `REVIEW` |
| `LOCATION_UNSUPPORTED_CLIENT` | 会话运行在未实现该步骤的应用或 SDK 构建版本上。Didit 关闭了该步骤，而不是让会话处于挂起状态。请升级 SDK。 | `geolocation_unavailable_action` | `REVIEW` |

### 精度与新鲜度

| 风险 | 触发条件 | 配置键 | 默认值 |
| - | - | - | - |
| `LOCATION_LOW_ACCURACY` | 最佳位置的半径大于 `geolocation_max_accuracy_radius_m`。这是置信度的一种度量，而非对真实性的衡量。 | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_ACCURACY_UNDETERMINED` | 在任何允许的尝试中，位置均未包含半径信息，因此无法证明其符合限制。该情况绝不会被视为已达标。 | `geolocation_low_accuracy_action` | `REVIEW` |
| `LOCATION_STALE_FIX` | 位置的测量时间早于 Didit 接收时间超过 `geolocation_max_age_seconds`。 | `geolocation_stale_fix_action` | `REVIEW` |
| `LOCATION_APPROXIMATE_ONLY` | 要求获取精确位置，但用户仅授予了粗略位置权限（iOS 降低精度，Android “大概位置”）。网页端绝不会触发，因为网页端无法判断。 | `geolocation_approximate_action` | `REVIEW` |
| `LOCATION_CLOCK_SKEW` | 设备报告的测量时间相比 Didit 的时钟处于未来时间。仅供参考：新鲜度判断以 Didit 接收时间为准。 | 无 | 信息 |

### 欺骗攻击与完整性

| 风险 | 触发条件 | 配置键 | 默认值 |
| - | - | - | - |
| `LOCATION_MOCK_PROVIDER_DETECTED` | Android 报告该位置来自模拟位置提供程序。测试和无障碍工具也会设置此项，因此该操作可配置。 | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_SIMULATED_BY_SOFTWARE` | iOS 报告该位置由软件模拟。 | `geolocation_mock_location_action` | `REVIEW` |
| `LOCATION_INTEGRITY_MISSING` | 原生应用发送了位置但未附带设备证明。网页端记录为不支持，而非缺失。 | `geolocation_integrity_missing_action` | `NO_ACTION` |
| `LOCATION_EMULATOR_DETECTED` | 应用报告运行在模拟器或虚拟机上。浏览器无法报告此项。除非操作为 `NO_ACTION`，否则将在该次尝试中终止此步骤。 | `geolocation_emulator_action` | `NO_ACTION` |
| `LOCATION_VPN_DETECTED` | 共享位置所使用的连接通过商业 VPN 出口。除非操作为 `NO_ACTION`，否则将提示用户将其关闭并重新检查。 | `geolocation_vpn_action` | `NO_ACTION` |
| `LOCATION_PROXY_DETECTED` | 连接通过开放式、匿名或专用中继代理。 | `geolocation_proxy_action` | `NO_ACTION` |
| `LOCATION_TOR_DETECTED` | 连接通过 Tor 出口节点。 | `geolocation_tor_action` | `NO_ACTION` |

### 区域

| 风险 | 触发条件 | 配置键 | 默认值 |
| - | - | - | - |
| `LOCATION_OUTSIDE_GEOFENCE` | 位置及其整个精度圆范围均位于所有允许区域之外。 | `geolocation_geofencing_action` | `DECLINE` |
| `LOCATION_GEOFENCE_UNDETERMINED` | 精度圆触及决定判定结果的边界，或者位置无法解析到任何国家/地区。不确定性绝不会被报告为区域外。 | `geolocation_geofence_undetermined_action` | `REVIEW` |
| `LOCATION_IN_BLOCKED_AREA` | 位置及其整个精度圆范围均位于封锁区域之内。此结果会附加到允许区域判定中，绝不会替代允许区域判定，并由更严格的操作做出裁决。 | `geolocation_blocked_area_action` | `DECLINE` |

### 距离与历史记录

| 风险 | 触发条件 | 配置键 | 默认值 |
| - | - | - | - |
| `LOCATION_IP_DISTANCE_MISMATCH` | 在扣除两个半径后，设备位置与 IP 定位之间的距离大于 `geolocation_ip_distance_km`。VPN、企业代理或运营商的中心出口均可能合法地产生此情况。 | `geolocation_ip_distance_action` | `REVIEW` |
| `LOCATION_DOCUMENT_DISTANCE_MISMATCH` | 位置距离证件地址超过 `geolocation_document_distance_km`。这是一个较弱的信号，因为地址地理编码较为粗略且用户可能出行。 | `geolocation_document_distance_action` | `REVIEW` |
| `LOCATION_CONSECUTIVE_MISMATCHES` | 本次检查与同一用户先前的检查（相同的 `vendor_data`）至少连续 `geolocation_consecutive_mismatch_count` 次位于允许区域之外、位于封锁区域之内或距离地址过远。 | `geolocation_consecutive_mismatch_action` | `REVIEW` |

## 用户看到的内容

某些检测结果绝不会向用户解释，因为指出具体信号会向欺诈分子透露应修改的内容。
`LOCATION_EMULATOR_DETECTED`、`LOCATION_MOCK_PROVIDER_DETECTED`、`LOCATION_SIMULATED_BY_SOFTWARE`、`LOCATION_REPLAY_DETECTED`、`LOCATION_INTEGRITY_FAILED` 和 `LOCATION_IP_DISTANCE_MISMATCH` 均属于此类：如果审核员退回该验证，用户只会看到通用的原因，而决策 payload 和您的 Webhook 则会保留完整的警告。
对于 VPN，向用户显示的仅是关闭任何 VPN 并重试的请求；对于受限区域，向用户显示的仅是该服务支持的地区列表。

## 示例

```json theme={null}
{
  "risk": "LOCATION_LOW_ACCURACY",
  "log_type": "warning",
  "short_description": "Device location accuracy below the configured limit",
  "additional_data": {
    "accuracy_m": 1200.0,
    "accuracy_confidence": "p95",
    "max_accuracy_radius_m": 250
  },
  "node_id": "geolocation_1"
}
```

## 警告类型

根据您的应用配置，每项风险都会被分配一个严重程度。三种严重程度分别为：

## 相关内容

* [位置验证报告](https://docs.didit.me/zh/core-technology/location-verification/report-location-verification.md) - `warnings[]` 旁边的字段。
* [位置验证](https://docs.didit.me/zh/core-technology/location-verification/overview.md) - 该步骤的工作原理。
* [工作流功能配置](https://docs.didit.me/zh/management-api/workflows/feature-configs.md#位置验证) - 所有操作键。
* [数据模型 - 警告对象](https://docs.didit.me/zh/reference/data-models.md#警告对象) - `warnings[]` 中每个条目的结构。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.