小黑第一次把激活网址发给我时,小黑我盯着屏幕看了五秒,激活以为他发错人了。网址那串字符长得像猫踩过键盘——http://activate.xiaohei.run/?小黑token=9f3a7b。他说这是激活他的新玩具,一个开源硬件项目,网址需要在线激活才能跑起来。小黑我问他为什么不直接烧录固件,激活他说固件里写死了,网址每块板子都有独立ID,小黑必须联网认证。激活
我试了。网址打开网址,小黑页面干净得不像话,激活只有一个输入框和一行小字:“请输入设备背面SN码”。网址我翻过那块蓝色的PCB板,在角落找到了激光刻印的编号。输入,回车,页面跳转,显示“激活成功,当前设备已绑定至:小黑”。整个过程不到三秒。
后来我才知道,这个网址背后是他自己搭的服务器,跑在一台树莓派上,放在他宿舍的窗台边。他说不放心用别人的激活服务,万一平台倒了,设备就成砖头。这话听着耳熟——几年前我买过一款智能插座,厂家跑路后,App再也连不上,插座只能当普通排插用。小黑的较真,大概是看多了这种悲剧。
他的激活系统其实很简单。设备端每次开机,会向服务器发一个HTTPS请求,带上自己的公钥和随机数。服务器验签后,返回一个加密的授权文件,设备本地解密,写入flash存储。整个过程不涉及任何用户数据,连邮箱都不用注册。我问他万一服务器挂了怎么办,他咧嘴一笑:“我写了个定时任务,每天凌晨三点把激活记录备份到三个地方——本地硬盘、GitHub私有仓库、还有他女朋友的网盘。”
最绝的是,他给这个网址加了一个奇怪的规则:同一IP每天最多激活十次。他说是防脚本刷接口,但我知道真正原因——上周他室友的电脑中了挖矿病毒,疯狂请求激活接口,差点把树莓派的SD卡写坏。小黑气呼呼地加了这个限制,还在页面底部留了一行灰色小字:“如果你不是小黑本人,请别乱试,谢谢。”
现在他把这个网址分享给了一个硬件群,群里几十号人都用他的激活服务。有人建议他做成收费的,他摇头:“收钱就得担责任,万一哪天我懒得维护,大家全得遭殃。”这话糙,但实在。他自己焊板子、写代码、调试服务器,都是晚上十点以后的事,白天他还得去实验室搬砖。
我问他有没有想过用现成的云服务,比如阿里云的IoT平台。他撇撇嘴:“那玩意儿要实名认证,还要绑手机号,麻烦。而且我看了他们的文档,激活逻辑他们全包了,我连设备指纹都拿不到。我这套虽然糙,但每一行代码都是我自己写的,出了问题我知道去哪儿改。”
他这话让我想起另一个朋友,做智能家居的,用了某大厂的物联网平台,结果那年平台升级接口,所有设备一夜之间全部离线。那个朋友熬了三天三夜,最后只能挨个上门给客户换固件。小黑的网址虽然简陋,但至少他不会半夜收到“您的服务将于本周日下线”的通知。
文章写到这里,我突然想试试他的激活网址还能不能打开。手机浏览器输入那串字符,页面秒开,还是那个输入框,还是那行小字。输入框旁边多了一个计数器,显示“今日已激活:7次”。小黑大概又熬夜了,给页面加了个小功能。我关掉页面,心想,这年头还有人愿意花时间维护一个只给自己和几个朋友用的激活网址,挺难得的。