写爬虫或自动化测试时,手机号验证是绕不开的坎。买SIM卡、找转发服务、手动切换号码——这些脏活累活,现在有人想帮你省掉。

Tell A Bot是个提供临时美国手机号的服务。按需申请号码,等短信进来,通过API直接取验证码。700多个平台支持,从WhatsApp到Google都能接。

打开网易新闻 查看精彩图片

他们刚在GitHub发布了Python SDK。安装很简单:

pip install get-sms-online

或者直接从仓库装:

pip install git+https://github.com/getsms-online/get.sms.online-python.git

先去后台Account → Profile生成API key。然后就可以写了:

from getsms import GetSMSClient, GetSMSError client = GetSMSClient(user="your_username", api_key="your_api_key") # 先看余额 print(f"Balance: ${client.balance()}") # 申请WhatsApp号码,等短信 requests = client.request_number("WhatsApp") req = requests[0] print(f"Your number: +{req['mdn']}") sms = client.wait_for_sms(req["id"], timeout=900) if sms: print(f"SMS: {sms['reply']}") print(f"Code: {sms['pin']}") else: print("No SMS received in time")

wait_for_sms每15秒轮询一次,这是官方建议的最低频率。短信到了返回消息体和提取的PIN码,超时返回None。

错误处理要单独抓GetSMSError,这是API层面的问题:服务名不对、没号了、余额不足之类。网络异常走普通Exception。

拿到的号码不满意可以拒掉:

requests = client.request_number("Telegram") req = requests[0] if req["mdn"].startswith("1212"): client.reject(req["id"]) # 比如NYC号段被平台封了

量大的话别轮询了,去后台配个webhook URL。短信一到,Tell A Bot立刻POST过来,带event、id、reply、pin、price这些字段。

想看支持哪些平台、各多少钱,调list_services()就行。返回每个服务的名称和价格,按需申请。

典型的用法场景:自动化注册测试、脚本里收验证码、开发期批量开账号。不用实体卡,用完即弃。

SDK把HTTP封装成了Pythonic的接口,三五行代码就能跑起来。对于做海外业务验证、或者不想暴露真实手机号的场景,算是个实用工具。