你正在开发Telegram机器人或自动化工具,却发现需要接收验证码才能完成登录或账号激活?你尝试了多个接码平台,但要么接口不稳定,要么无法与Telegram的API对接?本教程将手把手教你如何利用第三方接码API,实现Telegram验证码的自动接收与提取,解决账号注册、登录验证等场景下的接码难题。
检测网络连接与基础环境
在开始使用接码API之前,必须确保你的运行环境能够正常访问Telegram服务器和接码平台。许多新手卡在这一步,导致后续所有操作失败。
具体操作说明:
首先,打开你的命令行工具(Windows用户使用CMD或PowerShell,Mac/Linux用户使用终端)。执行以下命令测试网络连通性:ping api.telegram.org。如果返回结果中有“来自xxx的回复”或“64 bytes from”,说明网络可达。接着,测试你选定的接码平台域名,例如ping sms-activate.org。如果两个测试都通过,继续下一步;如果其中一个失败,请检查你的代理或VPN设置,确保Telegram相关域名和接码平台域名都处于直连或代理可访问状态。
注意事项/小提示:
- 如果你的网络环境需要代理,请确保代理工具已开启全局模式或添加了Telegram和接码平台域名的规则。
- 部分接码平台(如5sim、SMS-Activate)可能需要单独配置代理,建议使用HTTP代理并设置环境变量。
- 如果使用云服务器(如阿里云、腾讯云海外节点),通常无需额外配置代理。
备用方案:
- 尝试更换DNS服务器为8.8.8.8或1.1.1.1,再执行ping测试。
- 使用
curl -I https://api.telegram.org命令替代ping,因为某些服务器禁用了ICMP协议。 - 如果所有测试都失败,请检查防火墙是否拦截了出站连接,或联系你的网络管理员。
注册并获取接码平台API密钥
接码API的核心是第三方平台提供的接口密钥。你需要先注册一个接码平台账号,并充值少量余额用于购买号码。
具体操作说明:
访问一个可靠的接码平台,例如SMS-Activate(sms-activate.org)或5sim(5sim.net)。点击注册按钮,使用邮箱完成注册。登录后,找到API密钥或API Key相关页面(通常在个人设置或开发者选项里)。点击生成或复制你的专属API密钥,例如12345AbcDeFgHiJklMnoP。然后,为你的账户充值——大多数平台支持支付宝、USDT或信用卡,最低充值约1美元即可开始使用。
注意事项/小提示:
- 请勿将API密钥泄露给任何人,它相当于你的账户密码。
- 不同平台的API调用格式略有差异,但基本原理相同。本教程以SMS-Activate为例,5sim用户可参考其官方文档调整参数。
- 充值前先查看平台支持的国家号码和价格,选择成本最低且Telegram支持的国家(如印度尼西亚、俄罗斯等)。
备用方案:
- 如果SMS-Activate无法访问,可尝试5sim、Darksms或Grizzly SMS等替代平台。
- 部分平台(如TextNow)提供免费号码,但稳定性较差,不建议用于自动化场景。
使用API请求获取一个可用号码
拿到API密钥后,你需要通过HTTP请求向平台申请一个临时手机号,专门用于接收Telegram的验证码。
具体操作说明:
打开你的代码编辑器或API测试工具(如Postman、cURL)。构造一个GET请求,URL格式如下(以SMS-Activate为例):https://sms-activate.org/stubs/handler_api.php?api_key=你的API密钥&action=getNumber&service=tg&country=6。其中,service=tg表示Telegram服务,country=6代表印度尼西亚(常用且便宜)。将请求发送后,你会收到类似ACCESS_NUMBER:1234567890的响应,其中1234567890就是分配给你的手机号。记录这个号码和对应的激活ID(通常在响应中一并返回,如ACTIVATION_ID:123456)。
注意事项/小提示:
- 国家代码(country参数)可以在平台文档中查询,不同国家价格不同。建议优先选择印度尼西亚(6)或俄罗斯(1)。
- 每次请求都会消耗一次“激活次数”,如果号码未使用,部分平台允许取消并退款(通过
setStatusAPI)。 - 如果返回
NO_BALANCE或NO_NUMBERS,说明余额不足或该国家号码暂时缺货。
备用方案:
- 对于5sim平台,请求URL格式为:
https://5sim.net/v1/user/buy/activation/indonesia/any/tg,需要添加Authorization: Bearer 你的API密钥请求头。 - 如果遇到
BAD_KEY错误,请检查API密钥是否复制完整,或重新生成一个新密钥。
将号码发送至Telegram并触发验证码
获取号码后,你需要将手机号提供给Telegram,让其发送验证码短信到该号码。这一步通常在Telegram登录界面或注册页面完成。
具体操作说明:
打开Telegram客户端或调用Telegram的auth.sendCodeAPI。在登录界面输入你获取的临时手机号(注意要包含国家代码,例如印度尼西亚号码+6281234567890)。点击“下一步”或发送请求,Telegram会提示已向该号码发送验证码。此时,等待接码平台收到短信。你可以手动在平台网页上查看状态,或通过API自动轮询。
注意事项/小提示:
- 确保输入的号码格式正确,例如印度尼西亚号码需加+62前缀。如果格式错误,Telegram会提示“无效号码”。
- 部分国家号码可能需要等待10-30秒才能收到短信,不要频繁重复发送验证码请求,否则可能被Telegram临时封禁。
- 如果使用Telegram API(如MTProto),请确保你的api_id和api_hash已正确配置。
备用方案:
- 如果Telegram客户端提示“号码已被注册”,你可以尝试使用该号码登录而非注册,或者等待号码释放后重新获取。
- 对于自动化脚本,建议在发送验证码请求后,等待至少5秒再开始查询短信,避免过早轮询导致API限流。
通过API接收验证码并提取
这是最关键的步骤——你需要通过接码平台的API,自动获取Telegram发送到该号码的验证码短信内容。
具体操作说明:
使用之前返回的激活ID,构造查询短信的请求。以SMS-Activate为例,请求URL为:https://sms-activate.org/stubs/handler_api.php?api_key=你的API密钥&action=getStatus&id=激活ID。发送后,响应可能是STATUS_OK:12345,其中12345就是验证码;或者STATUS_WAIT_CODE表示尚未收到短信。你需要循环调用这个接口(建议每3-5秒查询一次),直到返回真正的验证码。在代码中,可以使用while循环配合time.sleep()实现轮询,超时时间建议设为2分钟。
注意事项/小提示:
- 如果返回
STATUS_CANCEL,说明号码已被取消或过期,需要重新获取号码。 - 不同平台的响应格式可能不同,例如5sim返回的是JSON格式:
{"sms": [{"text": "Your code is 12345"}]}。请查阅对应平台的API文档。 - 验证码通常是5-6位数字,提取后请立即使用,因为Telegram的验证码有效期通常为5分钟。
备用方案:
- 如果轮询多次仍返回等待状态,可以尝试通过平台网页手动查看短信内容,确认是否已收到。
- 部分平台支持回调URL(Webhook),当收到短信时主动推送通知,避免轮询消耗资源。可在平台设置中配置回调地址。
完成验证与账号激活
拿到验证码后,你需要将其提交给Telegram,完成登录或注册流程。这一步验证了整个接码链路的最终效果。
具体操作说明:
在Telegram客户端或API中,输入你收到的验证码。如果使用Telegram的auth.signInAPI,将验证码作为phone_code参数发送。成功后会返回登录凭证(如session或user对象),表示账号已激活。此时,你可以立即释放接码平台上的号码,避免产生额外费用。调用释放API:https://sms-activate.org/stubs/handler_api.php?api_key=你的API密钥&action=setStatus&status=6&id=激活ID(status=6表示完成并释放)。
注意事项/小提示:
- 验证码输入错误超过3次,Telegram会临时锁定该号码,需要等待15分钟后重试。
- 释放号码后,该号码会立即被回收,无法再次查看短信。建议在确认登录成功后再释放。
- 如果登录失败(如密码错误),请检查你的Telegram账号是否开启了两步验证,需要额外输入密码。
备用方案:
- 如果验证码正确但登录失败,可能是账号已被封禁或需要注册新账号。尝试更换IP或使用不同的接码平台国家。
- 对于需要频繁接码的场景,建议使用虚拟手机号池,并做好异常重试逻辑(如验证码过期后重新获取号码)。
常见问题补充
Q:为什么我请求接码API返回“NO_NUMBERS”?
A:表示该国家的号码暂时缺货。请更换国家参数(如从印度尼西亚改为俄罗斯),或稍后再试。也可以尝试在平台网页版手动购买号码,确认是否有库存。
Q:验证码一直收不到,轮询超时了怎么办?
A:首先检查号码是否填写正确(包括国家代码)。其次,确认接码平台余额是否充足,部分平台在余额不足时会停止接收短信。最后,尝试更换号码或使用不同国家的号码,因为某些运营商的短信延迟较高。
Q:接码API返回的验证码格式不对,包含字母或特殊字符?
A:Telegram的验证码通常只有数字,如果收到含字母的短信,可能是平台误将其他服务的短信推送给了你。请取消当前激活并重新获取新号码,同时确保service=tg参数正确。
Q:我可以在同一台服务器上同时使用多个号码吗?
A:可以,但需要注意Telegram对同一IP的注册频率有限制。建议每个IP每小时不超过5次注册尝试,否则可能被临时封禁。使用代理池或轮换IP可以缓解此问题。
Q:使用接码API是否违反Telegram服务条款?
A:Telegram禁止批量注册和自动化滥用行为。本教程仅用于合法用途(如开发测试、个人账号找回)。请勿用于垃圾注册、营销轰炸等违规操作,否则账号可能被永久封禁。
总结:通过接码平台API获取临时号码 → 提交给Telegram触发验证码 → 轮询API提取短信 → 完成登录后释放号码,即可实现Telegram验证码的自动接收。