对于有多张手机卡的用户来说,接收验证码是一件令人头疼的事,本人更是如此,我到现在还用着单卡的手机,但我有三张卡需要接收验证码,另外两张卡在另外一台手机上,但我又不想时时刻刻带着两台手机,因而找到了SMSForwarder这个软件,短信转发软件。通过这个软件将短信转发到 telegram 当中,就可以在一个 telegram 账号中,接收多个手机卡的短信了。

创建 telegram 机器人

在 telegram 中,找到botfather,输入/newbot创建新的机器人,先给机器人命名,再输入机器人的 id,这个 id 必须以_bot结尾且唯一。最后就能得到机器人的 token,请妥善保存,不要泄露。
在 telegram 中,找到userinfobot,输入/start之后机器人会给我们返回我们账户的 id,请妥善保存。

安装 smsforwarder

在这个链接下载适合于自己设备的版本并安装(该软件只支持安卓手机)。
四个导航栏从右到左配置

  1. 通用设置:打开转发短信广播(授予权限,并在短信设置中关闭验证码保护);保活措施建议开启前三项;其余可自定义。
  2. 发送通道:选择 telegram;输入机器人的 token;chatid 输入自己的账户 id;其他自定义,点击测试,没问题的话即可进行下一步。如果此时存在网络问题,有两种解决方案,一种是手机开启代理,这种比较费电,另外一种是给 telegram 的 api 加一个反向代理,操作步骤在下一部分。
  3. 转发规则:本人没有细致的要求,直接将两张卡的短信全部转发。
  4. 转发日志:在这里就能看到转发的具体情况了。

telegram 反向代理设置

在一台能访问 telegram 的公网服务器上,安装nginx proxy manager,具体安装教程在这篇文章。转发地址为:https://api.telegram.org:443,在 advanced config 中加入以下内容:

location ~* ^/bot {
proxy_buffering off;
proxy_pass https://api.telegram.org$request_uri;
proxy_http_version 1.1;
}

配置完成之后,发送信道的 api 中填入https://<your-domain>/bot<token>/sendMessage,并测试是否联通即可,其中<your-domain>填入反向代理的域名,<token>填入机器人的 token。