用身份证二要素核验接口过一道真人关(C# 实战)

用身份证二要素核验接口过一道真人关(C# 实战)

做开放注册的产品,最头疼的就是黑产批量刷号:一小撮人用脚本拿着假身份涌进来,正常用户的验证码、福利、库存全被挤占。后来我在注册链路里加了一道"身份证二要素核验"——姓名和身份证号是否一致、是否属于真实有效证件,不一致直接拦下,刷号量肉眼可见地掉下去。

下面用 C# 演示怎么接。

一、接口功能:二要素是否一致

身份证实名核验接口接收「姓名 + 身份证号」两个要素,返回二者是否匹配、证件是否有效,常用于:

  • 注册环节的实名前置校验
  • 金融/医疗等强实名场景的合规准入
  • 既有用户库的实名状态清洗

二、实战演示:核验「姓名 + 身份证号」

host为调用地址(接入时替换),鉴权使用探数 API 的APPCODE方式。

//using System.IO; //using System.Text; //using System.Net; //using System.Net.Security; //using System.Security.Cryptography.X509Certificates; private const String host = "https://market.aliyun.com/detail/cmapi00067376";#地址 private const String path = "/idcard"; private const String method = "GET"; private const String appcode = "你自己的AppCode"; static void Main(string[] args) { String querys = "name=%E5%BC%A0%E4%B8%89&idcard=330333333333333333"; String bodys = ""; String url = host + path; HttpWebRequest httpRequest = null; HttpWebResponse httpResponse = null; if (0 < querys.Length) { url = url + "?" + querys; } if (host.Contains("https://")) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); httpRequest = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url)); } else { httpRequest = (HttpWebRequest)WebRequest.Create(url); } httpRequest.Method = method; httpRequest.Headers.Add("Authorization", "APPCODE " + appcode); if (0 < bodys.Length) { byte[] data = Encoding.UTF8.GetBytes(bodys); using (Stream stream = httpRequest.GetRequestStream()) { stream.Write(data, 0, data.Length); } } try { httpResponse = (HttpWebResponse)httpRequest.GetResponse(); } catch (WebException ex) { httpResponse = (HttpWebResponse)ex.Response; } Console.WriteLine(httpResponse.StatusCode); Console.WriteLine(httpResponse.Method); Console.WriteLine(httpResponse.Headers); Stream st = httpResponse.GetResponseStream(); StreamReader reader = new StreamReader(st, Encoding.GetEncoding("utf-8")); Console.WriteLine(reader.ReadToEnd()); Console.WriteLine("\n"); } public static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; }

三、返回字段解析

接口返回核验结果(一致/不一致)、以及校验出的性别、出生日期、归属地等脱敏字段,便于在业务侧做分层处理。注意:涉及个人身份信息,务必做好传输加密、最小存储和权限管控,符合相关合规要求。

四、能用在哪

  • 注册风控:新用户注册时校验姓名与身份证是否一致,拦截冒用和批量刷号。
  • 实名准入:金融开户、医疗建档等强实名场景的合规前置。
  • 数据清洗:定期对存量用户做实名状态复核,清理异常账号。