你正在开发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.81.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无法访问,可尝试5simDarksmsGrizzly SMS等替代平台。
  • 部分平台(如TextNow)提供免费号码,但稳定性较差,不建议用于自动化场景。

使用API请求获取一个可用号码

拿到API密钥后,你需要通过HTTP请求向平台申请一个临时手机号,专门用于接收Telegram的验证码。

具体操作说明:

打开你的代码编辑器或API测试工具(如PostmancURL)。构造一个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_BALANCENO_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_idapi_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参数发送。成功后会返回登录凭证(如sessionuser对象),表示账号已激活。此时,你可以立即释放接码平台上的号码,避免产生额外费用。调用释放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验证码的自动接收。