手机号空号检测原理:三网在网状态是如何判定的
一文讲透空号检测原理:运营商在网状态判定机制、为什么准确率能到 99.9%、常见误判场景,以及如何用空号检测 API 批量清洗号码。
很多人把「空号检测」想得很简单:拿号码去打一下,通了就是实号,没通就是空号。但真实业务里这样做的代价极高——外呼成本、人力成本、合规风险全在里面。专业的空号检测 API 走的是另一条路:直连运营商侧的数据通道,在拨号之前就完成状态判定。
这篇文章讲清楚三件事:状态是怎么判定的、准确率 99.9% 从哪来、以及哪些场景容易误判。
手机号在运营商侧有一个「状态机」,大致是:在用 → 停机(欠费/主动)→ 销号 → 空号(回收)。空号检测 API 通过运营商授权的数据接口,实时查询号码当前处于哪个状态,而不是靠“打一通电话听彩铃”这种物理方式。
以阿里云市场的手机号在网状态 API为例,它直连三网运营商,能返回 8 种状态:正常、空号、通话中、不在网、关机、无短信能力、欠费、长时间关机。
为什么需要这么细的状态分类?因为不同状态对应完全不同的运营动作:
- 空号 / 长时间关机 → 直接剔除,别浪费外呼资源;
- 欠费 → 可能只是暂时停机,客户经济状况有问题,贷后要重点跟进;
- 关机 / 通话中 → 号码还活着,换个时段重试即可;
- 无短信能力 → 短信通道要跳过这个号,改走外呼。
准确率高的关键有三点:
- 直连运营商:数据来自运营商侧的在网登记信息,而不是第三方估算。号码是否销号、是否停机,运营商系统里是确定的答案。
- 实时查询:每次查询都是当前时刻的状态,不是查离线库。离线库的致命问题是滞后——一个号码今天销号,离线库可能要一个月后才更新。
- 三网覆盖 + 携号转网识别:移动、联通、电信全覆盖,转网后的号码也能正确识别当前归属运营商(详见携号转网识别)。
再准的接口也有边界,作为使用者要心里有数:
- 虚拟运营商号段(170/171 等):部分虚商号段的数据时效性差,查询结果仅供参考;
- 刚销号未回收的号码:运营商有号码回收期,销号后短期内状态可能仍显示正常;
- 境外号码 / 物联网卡:不在三网个人号码体系内,接口通常无法判定。
接入层面并不复杂,本质是「循环查询 + 结果落库」:遍历号码列表,逐个调用接口拿到 status 状态,把结果连同查询时间写入数据库;调用时注意控制 QPS 避免限流,失败的单条记录日志稍后重试。具体请求参数与返回字段以商品文档为准,这里不贴代码。
工程上的重点反而是怎么用结果:空号剔除、欠费单独建组、关机号码排重试队列、无短信能力号码从短信通道摘除——把状态变成运营动作,检测才有价值。完整接入流程见手机号码状态查询 API 接入指南。
空号检测的价值不是“判断一个号码死没死”,而是在拨号前把号码分层,让每一次外呼都花在值得花的号码上。需要直接使用的话,可以看阿里云市场的手机号在网状态 API,按次计费,先小批量验证再上量。