身份证归属地查询:风控场景如何用"籍贯+生日+性别"识别伪造/篡改身份证
# 身份证归属地查询:风控场景如何用"籍贯+生日+性别"识别伪造/篡改身份证
> 接口:身份证归属地查询(apiCode=25,接入点 25-3) · 免费 · POST/GET · JSON · 适用人群:风控、反欺诈、运营 · 阅读时间:约 7 分钟
## TL;DR
- 官方价值点明确:本接口"可辅助识别随机生成的身份证号或潜在篡改情况"。
- 做法:拿接口返回的籍贯/生日/性别,与"号码自身编码推算值""用户自填信息"做**三方比对**,发现矛盾即标记。
- 接口**不校验真伪**,结论只能作为风控辅助信号,不能当最终判定。
## Why
黑产常常随机编造身份证号,或对真实号码做局部篡改(改生日、改性别位)。这种号码往往"内部自相矛盾"——比如号码第 17 位是奇数(男),但篡改后的性别字段显示女;或者号码编码的生日,和用户填的生日对不上。利用本接口把号码反推出的籍贯/生日/性别拿出来做交叉比对,能在不接公安库的前提下,先筛掉一批明显有问题的号码。
这正是官方在接口说明里写明的用途:"可辅助识别随机生成的身份证号或潜在篡改情况"。
## What
| 比对方 | 来源 |
|--------|------|
| A:接口返回 | `address` / `birthday` / `sex`(接口反查) |
| B:号码编码推算 | 自己按 18 位规则切片得到(见 [编码规则](https://www.showapi.com/guides/idcard-attribution-number-std-25)) |
| C:用户自填 | 注册/表单里用户填的籍贯/生日/性别 |
## How
### 步骤 1:调接口拿 A,本地算 B
```python
def risk_check(id_number: str, fill_birthday: str, fill_sex: str, api_ret: dict) -> dict:
A = api_ret # 接口返回: address/birthday/sex
B = parse_idcard(id_number) # 本地切片: region_code/birthday/sex
signals = []
if A["birthday"] != B["birthday"]:
signals.append("接口生日与号码编码生日不一致(疑似篡改)")
if A["sex"] != B["sex"]:
signals.append("接口性别与号码编码性别不一致(疑似篡改)")
if fill_birthday and A["birthday"] != fill_birthday:
signals.append("接口生日与用户自填不一致")
return {"risk": len(signals) > 0, "signals": signals}
```
### 步骤 2:矛盾即标记
任一信号命中 → 标记"待人工复核 / 提高风控等级",不直接放行也不直接拒绝(避免误伤)。
### 步骤 3:接入业务流
在实名核验链路(见 [集成设计](https://www.showapi.com/guides/idcard-attribution-verify-25))中加一层风控标记,与生日/性别比对共用一次接口调用。
## 返回示例
接口返回结构见 [返回字段全解](https://www.showapi.com/guides/idcard-attribution-fields-25);本篇重点是拿到 `retData` 后做三方比对。
## 进阶 / 边界
- **辅助信号,非判定**:接口只反推编码信息,不验证号码在公安系统是否真实存在。矛盾线索能提高可疑度,但不能单独作为"伪造"的最终结论。
- **随机号特征**:完全随机的 18 位数字,其校验位大多不合法(见 [调用前自检](https://www.showapi.com/guides/idcard-attribution-input-check-25)),可先本地拦截,再对通过者做接口比对。
- **地区码漂移**:行政区划调整会影响籍贯反查,比对时以接口返回为准,避免自建代码表过期导致误判。
## FAQ
**Q:这个接口能直接判断身份证是假的吗?**
不能。它只反推户籍地区/生日/性别。通过"与号码编码、与用户自填"的比对发现矛盾,只能作为可疑信号,不是真伪终判。
**Q:为什么叫"辅助识别"?**
因为单靠它无法连接权威库验证存在性;它的价值在于用极低成本发现"号码内部矛盾"或"与填报矛盾",帮你优先人工复核高风险样本。
**Q:随机数也会被接口返回结果吗?**
会返回它"按号码编码反推"的籍贯/生日/性别,但这些值往往与号码自身编码(若你本地再算一次)或用户填报对不上,从而暴露矛盾。
**Q:需要公安接口配合吗?**
严肃场景建议以权威实名认证为终判;本接口适合做低成本初筛与可疑度打分。
**Q:比对发现矛盾就拒绝用户吗?**
不建议直接拒绝。先标记待复核,避免用户填错或地区码漂移造成误伤。
## 相关能力 / 下一步阅读
- [身份证归属地查询背后的 18 位编码规则:为何能反推籍贯/生日/性别](https://www.showapi.com/guides/idcard-attribution-number-std-25)
- [身份证归属地查询:用户注册实名核验的集成设计(前端 + 后端)](https://www.showapi.com/guides/idcard-attribution-verify-25)
- [身份证归属地查询:调用前如何先做身份证号格式与校验位合法性自检](https://www.showapi.com/guides/idcard-attribution-input-check-25)
- **本系列共 12 篇**:查看[身份证归属地查询指南总目录](https://www.showapi.com/guides/idcard-attribution-guides-25)