那个时候,我刚从上家公司被裁出来,挺窝火的。老东家搞绩效优化,我这种年纪大的就被优化掉了。失业在家没事干,房贷还得还,就琢磨着找点小项目练手,至少能挣口饭吃,赶紧把存款窟窿补上。老婆天天在家问我,下个月水电费怎么办,压力山大。
碰巧一个老伙计找到我,说他那个刚起步的小游戏《生命竞赛》,内容不错,但在推广渠道上栽了跟头。他说,玩家投诉炸了锅,明明是从我们官网下载的,安装完桌面就多了七八个弹窗和快捷方式。他就让我来搞个彻底的“绿色下载”方案,把这块硬骨头啃下来。
我接下了这个烫手的山芋。
我的第一反应是省钱,毕竟自己是失业状态。刚开始,我直接就拿了一套最便宜的国内云服务器,域名备案跑了一周多,光等那个批文就耗光了我所有耐心。架子搭起来倒是快,用的是我最熟练的LAMP架构,简单粗暴,几百块钱一个月,想着能应付一阵子。
绿色下载?这根本就是个笑话!
我把新的、确认无毒的安装包传上去,让几个老玩家测试。结果三天后反馈又来了:装完了,还是有弹窗。我当时脑子嗡的一下,我反复检查服务器,后台日志都翻烂了,确定包的MD5值没错,怎么到用户手里就变味了?
我当时以为是服务器被入侵了,吓得我赶紧找了几个安全专家帮忙看。人家一看就乐了,告诉我,服务器没问题,问题出在用户下载的“路上”。那帮搞灰色流量的,比我们勤快多了。
国内的运营商、二三线的CDN服务商,甚至一些路由节点,都会对流行的游戏安装包进行深度检测和替换。他们瞅准你下载大文件的时机,在传输层直接给你插代码,把他们的推广软件捆绑进去。用户下载得越快,被污染得越厉害。
面对这个情况,技术方案必须得是“以毒攻毒”。
- 第一招:跑路! 我立马跟老伙计申请预算,废弃了所有的国内免费和低价CDN,把下载节点全迁到了国外,找了对下载内容完全不干预的专线服务商。虽然带宽成本翻了三倍,但是流量是干净的。
- 第二招:加密校验,一个字节都不能动! 我花了三天时间,自己写了个小工具。下载的时候,我把《生命竞赛》的安装包拆成了几百个小块,每块都用我们自己的私钥签名。用户端下载完,必须跑一遍严格的本地校验。只要有一个小块的签名对不上,或者MD5变了,程序直接拒绝安装,并弹窗提示用户“下载链路可能存在劫持,请重新下载”。
- 第三招:物理隔离。 我把官方网站和下载服务器彻底分开。网站只提供信息展示和下载链接,链接指向一个专门做大文件分发的高速服务器,所有请求只走高强度加密的HTTPS协议,防止中间人注入。
这套方案实施下来,我的感觉就是累。我在跟一整条灰色的产业链对抗。我发现,技术难度不大,恶心程度拉满。你得时刻警惕着,今天这个地区没事,明天那个省份又搞起了流量劫持。为了保证“绿色”,我每个月都要随机下载测试几十次。
不过效果还是有的。现在这个《生命竞赛》官网的下载,我们敢拍着胸脯说,只要用户是在我们官网点击的,下载到手的文件绝对是原版。投诉率降到了冰点,老伙计也终于能安心推广了。
这个项目让我明白一个道理,搞开发,你不仅要懂代码,还得懂人性,懂江湖险恶。当初那个老东家把我裁掉,说我跟不上新技术,但我现在靠着这种“脏活累活”活了下来。钱虽然不多,但好歹稳定,而且我发现,这种解决实际痛点,让用户骂声减少的工作,比做那些PPT里的高大上项目有成就感多了。