什么是 Android 短信网关,以及它不是什么
短信网关泛指位于移动网络和你的软件之间的任何东西。大多数短信网关是用来群发短信的。BusySMS 做的是另一半:它负责接收。运行 BusySMS 应用的手机会成为你账户下的一台网关设备,发到它 SIM 卡上的一次性验证码一到达,你的代码就能读取。
它不发送短信。没有发送或群发短信的 API,也没有可供租用的号码池。BusySMS 根本不提供手机号:你使用自己拥有并已验证的 SIM 卡,正因如此,注册在这些号码上的账户的验证码只会到你手里,不会到别人手里。
- 它会把你已验证号码上的短信同步到你的控制台:每条短信,或只同步验证码和一次性密码短信。在设置时由你选择,每张 SIM 卡都可随时更改;同步的短信仅你可见。
- 每张 SIM 卡都是一个独立的网关号码:双卡手机的两个号码都验证后,你就有两个网关号码。
- 验证码可以在控制台、REST API、面向 AI 智能体的 MCP 以及 Chrome 扩展中读取,扩展还会替你把验证码填进网站。
- 你可以把一个号码的验证码共享给最多五位其他 BusySMS 用户,让团队用一台手机登录同一个服务。
你需要准备
- 一台运行 Android 8.0 或更高版本的 Android 手机,插着你要接收验证码的 SIM 卡。单卡和双卡手机都可以,无需 root。
- 一台真实的手机。不支持用模拟器作为网关:关键就在于真实移动网络上的真实 SIM 卡。
- 来自 Google Play 的 BusySMS 应用(包名
net.busysms.app)。 - 一个 BusySMS 账户。你用发送到邮箱的一次性验证码登录,无需设置密码。
五步设置网关
- 1
安装应用
在插有该 SIM 卡的手机上,从 Google Play 安装 BusySMS。Google Play 是唯一的安装渠道,所以更新会照常推送。
- 2
用邮箱登录
输入你的邮箱地址,再输入我们发给你的验证码。手机号绑定到账户后,也可以用手机号登录。同一个账户可用于网站、MCP 客户端和 Chrome 扩展。
- 3
注册手机并验证 SIM 卡
选择 SIM 卡。BusySMS 会向该号码发送一条验证码,由应用捕获,以此证明这张 SIM 卡确实持有这个号码。号码验证之前,它收到的任何内容都不会被存储、读取或计费。
- 4
允许短信权限并开启网关
应用请求时,允许短信权限。也建议开启通知使用权,因为部分手机厂商的“信息”应用会以通知形式送达验证码。开启网关:捕获运行期间,Android 会显示一条常驻通知,你可以随时从那里停止。
- 5
读取第一条验证码
在控制台打开收到的短信,或在 REST API 下创建 API 密钥并调用
GET /api/v1/codes。从现在起手机收到的每条验证码都会同时出现在这两个地方。
通过 REST API 读取验证码
每个请求都在 Authorization: Bearer 请求头中携带你的 API 密钥,密钥以 bsk_live_ 开头。密钥属于你的账户,因此只能看到你自己的手机,以及别人共享给你的号码。
export BUSYSMS_API_KEY=bsk_live_xxxxxxxx
# Wait up to 60 s for the next code on any of your numbers
curl -s -H "Authorization: Bearer $BUSYSMS_API_KEY" \
"https://busysms.net/api/v1/codes?timeoutMs=60000"// Node 18+ (built-in fetch)
const res = await fetch("https://busysms.net/api/v1/codes?timeoutMs=60000", {
headers: { Authorization: `Bearer ${process.env.BUSYSMS_API_KEY}` },
});
if (!res.ok) throw new Error(`BusySMS ${res.status}: ${await res.text()}`);
const { code, message } = await res.json();
console.log(code ?? "No new code within 60 s", message?.sender);import os
import requests
r = requests.get(
"https://busysms.net/api/v1/codes",
params={"timeoutMs": 60000},
headers={"Authorization": f"Bearer {os.environ['BUSYSMS_API_KEY']}"},
timeout=75, # longer than the long-poll itself
)
r.raise_for_status()
print(r.json()["code"] or "No new code within 60 s")当 timeoutMs 大于零时,请求会长轮询最多 90 秒,并且只返回请求开始之后到达的验证码,绝不返回旧的,因为提交已用过的验证码会白白浪费一次登录尝试。接口、过滤参数和错误码见 短信网关 API 指南。
读取验证码的四种方式
控制台
“收到的短信”列出每条验证码及其识别出的服务、发件人和时间。无需安装任何东西。
REST API
适用于脚本、测试套件和后端:一个 GET 请求即可等待下一条验证码。
面向 AI 智能体的 MCP
把 Claude、Codex 或其他 MCP 客户端连接到 busysms.net/mcp,智能体会自己调用 wait_for_code。
Chrome 扩展
BusySMS OTP Autofill 会找到网站上的验证码输入框,填入验证码(分格数字框也可以),然后按下回车。
开始前值得了解的限制
- 设置为只同步验证码的 SIM 卡,只捕获看起来像验证码的短信,其他短信都留在手机上。网关关闭期间不会捕获任何内容。
- 如果验证码在网关关闭时到达,重新启动网关即可:BusySMS 会补抓最近 15 分钟内的验证码短信。
- 省电功能可能会停止后台应用。如果验证码不再到达,请把 BusySMS 排除在电池优化之外,并保留它的通知。
- 捕获的短信最多保留 7 天,之后删除。需要更久保存的内容请自行保存。
- 读取验证码需要有效的试用或订阅。如果已过期,手机仍会继续捕获,但在账单恢复正常之前,通过 API 和 MCP 读取会返回
402 payment_required。 - 关闭网关并不会停止已验证号码的计费。要停止为某个号码付费,请在控制台中移除它。
价格
每个已验证手机号每月 $5,每个账户都有一周免费(7 天试用)。一份订阅覆盖整个账户,在网页控制台通过 Stripe 用银行卡付费:新增一个号码账单增加 $5,移除一个则相应减少。Android 应用会显示你的套餐,但不在应用内销售。
常见问题
常见问题解答
有免费的 Android 短信网关应用吗?
BusySMS 应用可免费安装,每个账户都有 7 天免费试用,功能完整。试用结束后,读取验证码的费用为每个已验证号码每月 $5。按号码计费,而不是按短信条数或请求次数计费。
能下载 APK 吗?BusySMS 是开源的吗?
请从 Google Play 安装:APK 直接下载已停止提供,Play 是唯一的安装渠道。BusySMS 是托管服务而非开源项目;你的 API 密钥、MCP 访问权限和号码共享都保存在你的 BusySMS 账户中。
BusySMS 能发送短信或群发短信吗?
不能。它是接收端网关:捕获发到你自己号码上的验证码。它没有发送、群发或营销短信的 API。
支持双卡手机吗?
支持。每张 SIM 卡都是独立的网关号码,需要分别验证。两个号码都验证后,按两个号码计费。
它会读取我的私人短信吗?
只有在你选择时才会。设置时由你选择:同步所有短信,或只同步验证码;每张 SIM 卡都可随时更改。无论哪种方式,都只在网关开启时运行,同步的短信仅你可见,绝不共享。
可以改用 iPhone 吗?
可以。iPhone 通过一个快捷指令自动化转发验证码,只发送看起来像验证码的短信。请参阅从 iPhone 转发短信验证码。
博客
更多博客文章
全部文章继续阅读
相关指南
全部指南用你自己的号码试一试
安装应用、验证号码,今天就能读到第一条验证码。每个账户都从 7 天免费试用开始;之后每个已验证号码每月 $5,可随时取消。
BusySMS 的更多内容
