手动SMS代码检索是任何大规模验证流程中的瓶颈。当您需要注册500个账户或在生产系统中自动处理传入的OTP时,虚拟号码提供商API成为关键工具。让我们检查集成架构、典型场景和实际代码示例。

虚拟号码API的基本概念

两种操作模式

大多数API提供商支持两种根本不同的模式:

  • 轮询(询问)——您的应用程序定期请求SMS状态。更易于实现,但会产生延迟和API负载
  • Webhook(推送)——提供商在SMS到达时本身向您的端点发送HTTP请求。即时、高效,推荐用于生产

通过API的电话号码生命周期

  • GET /numbers/available——获取按国家/服务列出的可用号码列表
  • POST /numbers/activate——租赁/激活号码
  • GET /sms/{activation_id}——检查传入的SMS(轮询)
  • POST /numbers/{id}/status——确认SMS接收或取消
  • DELETE /numbers/{id}——释放号码

集成示例:Python+轮询

用于在服务注册期间接收OTP代码的基本脚本:

  • 请求所需服务的号码(例如,Instagram)
  • 将号码传递给网站注册流程
  • 每5秒轮询5分钟
  • 使用正则表达式从SMS正文中提取代码
  • 确认收据(因此号码不会重复收费)

关键激活请求参数:

参数类型描述 countrystring国家代码:"us"、"gb"、"de"、"ru" servicestring服务标识符:"instagram"、"google"、"fb" operatorstring(可选)具体运营商:"att"、"tmobile" forward_urlstring(可选)推送通知的Webhook URL

Webhook集成架构

交互方案

用于高负载系统的生产架构:

  • Nginx在HTTPS端点上从提供商接收webhook请求
  • FastAPI/Express解析请求正文,检查Secret签名
  • 消息放入队列(Redis/RabbitMQ)用于异步处理
  • Worker使用正则表达式提取OTP代码,在DB中更新状态
  • 主注册流程通过回调或Redis轮询获取代码

来自提供商的示例有效负载

典型的webhook请求结构:

  • activation_id——提供商系统中的激活ID
  • phone——接收SMS的电话号码
  • from——发件人(例如,"GOOGLE"或"+18005551234")
  • text——完整的SMS文本
  • created_at——收据的Unix时间戳

平行大规模注册

同时100+注册的架构

朴素方法——顺序注册——每分钟给出1个账户。并行架构:

组件技术功能 任务队列Celery / BullMQ注册任务队列 Workers10–50并行每个进行1次注册 API池速率限制器+重试控制提供商限制 SMS监听器Webhook + Redis pub/sub向workers分发SMS 存储PostgreSQL / MongoDB账户、状态、日志

使用50个并行worker和平均注册时间3分钟——每小时1000个账户。限制因素:API提供商速率限制和目标站点速度。

错误处理和重试逻辑

典型API错误

  • SMS未在超时内到达(5分钟)——号码需要取消和新请求。原因:服务将SMS发送到不同号码或运营商延迟
  • 此服务的号码已被使用——提供商应该控制这一点,但有时会错过。检测:服务说"这个号码已注册"
  • API速率限制——实现带抖动的指数退避:1s、2s、4s、8s...
  • 临时提供商不可用——断路器模式:3次连续错误后等待30秒再尝试

通过Playwright/Selenium与反检测浏览器的集成

完整注册自动化=号码API+headless浏览器:

  • Python脚本通过API请求号码
  • Playwright使用所需的指纹和代理打开浏览器
  • 填写注册表格,插入接收到的号码
  • Webhook或轮询等待带代码的SMS
  • Playwright在验证表单中输入代码
  • 账户与登录/密码/号码/代理一起保存在DB中

速率限制和最佳实践

建议为什么重要 缓存可用号码列表(TTL 60秒)减少API负载,加快工作 验证webhook请求签名防止伪造SMS 记录所有SMS包括无法识别的帮助调试和纠纷 不要将激活的号码保留超过20分钟而无SMS避免未使用激活的充电 为HTTP客户端使用连接池通过并行请求降低延迟

SDK和现成库

大多数专业提供商为Python、Node.js、PHP、Go提供官方SDK。这节省了编写HTTP包装器和错误处理的时间。在选择提供商时检查SDK可用性——显示API成熟度。

turbon.rent API文档包括主要语言中的代码示例、所有端点和webhooks的描述——足以在几小时内集成。

虚拟号码API不仅仅是便利,它是企业扩展100倍和手动劳动达到性能上限之间的区别。