精准识别无效号码,降低营销成本,提升转化率
检测准确率高达99%,支持实时检测和批量检测两种模式
专业空号检测服务,为企业提供精准的号码过滤解决方案
基于运营商数据和智能算法,检测准确率高达99%
单号码检测响应时间<100ms,10万号码批量检测仅需5分钟< /p>
覆盖全国三大运营商10亿+号码数据,每日更新千万级数据
支持实时检测(API)和批量检测(文件上传)两种模式
提供空号、停机、静默号等8种状态分类统计报告
提供RESTful API和多种语言SDK,快速接入
提供多种语言的SDK,简化开发流程
体验简单易用的空号检测API接口
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"
}
字段说明:
精准识别多种无效号码状态,全面过滤低质量号码
识别空号或已注销的号码
识别欠费停机、主动停机等状态
识别长期活跃在用的号码
识别投诉率高、拒收短信的号码
两种检测模式满足不同业务场景需求
通过API接口实时查询单个号码状态,适用于注册验证、交易确认等实时性要求高的场景
上传包含号码的文件进行批量检测,适用于营销活动前的号码清洗和大规模数据整理
关于空号检测的常见问题解答
我们的空号检测服务基于多种技术手段:1) 运营商数据对接:实时查询号码状态;2) 智能算法分析:通过通信行为模式识别无效号码;3) 大数据积累:10亿+号码历史数据辅助判断;4) 实时探测技术:对可疑号码进行智能验证。多种技术结合确保检测结果的准确性。
我们的检测服务返回8种号码状态:1) 活跃号;2) 空号停机;3) 风险号(高投诉率);4) 未知状态。您可以根据业务需求选择过滤的数据。
我们支持三种常见文件格式:1) Excel(.xlsx):支持多sheet和多列数据;2)TXT(.txt):每行一个号码的纯文本格式。文件大小限制为50MB,建议将大文件分割后分批上传。系统会自动识别文件格式和号码所在列。