最近看到有网友爆料,说 Codex 现在开始要求短信验证码二次验证了。
看到这个消息的时候,我第一反应不是验证码本身,而是接码平台估计要越来越难用了。接码本来就不是什么长久方案,一方面很多平台本身就处于灰色地带,另一方面越来越多服务开始识别虚拟号码和共享号码。平时注册个论坛还行,真要绑定重要账号,心里多少还是有点发虚。
既然如此,那干脆搞个自己的号码。
其实我以前是有一张 giffgaff 的。当年折腾海外服务的时候办的,后来用得越来越少,结果某天想起来的时候,号码已经被回收了。现在回头看,当时还是太年轻,总觉得号码放在那里不会跑,结果它真的跑了。
既然以前用过,这次第一反应自然还是 giffgaff。结果一查资料发现,现在和以前完全不一样了。以前申请最大的成本是等邮寄,现在的问题是压根邮寄不了了。网上倒是还有人在卖库存卡,但价格已经被炒到八十多块钱一张。我盯着那个价格看了好几秒,总觉得哪里不太对劲——八十多块钱买张原本免费申请的 SIM 卡,这事多少有点魔幻。
于是继续查资料。
后来发现一个有意思的方案:现在居然可以直接申请 eSIM。更巧的是,招商银行万事达储蓄卡用户可以直接在 APP 里面购买。本来看到这里挺高兴,结果下一秒又想起来,我手机不支持 eSIM。属于那种标准的“问题解决了一半”。
不过问题不大。既然手机不支持,那就让 SIM 卡支持。
于是我买了一张 eUICC 白卡。简单理解的话,可以把它看成一张能够写入 eSIM 配置的空白 SIM 卡。很多原本不支持 eSIM 的设备,通过这种方式也能间接使用 eSIM。

接下来参考了一篇文章,通过修改版 giffgaff 客户端直接获取 eSIM 激活码,然后写入 eUICC 卡中。
参考文章:
Giffgaff eSIM直装版:直接获取eSIM激活码 https://simonmy.com/posts/giffgaff-esim-mod-apk.html
整个过程比我想象得顺利,没多久我就重新拥有了一张英国原生手机号。
本来到这里,这件事应该已经结束了。
结果新的问题很快出现。
我的手机两个卡槽本来就已经满了,而且即使有空位,我其实也不太想把这张卡长期插在手机里。因为验证码这种东西有个特点:平时几年都用不上一次,真要用的时候,偏偏发现卡不在身边。
于是我开始思考另一个方案。
既然服务器是 24 小时在线的,那能不能把号码也变成 24 小时在线?
说干就干。
随后我买了一个 Air780EP 通信模块。简单来说,就是一个能插手机卡的“小基站”,接到家里的NAS之后,可以通过串口收发短信。

本来以为插上设备、装个软件、配置一下就结束了,结果事情并没有那么简单。ModemManager、mmcli、Gammu 之类的方案都试了一圈,兼容性始终不太理想。最后还是回到了最原始的办法——直接通过 AT 指令和模块通信。
虽然过程比预想中折腾一些,但好处也很明显:简单、稳定、可控。
短信收发打通以后,后面的事情就简单了。
毕竟现在都什么年代了,写脚本这种事情当然交给 AI。
我直接把需求丢给 Codex。
第一个脚本负责监听短信。服务器收到短信后,自动通过 Server酱推送到微信。这样以后验证码到了服务器,我人在外面也能第一时间收到通知。
第二个脚本则是专门用来保号。
因为上一次 giffgaff 被回收的经历实在印象深刻,所以这次我不打算再把希望寄托在自己的记忆力上。根据 giffgaff 的保号规则,只要定期产生一次使用行为即可保持号码活跃。于是我又让 Codex 写了一个定时任务,每隔 170 天自动给我自己的手机发一条短信。
这样既完成了一次活跃记录,也相当于给自己发了一条提醒。
至此,整件事情终于闭环了。
最开始,我只是想解决一个验证码的问题。
最后却变成了一套完整的海外号码基础设施:
- 英国原生手机号
- eSIM 转实体卡
- eUICC 白卡方案
- Linux 短信网关
- 微信实时短信推送
- 自动保号机制

回头看,这套东西对于绝大多数人来说确实有点折腾过头了。
但对于经常接触海外服务的人来说,一张稳定、长期、可控,而且不会突然消失的手机号,本身就是一种基础设施。
很多有趣的项目其实都是这样开始的。
最初只是为了解决一个很小的问题。
结果解决着解决着,问题越来越大,系统越来越复杂,最后莫名其妙搭出了一套自己都没想到会去做的东西。
这次,就是从一条验证码短信开始的。