技术博客
身份证归属地查询:风控场景如何用"籍贯+生日+性别"识别伪造/篡改身份证

身份证归属地查询:风控场景如何用"籍贯+生日+性别"识别伪造/篡改身份证

作者: 万维易源
2026-08-27
身份证归属地查询风控反欺诈伪造识别篡改检测
# 身份证归属地查询:风控场景如何用"籍贯+生日+性别"识别伪造/篡改身份证 > 接口:身份证归属地查询(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)