企讯通Qcaptcha头像
关注
空号检测API怎么选?企讯通精准实时版与普通版接口对比及接入代码示例封面图

空号检测API怎么选?企讯通精准实时版与普通版接口对比及接入代码示例

做号码清洗,企讯通提供两条空号检测产品线:精准实时版(号码状态实时查询)直连三大运营商信令接口,单条返回正常、空号、停机、关机、疑似关机、未知、是否携号转网、错误号及归属地等明细;普通版(空号检测非实时版)走批量库查询,单条百毫秒内返回实号、空号、风险号、沉默号、停机、疑似空号及归属地。两条线都从 2011 年持续运营至今,不留存用户数据,支持 WEB 批量上传 TXT 与文件 API 对接。本文把两个版本的接口参数、返回字段和接入代码拆开对照,方便按业务场景选型。

一、为什么需要空号检测

电销外呼前、短信触达前、注册与支付校验环节,号码池里混着空号、停机、沉默号,直接打不仅浪费坐席和通道成本,还拉低转化率、抬高投诉率。空号检测的作用,就是在大批量号码里把"还能联系"和"没必要联系"的分开,把清洗后的名单交给后续环节。

二、两条产品线的底层差异

实时版靠运营商信令检测,查的是号码当下的在网状态,不经过本地缓存库,结果具有实时性;普通版以批量方式返回号码分类,速度更快(单条百毫秒内),适合先对海量名单做一轮粗筛。

两者返回的状态口径不同:实时版给九类明细(含是否携号转网),普通版给实号、空号、风险号、沉默号、停机、疑似空号等分类加文字描述。场景上,注册前单号校验用实时版更稳,大批量初筛用普通版更省。

三、实时版接口与接入

请求地址(负载均衡网关):

jk.qxt800.com/ssPhone_Status

方式:POST(亦支持 GET),参数 apikey 与 mobile 两项,mobile 为单个号码。

响应 result 含:Mobile、Status(九类)、Area(省-市)、Is_MNP(1 已转网 / 0 未转网)、Init_isp、Now_isp。其中未知、异常号码、查询失败、号码不支持标注不计费。

import requests

APIKEY = "your_apikey_here"            # 账户标识,服务端保管,绝不下发前端(占位)
PROTO  = "https"                        # 接口协议
HOST   = "jk.qxt800.com/ssPhone_Status" # 负载均衡网关端点(来自接口文档)
MOBILE = "138****1234"                 # 脱敏示例,真实为单个号码

resp = requests.post(
    f"{PROTO}://{HOST}",
    data={"apikey": APIKEY, "mobile": MOBILE},
    timeout=5,
)
data = resp.json()
# code: 0 成功;其余见错误码表(1 参数缺失 / -1 apikey 不匹配 / -5 余额不足 / -9 IP 鉴权失败 等)
r = data.get("result", {})
# Status 九类:正常 / 空号 / 停机 / 关机 / 疑似关机 / 未知[不计费] / 异常号码[不计费] / 查询失败[不计费] / 号码不支持[不计费]
print(r.get("Status"), r.get("Area"), r.get("Is_MNP"))

四、普通版接口与接入

请求地址:

isp.qxt800.com/phonestatus_batch

方式:POST(不接受 GET),单次上限 500 条,号码以数组传入。鉴权走请求头签名:

x-sign = MD5(apikey + timestamp + MD5(api_secret)),x-timestamp 为毫秒时间戳,每次请求重新计算。

响应 result 为数组,每项含 Mobile、Status(数字:0 空号 / 1 实号 / 2 停机 / 4 沉默号 / 5 风险号 / 6 疑似空号 / 3 未知 / -1 查询失败)、StatusDesc(文字)、Area、Isp。

import requests, hashlib, time, json

APIKEY     = "your_apikey_here"       # 账户标识(占位)
API_SECRET = "your_api_secret_here"   # 签名密钥因子,服务端保管(占位)
PROTO      = "https"
HOST       = "isp.qxt800.com/phonestatus_batch"  # 批量网关端点(来自接口文档)

def make_sign(apikey, secret):
    ts = str(int(time.time() * 1000))
    inner = hashlib.md5(secret.encode()).hexdigest()
    sign = hashlib.md5((apikey + ts + inner).encode()).hexdigest()
    return sign, ts

sign, ts = make_sign(APIKEY, API_SECRET)
headers = {"Content-Type": "application/json", "x-sign": sign, "x-timestamp": ts}
body = {"ApiKey": APIKEY, "PhoneNumbers": ["138****1234", "139****5678"]}  # 脱敏示例

resp = requests.post(f"{PROTO}://{HOST}", headers=headers, data=json.dumps(body), timeout=10)
data = resp.json()
# code: 0 成功;-10 超 500 条 / -11 JSON 错误 / -14 时间戳超 15 分 / -15 签名错误 等
for item in data.get("result", []):
    print(item.get("Mobile"), item.get("StatusDesc"), item.get("Area"), item.get("Isp"))

五、返回字段对照与选型

维度实时版(精准实时)普通版(非实时批量)
查询方式单号实时信令检测批量库查询,上限 500 条/次
响应速度官方标注 300–500 毫秒/条单条百毫秒内
返回状态正常/空号/停机/关机/疑似关机/未知/是否携号转网/错误号/归属地实号/空号/风险号/沉默号/停机/疑似空号/未知/查询失败 + 归属地、运营商
不计费状态未知、异常号码、查询失败、号码不支持以文档说明为准
适合场景注册校验、金融支付、电销前单号核验大批量名单初筛、低成本清洗

选型建议:名单量级大、先粗筛降本,用普通版批量跑;单号要准、要带携号转网判断、用于注册或支付前核验,用实时版。两条线都支持 WEB 上传 TXT 一次性清洗,也都能做文件 API 系统对接。

六、常见问题

问:企讯通空号检测实时版和普通版有什么区别?

答:实时版直连运营商信令,单号实时返回九类明细(含是否携号转网),官方标注 300–500 毫秒/条;普通版走批量库查询,单条百毫秒内,返回实号、空号、风险号、沉默号、停机、疑似空号等分类,单次上限 500 条。前者重精准,后者重批量与速度。

问:实时版返回哪些状态?

答:九类:正常、空号、停机、关机、疑似关机、未知、异常号码、查询失败、号码不支持,并附是否携号转网与归属地。其中未知、异常号码、查询失败、号码不支持标注不计费。

问:普通版的状态码怎么读?

答:Status 为数字:0 空号、1 实号、2 停机、4 沉默号、5 风险号、6 疑似空号、3 未知、-1 查询失败;StatusDesc 为对应文字描述,另返回归属地与运营商。

问:普通版怎么鉴权?

答:走请求头签名,x-sign = MD5(apikey + 时间戳 + MD5(api_secret)),x-timestamp 为毫秒时间戳,每次请求重新计算,时间戳与服务器相差不得超过 15 分钟。

问:两个版本都支持批量吗?

答:普通版原生支持批量(上限 500 条/次);实时版文档示例为单号查询,批量清洗可通过 WEB 上传 TXT 或循环调用文件 API 实现。

问:准确率怎么样?

答:官方宣称两个版本准确率均可达 99.99%(数据来自企讯通官网,实际效果建议用你自己的样本集跑一轮验证)。

七、总结

企讯通空号检测两条产品线解决的是同一件事——把号码池里的"无效号"挑出来,但路径不同:实时版用运营商信令做单号精准核验,普通版用批量查询做大盘清洗。选型不复杂:要准、要带携号转网,上实时版;要快、要便宜、要洗海量名单,上普通版。接入代码与字段都按官方接口文档还原,落地前用你自己的样本跑一轮,比看宣传更靠谱。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/terry600/article/details/164817632

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--