跳转到内容
Guide

NumVerify 替代方案:电话验证加上 150 个端点

| 7 min read

NumVerify 仅针对电话验证收取 14.99 美元/月的费用。 Botoi 验证来自 30 多个国家/地区的手机,并包括 150 多个免费的开发者端点。

Person holding a smartphone with validation interface on screen
Photo by Rami Al-zayat on Unsplash

您每月向 NumVerify 支付 14.99 美元来验证电话号码。 一个端点。 当你的 结帐表单还需要电子邮件验证,并且您的欺诈管道需要 IP 地理定位, 您将添加另外两个订阅、另外两个 API 密钥和另外两个计费仪表板。 NumVerify 是 APILayer 系列的一部分(与 ipstack、mailboxlayer、Fixer.io 同一父级), 并且每种产品单独计费。

波托伊的 /v1/phone 端点验证并标准化 30 多个电话号码 国家/地区转换为 E.164 格式。 它是每个计划中包含的 150 多个端点之一。 电话 验证、电子邮件验证、IP 地理定位、DNS 查找、VPN 检测; 全部在一个 单钥匙起价为 0 美元/月。

并排:NumVerify 与 botoi

NumVerify 使用 GET 请求并将 API 密钥作为查询参数。 免费套餐是 仅 HTTP; HTTPS 需要付费计划。 Botoi 使用带有 Bearer auth 的 POST 请求 每个层级都支持 HTTPS,包括免费的。

验证请求数量

curl "http://apilayer.net/api/validate?access_key=YOUR_KEY&number=14155552671"

回复:

{
  "valid": true,
  "number": "14155552671",
  "local_format": "4155552671",
  "international_format": "+14155552671",
  "country_prefix": "+1",
  "country_code": "US",
  "country_name": "United States of America",
  "location": "California",
  "carrier": "AT&T Mobility LLC",
  "line_type": "mobile"
}

波托伊请求

curl -X POST https://api.botoi.com/v1/phone \\
  -H "Content-Type: application/json" \\
  -d '{"phone": "+14155552671"}'

回复:

{
  "success": true,
  "data": {
    "phone": "+14155552671",
    "valid": true,
    "country_code": "+1",
    "country": "United States / Canada",
    "e164_format": "+14155552671",
    "national_format": "4155552671"
  }
}

响应场比较

这两个 API 都会返回有效性、国家/地区和格式化数字。 关键的区别是什么 NumVerify 包括 botoi 没有的内容,以及 botoi 更广泛的平台添加的内容。

场地 验证数量 发表
有效标志 是的 是的
E.164格式 是的 (international_format 是的 (e164_format
国家格式 是的 (local_format 是的 (national_format
国家代码 是的 是的
国家名称 是的 是的
地点(州/地区) 是的
运营商名称 是的
线路类型(移动/固定电话/VoIP) 是的
免费层上的 HTTPS 是的
HTTP方式 GET(输入网址) POST(不记名身份验证)

NumVerify 返回运营商和线路类型,这对于 SMS 路由很重要。 波托伊回归 相同的验证和格式化字段,但跳过运营商数据以支持覆盖 同一密钥下有 150 多个其他端点类别。

英国号码示例

curl -X POST https://api.botoi.com/v1/phone \\
  -H "Content-Type: application/json" \\
  -d '{"phone": "+442071234567"}'

回复:

{
  "success": true,
  "data": {
    "phone": "+442071234567",
    "valid": true,
    "country_code": "+44",
    "country": "United Kingdom",
    "e164_format": "+442071234567",
    "national_format": "2071234567"
  }
}

定价比较

计划 验证数量 发表
自由的 100 请求/月,仅限 HTTP,仅限电话 每天 100 个请求,HTTPS,所有 150 多个端点,无需注册
基础/入门 14.99 美元/月,需要 5,000 个,仅限电话 $9/月,300,000 个请求,所有端点
专业版 49.99 美元/月,50,000 份需求,仅限电话 $29/月,1,000,000 请求,所有端点
企业 99.99 美元/月,250,000 份需求,仅限电话 $49/月,3,000,000 请求,所有端点

NumVerify 的 14.99 美元/月基本计划为您提供 5,000 个电话验证请求。 波托伊的 9 美元/月的入门计划通过电话验证、电子邮件为您提供 300,000 个请求 验证、IP 地理定位、DNS 查找和所有其他端点。 数学变得更多 当你添加功能时,就会出现不平衡。

NumVerify 的免费层通过纯 HTTP 在 URL 中发送您的 API 密钥。 这意味着你的 key 在服务器日志、代理日志和浏览器历史记录中可见。 Botoi 使用 POST 与 在每一层上通过 HTTPS 进行承载身份验证。

一把 botoi 钥匙还能带来什么

NumVerify 为您提供了一种用于电话验证的 API。 一把 botoi 密钥可解锁 150 多个端点。 以下是与您使用电话验证的相同工作流程最相关的内容:

  • 电子邮件验证/v1/email/validate) 检查语法, 验证 MX 记录并标记一次性提供商。 与验证相同的注册表单 电话号码可以验证同一请求批次中的电子邮件。
  • 一次性电子邮件检测/v1/disposable-email/check) 捕获来自 Guerrilla Mail、Mailinator 和 5,000 多个其他提供商的一次性地址。
  • IP地理定位/v1/ip/lookup) 返回城市、地区、 呼叫者 IP 的国家/地区、坐标和时区。 将其用于货币默认值和 GDPR 合规性检查。
  • VPN检测/v1/vpn-detect) 标记 VPN、代理、Tor 和 具有风险评分的数据中心连接。 对于注册时预防欺诈很重要。
  • DNS安全/v1/dns-security/spf-check, /v1/dns-security/dmarc-check)审核电子邮件身份验证记录以查找任何 域。

在NumVerify的定价模型上,添加电子邮件验证意味着订阅mailboxlayer (14.99 美元/月)。 添加 IP 地理定位意味着订阅 ipstack(9.99 美元/月)。 每个 新功能是新的 API 密钥、新的仪表板和发票上的新行项目。 对于 botoi,它是相同的密钥和相同的每月账单。

迁移:在 Express 中将 NumVerify 替换为 botoi

这是使用 NumVerify 的典型注册路线,然后是使用 botoi 的相同路线。 迁移涉及三个变化:HTTP 方法(GET 到 POST)、URL 和响应字段 名称。

之前(NumVerify)

// BEFORE: NumVerify (GET, HTTP only on free tier)
app.post("/signup", async (req, res) => {
  const phone = req.body.phone.replace(/[^0-9]/g, "");
  const numverify = await fetch(
    \`http://apilayer.net/api/validate?access_key=\${NUMVERIFY_KEY}&number=\${phone}\`
  ).then((r) => r.json());

  if (!numverify.valid) {
    return res.status(422).json({ error: "Invalid phone number" });
  }

  await db.users.create({
    phone: numverify.international_format,
    carrier: numverify.carrier,
    country: numverify.country_name,
  });

  res.status(201).json({ ok: true });
});

之后(发布)

// AFTER: Botoi (POST, HTTPS, no API key needed for free tier)
app.post("/signup", async (req, res) => {
  const phone = req.body.phone;
  const botoi = await fetch("https://api.botoi.com/v1/phone", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ phone }),
  }).then((r) => r.json());

  if (!botoi.data.valid) {
    return res.status(422).json({ error: "Invalid phone number" });
  }

  await db.users.create({
    phone: botoi.data.e164_format,
    country: botoi.data.country,
  });

  res.status(201).json({ ok: true });
});

botoi 版本删除了正则表达式清理步骤,因为 API 处理空格, 输入中的破折号和括号。 您发送原始用户输入 + 前缀并返回干净的 E.164 字符串。 这 carrier 田野消失了; 如果你 正在存储它但不将其用于路由决策,您不会错过它。

将电话、电子邮件和欺诈检查合并为一项功能

当注册表单需要多次验证时,单密钥模型会带来回报。 这个功能 使用一个 API 密钥并行运行四项检查:

const BOTOI = "https://api.botoi.com/v1";
const headers = {
  "Content-Type": "application/json",
  "Authorization": \`Bearer \${process.env.BOTOI_API_KEY}\`,
};

async function validateSignup(email, phone, ip) {
  const [emailCheck, phoneCheck, disposableCheck, vpnCheck] =
    await Promise.all([
      fetch(\`\${BOTOI}/email/validate\`, {
        method: "POST",
        headers,
        body: JSON.stringify({ email }),
      }).then((r) => r.json()),

      fetch(\`\${BOTOI}/phone\`, {
        method: "POST",
        headers,
        body: JSON.stringify({ phone }),
      }).then((r) => r.json()),

      fetch(\`\${BOTOI}/disposable-email/check\`, {
        method: "POST",
        headers,
        body: JSON.stringify({ email }),
      }).then((r) => r.json()),

      fetch(\`\${BOTOI}/vpn-detect\`, {
        method: "POST",
        headers,
      }).then((r) => r.json()),
    ]);

  return {
    emailValid: emailCheck.data.valid,
    disposable: disposableCheck.data.disposable,
    phoneValid: phoneCheck.data.valid,
    phoneE164: phoneCheck.data.e164_format,
    phoneCountry: phoneCheck.data.country,
    vpn: vpnCheck.data.isVpn,
    riskScore: vpnCheck.data.riskScore,
  };
}

// One key, four checks, one billing dashboard
const result = await validateSignup(
  "buyer@company.io",
  "+14155552671",
  "203.0.113.42"
);
console.log(result);

在 NumVerify + Mailboxlayer + ipstack 上,此函数需要来自三个 API 密钥的三个 API 密钥: 仪表板。 在 botoi 上,它是一键、一张账单、一张配额,覆盖所有四个端点。

何时选择 NumVerify

NumVerify 在以下两种情况下是更好的选择:

  • 您需要短信路由的运营商检测。 如果您的应用程序选择 Twilio 和基于运营商的本地 SMS 网关(例如,路由 AT&T 号码) 通过一个提供商,T-Mobile 通过另一提供商),NumVerify 的 carrierline_type 字段是必不可少的。 Botoi 不返回运营商数据。
  • 您需要线型分类。 如果您的产品收费不同 对于移动、固定电话和 VoIP 号码(常见于电信计费),NumVerify 的 line_type 场驱动该逻辑。 Botoi 告诉您该号码有效,但是 与手机或固定电话无关。

如果您的用例是“验证格式、标准化为 E.164 并检测国家/地区”, botoi 覆盖了它。 如果您的用例是“确定路由的运营商和线路类型 决策”,NumVerify 拥有该轴的更深入数据。

您还可以混合使用两者:将 botoi 用于匹配或超过的 150 多个端点 NumVerify 的覆盖范围,并保留 NumVerify 以进行特定于运营商的查找(如果该数据驱动) 应用程序中的业务逻辑。

要点

  • NumVerify 对单次 5,000 个电话验证请求收取 14.99 美元/月的费用 端点。 其免费套餐上限为每月 100 个请求,无 HTTPS。
  • 波托伊的 /v1/phone 端点返回与 E.164 相同的验证 格式化。 免费套餐包括每天通过 HTTPS 进行 100 个请求,无需注册。
  • Botoi 的 9 美元/月计划包括跨所有 150 多个端点的 300,000 个请求。 验证数 14.99 美元/月的计划仅包括 5,000 个电话验证请求。
  • NumVerify 返回运营商名称和线路类型。 博托伊没有。 如果携带者检测 在您的应用程序中驱动短信路由,NumVerify 更专业。
  • 更大的胜利是整合。 电话验证、电子邮件验证、IP 地理定位、 VPN 检测、DNS 安全以及一个 API 密钥和一张发票下的 145 个端点。

FAQ

是否有可以替代 NumVerify 进行电话验证的免费替代方案?
是的。 Botoi 的 /v1/phone 端点验证国际电话号码并返回 E.164 格式、国家格式、国家/地区代码和国家/地区名称。 免费套餐允许通过 HTTPS 每分钟 5 个请求和每天 100 个请求,无需注册。 NumVerify 的免费计划每月上限为 100 个请求,并限制您使用 HTTP。
botoi 是否会像 NumVerify 一样返回运营商数据?
不会。NumVerify 返回运营商名称(例如 AT&T Mobility)和线路类型(移动、固定电话、VoIP)。 Botoi 的 /v1/phone 端点专注于验证和 E.164 标准化。 如果运营商检测驱动您的 SMS 路由逻辑,NumVerify 会为该特定用例提供更深入的数据。
botoi 需要什么电话号码格式?
Botoi 的 /v1/phone 端点需要采用国际格式的号码,以 + 前缀和国家/地区代码开头。 例如,美国为 +14155552671,英国为 +442071234567。 没有 + 前缀的数字返回 valid: false 并带有解释预期格式的注释。
botoi 的免费套餐包含多少个请求?
免费套餐允许所有端点每分钟 5 个请求,每天 100 个请求,并具有基于 IP 的速率限制。 无需 API 密钥、无需注册,也无需信用卡。 付费计划起价为每月 9 美元,适用于所有 150 多个端点的 300,000 个请求。
我可以在不更改后端的情况下用 botoi 替换 NumVerify 吗?
您需要更新 HTTP 方法(POST 而不是 GET)、URL (api.botoi.com/v1/phone) 和响应字段名称(e164_format 而不是 International_format,country 而不是 Country_name)。 每个集成点的迁移需要 10-15 分钟。 本指南中包含一个代码示例。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。