最近这阵子,我被我那小侄子给缠上了。他非要玩那个新出的国外的网络游戏,嚷嚷着非玩不可。我一开始寻思,不就是个安装包吗?结果真去官网一看,我就知道麻烦大了。
第一次交手:被官方安装器气得够呛
你别说,现在的游戏公司搞下载,都喜欢用自己的那个所谓的“下载器”或者“启动器”。我按照规矩操作,
点开官网的下载按钮,它立刻蹦出来一个二十几MB的小程序。我双击运行,这小东西就开始慢悠悠地“准备环境”。
我折腾了半个小时,它终于进入了核心的下载环节。好家伙,速度直接给我卡到了两位数KB/s。我家宽带跑个高清电影那叫一个丝滑,结果对着这个游戏安装包,跟拨号上网一样。我试着暂停,重新开始,甚至换了个下载路径,都没用。它就是愣住在那,一动不动。
我当时就火了,这不就是典型的下载软件里套娃,故意限制速度,让你觉得慢吗?我决定绕过这个废物下载器,直接找到游戏的本体安装包。
黑魔法启动:扒开官网的外衣
要找到那个被藏起来的安装包地址,得知道官方下载器到底在跟服务器说些什么。这玩意儿就像在后台偷偷摸摸地打电话,我得在它打电话的时候,把它的对话给录下来。
我立马祭出了我的“听诊器”(抓包工具)。
- 第一步:监听对话。我重新运行了那个官方下载器,同时让抓包工具开始记录所有进出网络的流量。
- 第二步:找到关键线索。下载器开始工作的一瞬间,流量猛地增大,我在日志里筛选那些看起来像文件下载的地址。果然,在几十个乱七八糟的API请求里,我找到一个地址,它请求的文件后缀是`.zip`或者`.exe`,而且文件体积是几个G级别。
我心里一阵激动,这八成就是本体包了。我把这个地址复制出来,直接丢到浏览器里想试试能不能下。结果,弹出了一个“权限不足”或者“403 Forbidden”。
当时我就明白,这官网的服务器没那么傻,它知道这个请求不是从那个官方下载器里发出来的。
伪装身份:骗过服务器
既然它认身份,那我就伪装!
任何一个正常的下载请求,都会带着一堆“头信息”(Headers),这些信息告诉服务器你是谁,你从哪里来的。官方下载器在请求下载链接的时候,肯定偷偷塞了一些特殊暗号,比如一个临时的Session ID或者一个特定的User-Agent。
我回到抓包工具的日志里,仔细比对了官方下载器请求下载链接时带的所有头信息。我发现了一个非常特殊的字段,一个很长的加密字符串,一看就是这回下载的专属通行证。
我把这些关键的头信息全部复制出来,然后找了一个可以自定义请求头的下载工具(不是那些知名的主流下载软件,它们通常不让用户动这些东西)。
- 第三步:构建假身份。我在下载工具里,新建了一个下载任务,地址就是我刚才抓到的那个本体包的地址。
- 第四步:塞入暗号。我把官方下载器里带的那个特定的通行证、User-Agent等头信息,原封不动地塞进了我的自定义下载请求里。
我点击“开始下载”!这回服务器果然上当了!
速度一下就冲上去了,直接跑满了我家的带宽!几十个G的安装包,几十分钟就下完了,这比那个官方下载器慢吞吞地挤牙膏强了不知道多少倍。这感觉,就像你绕过了一个脾气暴躁的前台,直接找到了能做主的老板一样舒畅。
的实现:手动安装,完美收官
文件到手后,剩下的就简单了。我解压,运行安装程序,因为已经是完整的本体包,根本不需要再经过那个废物下载器二次校验。五分钟不到,游戏就妥妥地躺在硬盘里了。
我把这个方法传授给几个被官方下载器坑惨的网友,他们都直呼这才是真正的“黑魔法”。哪有什么黑魔法,不过就是看清楚了那套流程,知道怎么在不该动的地方动了手脚。
这件事也给我提了个醒:任何一个“官方”工具,只要它在网络上传输数据,就一定有暴露自己秘密的时候。我们只需要蹲点守候,就能把藏在深处的东西给挖出来。
等我把游戏安装小侄子看我操作那么麻利,非要问我怎么做到的,我说这是你大伯的独家秘笈,一般人学不来。他要是知道,我只是绕过了他那些游戏公司设的几道小门槛,估计会觉得我太能瞎折腾了。