空号检测服务

精准识别无效号码,降低营销成本,提升转化率

检测准确率高达99%,支持实时检测和批量检测两种模式

空号检测服务

产品特性

专业空号检测服务,为企业提供精准的号码过滤解决方案

高准确率

高准确率

基于运营商数据和智能算法,检测准确率高达99%

快速检测

快速检测

单号码检测响应时间<100ms,10万号码批量检测仅需5分钟< /p>

海量数据

海量数据

覆盖全国三大运营商10亿+号码数据,每日更新千万级数据

双模检测

双模检测

支持实时检测(API)和批量检测(文件上传)两种模式

详细报告

详细报告

提供空号、停机、静默号等8种状态分类统计报告

简单集成

简单集成

提供RESTful API和多种语言SDK,快速接入

SDK支持

提供多种语言的SDK,简化开发流程

Java

Java SDK

下载 文档
PHP

PHP SDK

下载 文档
Python

Python SDK

下载 文档
C#

C# SDK

下载 文档
Go

Go SDK

下载 文档
Node.js

Node.js SDK

下载 文档

API演示

体验简单易用的空号检测API接口

HTTP请求
Java
PHP
Python
C#
Go
Node.js
POST /HrmApi/emptyStatusQuery HTTP/1.1
Host: api.Thinksms.cn
Content-Type: application/json;charset=utf-8
{
  "mobile": "13568889999",
  "hashcode": "8c0354cebf53f09d33c90953161b3e",
  "sign": "32位MD5签名值"
}
import okhttp3.*;

public class EmptyNumberCheck {
    public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient();
        
        // 准备参数
        String mobile = "13568889999";
        String hashcode = "8c0354cebf53f09d33c90953161b3e";
        String privateKey = "您的私钥";
        String date = new SimpleDateFormat("yyyyMMdd").format(new Date());
        
        // 生成签名
        String signStr = hashcode + mobile + privateKey + date;
        String sign = DigestUtils.md5Hex(signStr).toUpperCase();
        
        // 构建请求
        String json = String.format("{\"mobile\":\"%s\",\"hashcode\":\"%s\",\"sign\":\"%s\"}",
                mobile, hashcode, sign);
                
        Request request = new Request.Builder()
            .url("http://api.Thinksms.cn/HrmApi/emptyStatusQuery")
            .post(RequestBody.create(json, MediaType.parse("application/json")))
            .build();
            
        // 发送请求
        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.body().string());
        }
    }
}
<?php
function checkEmptyNumber() {
    $mobile = '13568889999';
    $hashcode = '8c0354cebf53f09d33c90953161b3e';
    $privateKey = '您的私钥';
    $date = date('Ymd');
    
    // 生成签名
    $sign = strtoupper(md5($hashcode . $mobile . $privateKey . $date));
    
    $data = [
        'mobile' => $mobile,
        'hashcode' => $hashcode,
        'sign' => $sign
    ];
    
    $options = [
        'http' => [
            'header' => "Content-Type: application/json;charset=utf-8\r\n",
            'method' => 'POST',
            'content' => json_encode($data)
        ]
    ];
    
    $context = stream_context_create($options);
    $result = file_get_contents('http://api.Thinksms.cn/HrmApi/emptyStatusQuery', false, $context);
    return json_decode($result, true);
}

$response = checkEmptyNumber();
print_r($response);
?>
import hashlib
import requests
import datetime

def check_empty_number():
    mobile = "13568889999"
    hashcode = "8c0354cebf53f09d33c90953161b3e"
    private_key = "您的私钥"
    date = datetime.datetime.now().strftime("%Y%m%d")
    
    # 生成签名
    sign_str = hashcode + mobile + private_key + date
    sign = hashlib.md5(sign_str.encode()).hexdigest().upper()
    
    data = {
        "mobile": mobile,
        "hashcode": hashcode,
        "sign": sign
    }
    
    response = requests.post(
        "http://api.Thinksms.cn/HrmApi/emptyStatusQuery",
        json=data,
        headers={"Content-Type": "application/json;charset=utf-8"}
    )
    return response.json()

response = check_empty_number()
print(response)
using System;
using System.Net;
using System.Security.Cryptography;
using System.Text;

class EmptyNumberCheck
{
    static void Main()
    {
        string mobile = "13568889999";
        string hashcode = "8c0354cebf53f09d33c90953161b3e";
        string privateKey = "您的私钥";
        string date = DateTime.Now.ToString("yyyyMMdd");
        
        // 生成签名
        string sign = GetMD5(hashcode + mobile + privateKey + date).ToUpper();
        
        string json = $@"{{
            ""mobile"":""{mobile}"",
            ""hashcode"":""{hashcode}"",
            ""sign"":""{sign}""
        }}";
        
        using (WebClient client = new WebClient())
        {
            client.Headers[HttpRequestHeader.ContentType] = "application/json;charset=utf-8";
            string response = client.UploadString("http://api.Thinksms.cn/HrmApi/emptyStatusQuery", "POST", json);
            Console.WriteLine(response);
        }
    }
    
    static string GetMD5(string input)
    {
        using (MD5 md5 = MD5.Create())
        {
            byte[] inputBytes = Encoding.UTF8.GetBytes(input);
            byte[] hashBytes = md5.ComputeHash(inputBytes);
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < hashBytes.Length; i++)
            {
                sb.Append(hashBytes[i].ToString("X2"));
            }
            return sb.ToString();
        }
    }
}
package main

import (
    "crypto/md5"
    "encoding/hex"
    "encoding/json"
    "net/http"
    "bytes"
    "fmt"
    "time"
)

func main() {
    mobile := "13568889999"
    hashcode := "8c0354cebf53f09d33c90953161b3e"
    privateKey := "您的私钥"
    date := time.Now().Format("20060102")
    
    // 生成签名
    hasher := md5.New()
    hasher.Write([]byte(hashcode + mobile + privateKey + date))
    sign := hex.EncodeToString(hasher.Sum(nil))
    
    data := map[string]string{
        "mobile":   mobile,
        "hashcode": hashcode,
        "sign":     sign,
    }
    
    jsonData, _ := json.Marshal(data)
    req, _ := http.NewRequest("POST", "http://api.Thinksms.cn/HrmApi/emptyStatusQuery", bytes.NewBuffer(jsonData))
    req.Header.Set("Content-Type", "application/json;charset=utf-8")
    
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()
    
    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
const crypto = require('crypto');
const axios = require('axios');

async function checkEmptyNumber() {
    const mobile = '13568889999';
    const hashcode = '8c0354cebf53f09d33c90953161b3e';
    const privateKey = '您的私钥';
    const date = new Date().toISOString().slice(0, 10).replace(/-/g, '');
    
    // 生成签名
    const sign = crypto
        .createHash('md5')
        .update(hashcode + mobile + privateKey + date)
        .digest('hex')
        .toUpperCase();
    
    const data = {
        mobile: mobile,
        hashcode: hashcode,
        sign: sign
    };
    
    try {
        const response = await axios.post('http://api.Thinksms.cn/HrmApi/emptyStatusQuery', data, {
            headers: {
                'Content-Type': 'application/json;charset=utf-8'
            }
        });
        console.log(response.data);
    } catch (error) {
        console.error(error);
    }
}

checkEmptyNumber();

响应示例

{
  "mobileresult": {
    "state": 1,
    "desc": "活跃号"
  },
  "errorRes": {
    "err_code": "200",
    "err_content": "success"
  },
  "err_TransCode": "328176434679906304"
}

字段说明:

  • state: 号码状态(1:活跃号, 2:空号, 3:沉默号码, 4:风险号)
  • desc: 状态描述
  • err_code: 接口返回状态码(200表示成功)
  • err_content: 状态描述
  • err_TransCode: 流水号(用于问题排查)

检测能力

精准识别多种无效号码状态,全面过滤低质量号码

空号

空号检测

识别空号或已注销的号码

停机

停机检测

识别欠费停机、主动停机等状态

活跃号

活跃号检测

识别长期活跃在用的号码

风险号

风险号检测

识别投诉率高、拒收短信的号码

工作模式

两种检测模式满足不同业务场景需求

实时检测

实时检测API

通过API接口实时查询单个号码状态,适用于注册验证、交易确认等实时性要求高的场景

  • 响应时间<100ms< /li>
  • 支持每秒100次查询
  • 返回8种号码状态
  • 支持号码归属地查询
批量检测

批量检测

上传包含号码的文件进行批量检测,适用于营销活动前的号码清洗和大规模数据整理

  • 支持Excel/TXT/CSV格式
  • 单次最多100万号码
  • 提供详细检测报告
  • 支持结果自动分类导出

常见问题

关于空号检测的常见问题解答

空号检测的原理是什么?

我们的空号检测服务基于多种技术手段:1) 运营商数据对接:实时查询号码状态;2) 智能算法分析:通过通信行为模式识别无效号码;3) 大数据积累:10亿+号码历史数据辅助判断;4) 实时探测技术:对可疑号码进行智能验证。多种技术结合确保检测结果的准确性。

检测结果包含哪些状态?

我们的检测服务返回8种号码状态:1) 活跃号;2) 空号停机;3) 风险号(高投诉率);4) 未知状态。您可以根据业务需求选择过滤的数据。

批量检测支持哪些文件格式?

我们支持三种常见文件格式:1) Excel(.xlsx):支持多sheet和多列数据;2)TXT(.txt):每行一个号码的纯文本格式。文件大小限制为50MB,建议将大文件分割后分批上传。系统会自动识别文件格式和号码所在列。

在线咨询 在线咨询
微信客服

添加微信客服

微信公众号二维码

扫码添加客服微信

客服热线

客服热线

400-668-7332

服务时间: 8:00-22:00