通过 API 接收短信的两种方式
虚拟号码服务,即各种“在线接收短信”网站(俗称接码平台)及其 API,会从它们自己的号码池里给你一个号码。有的在公开页面上展示收到的短信,有的按分钟或按天出租号码。它们上手快、不需要手机,但号码不是你的:租期一到,号码就回到号码池。
你自己的号码,即你掌控的手机里的 SIM 卡,取舍正好相反。你需要一台手机,但只要 SIM 卡在你手上,号码就一直归你,没有其他人能读取它的短信,注册在这个号码上的账户明年也照样能收到验证码。BusySMS 把这台手机变成 API:它收到的验证码可以通过 HTTP 读取。
搜索“在线接收短信 API”的人,通常指的是第一种。如果你真正需要的是自己账户的验证码,第二种在测试结束之后也能一直用下去。
BusySMS 与虚拟号码服务对比
| BusySMS | 虚拟号码服务 | |
|---|---|---|
| 号码来源 | 你自己手机里、你自己的 SIM 卡 | 服务商自有的号码池 |
| 谁能读取短信 | 你,以及你明确共享了号码的人 | 公开收件箱页面:任何人;租用的号码:租用者 |
| 号码归你多久 | 只要你保留这张 SIM 卡 | 仅限租期内 |
| 该账户之后的验证码 | 继续发到你的 SIM 卡 | 发给号码的下一位使用者 |
| 你需要什么 | 一台插着该 SIM 卡的 Android 手机或 iPhone | 该服务的一个账户 |
| 价格 | 每个已验证号码每月 $5,7 天免费试用 | 由各服务自行定价 |
如何选择
如果你只需要一个用于一次性测试的临时号码,之后不会有任何东西依赖它,那么虚拟号码更快,BusySMS 并不合适。如果账户很重要,比如公司的管理员登录、CI 每晚都要登录的测试账户,或客户早已熟知的号码,就用你自己的号码来接收。
BusySMS 也不是绕过他人验证的手段。它读取的是发到你掌控的号码、属于你自己账户的验证码。它无法读取任何其他人的短信,也不是为批量注册账户而设计的。
BusySMS 如何接收短信
- 1
在手机上安装接收端
Android 上使用 Google Play 中的 BusySMS 应用。iPhone 上使用快捷指令自动化,可搭配或不搭配 BusySMS iPhone 应用。
- 2
验证号码
BusySMS 向该号码发送一条验证码,手机再把它回传。这证明 SIM 卡确实持有该号码;在此之前,任何内容都不会被存储或计费。
- 3
接收
只保留看起来像验证码的短信。每条都会标记接收号码、发件人、识别出的服务以及到达时间。
- 4
读取
你的程序调用 REST API,AI 智能体使用 MCP,人则在控制台查看验证码,或让 Chrome 扩展自动填入。
可以用哪些号码接收
- 你自己手机中 SIM 卡上的任何号码:装有 BusySMS 应用、运行 Android 8.0 或更高版本的 Android 手机,或通过快捷指令、运行 iOS 14 或更高版本的 iPhone。
- 双卡手机中的每张 SIM 卡都是一个独立号码,单独验证、单独计费。
- 号码通过一次短信往返来验证,因此你无法添加不在你手上的 SIM 卡的号码。
通过 API 接收验证码
在控制台的 REST API 下创建密钥,并保存在环境变量中。然后等待某个特定号码上的下一条验证码:
# Digits only: the receiving number +44 7700 900123
curl -s -H "Authorization: Bearer $BUSYSMS_API_KEY" \
"https://busysms.net/api/v1/codes?phone=447700900123&timeoutMs=60000"const params = new URLSearchParams({ phone: "447700900123", timeoutMs: "60000" });
const res = await fetch(`https://busysms.net/api/v1/codes?${params}`, {
headers: { Authorization: `Bearer ${process.env.BUSYSMS_API_KEY}` },
});
if (!res.ok) throw new Error(`BusySMS ${res.status}`);
const { code } = await res.json(); // null if nothing new arrived
console.log(code);import os
import requests
r = requests.get(
"https://busysms.net/api/v1/codes",
params={"phone": "447700900123", "timeoutMs": 60000},
headers={"Authorization": f"Bearer {os.environ['BUSYSMS_API_KEY']}"},
timeout=75,
)
r.raise_for_status()
print(r.json()["code"]) # None if nothing new arrivedphone 匹配接收号码(只写数字即可),因此账户中有多个号码时,你拿到的是正确号码的验证码。等待最长 90 秒;如果没有新验证码到达,返回 null,而不是旧的验证码。
如果想查看历史而不是等待,可以用 GET /api/v1/devices/:id/messages 列出某台手机最近的短信;捕获的短信最多保留 7 天。所有接口和错误详见 短信网关 API 指南。
会接收什么,不会接收什么
- 设置时由你为每张 Android SIM 卡选择:所有短信,或只接收验证码类短信。其他短信只有你能看到。
- 在 iPhone 上,检查在手机本地完成:不像验证码的短信永远不会离开手机。
- 网关关闭期间不会捕获任何内容。
- 号码必须先通过验证,它收到的内容才会被存储。
常见问题
常见问题解答
BusySMS 会给我手机号吗?
不会。BusySMS 不提供任何号码。你用自己拥有并验证过的 SIM 卡接收,所以验证码属于你,也始终只属于你。
没有手机也能在线接收短信吗?
用 BusySMS 不行:插着 SIM 卡的真实手机就是网关。如果你没有该号码对应的手机,可以考虑虚拟号码服务,但要接受上文所述的取舍。
能接收任何短信,还是只能接收验证码?
任何短信都可以,只要 Android SIM 卡开启了「同步所有短信」(在设置时由你选择):每条短信都会进入你的账户,最多保留 7 天。设置为只同步验证码的 SIM 卡只发送看起来像验证码的短信。无论哪种方式,验证码接口都只返回验证码。
不写代码,怎样在浏览器中接收验证码?
安装 Chrome 扩展。当网站向你的 BusySMS 号码发送验证码时,它会填写验证码输入框并按下回车。
多人能接收同一个号码的验证码吗?
可以。号码所有者可以把号码共享给最多五位其他 BusySMS 用户。他们只能看到接受之后到达的验证码,所有者可以随时撤销访问。
收到的短信保留多久?
最多 7 天,之后删除。如果需要更久保存某条验证码或短信,请自行保存。
博客
更多博客文章
全部文章继续阅读
相关指南
全部指南用你自己的号码试一试
安装应用、验证号码,今天就能读到第一条验证码。每个账户都从 7 天免费试用开始;之后每个已验证号码每月 $5,可随时取消。
BusySMS 的更多内容
