就是看不得身边人受苦。今天分享的这个事儿,就是从我一个哥们身上开始的。
事情是怎么发生的:为什么非得“夺走”
我的老弟,我们就叫他小胖。他最近迷上了一个武侠手游,就是那个叫“杨过”的游戏,里面有个他日思夜想的限量版女侠,他叫人家“女友杨过”。这游戏设计得太恶心了,所有稀有道具都在早晨十点、下午两点这种上班时间段的限时活动里。小胖根本没法准时去“肝”,一天到晚跟我抱怨,说自己要被这游戏给搞抑郁了。
他玩得难受,我听得也烦。我跟他说,要不你退游,你这工作时间根本玩不下去。他死活不肯,说不拿到那个“女友杨过”角色他死不瞑目。我看他那样子,就寻思着,既然这游戏这么折磨人,那我就帮他一把,把这折磨人的部分给“夺走”算了。
我的目标很简单:把所有需要机械重复、准时准点的每日任务,全部自动化。让小胖只玩他想玩的PVP,至于签到、限时副本这些,我来搞定。
动手实操:从零开始到成功执行
动手之前,我得先搞清楚这游戏到底是怎么跟他手机通讯的。我找了个旧的安卓模拟器,在上面运行游戏,然后架了一个“抓包工具”。
小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区
- 第一步:抓包和拆解协议。我发现,每次小胖点“签到”或者“进入副本”时,手机就会给游戏服务器发一串数据包。这些数据包里有他的用户身份信息,还有他要执行的动作代码。我把这些数据包一个一个记下来,发现很多操作都是通过一个简单的HTTP POST请求完成的。
- 第二步:获取身份凭证。最关键的是怎么模拟他登录。我观察到,登录成功后,服务器会返回一个叫“Session Token”或者“密钥”的东西。只要我拿着这个密钥,服务器就认为我就是小胖本人。我直接在登录流程里把这个密钥偷偷截了下来。
- 第三步:编写脚本并模拟操作。我用了一个非常简单的小脚本语言(就是我家那台旧电脑上就能跑的那种),把抓到的数据包结构按照流程写进去。
最难搞的就是那个限时十点副本。这玩意儿要求必须在十点整的零秒内点击进入,慢一点就挤不进去。我的处理方式是,写了一个定时执行的任务,让它提前两秒开始循环发送进入副本的请求。一到十点,脚本就像机关枪一样把请求打出去,确保能在游戏服务器开门的第一时间冲进去,拿走奖励。这整个过程,我像个黑客一样,偷偷地在游戏世界里取代了小胖,夺走了他的“肝”。
实现结果与的教训
脚本第一次运行成功那天,小胖激动得差点请我吃饭。他早上起来,打开游戏,发现所有任务都完成了,限时副本的奖励躺在背包里,他终于靠着我这套“外挂系统”,集齐了资源,换到了那个心心念念的“女友杨过”角色卡。
他高兴了,但是新的问题来了。我成功地夺走了他的“肝”,却把一个更大的麻烦留给了我自己。
游戏每隔一段时间就会更新,有时候服务器改了一点点协议,我的脚本就会立马失效。小胖发现任务没做,就会立马打电话过来:“哥,出问题了,你快看看!” 我本来只是想帮他一次,结果现在我成了这个游戏在他那里的专职维护人员,比他自己玩游戏还累。我干脆把这个脚本运行在一个我放在路由器旁边的一个小盒子电脑上,随时能远程维护。
这就是我这回实践的最终记录。虽然我成功地实现了目标,但是我也明白了,任何一个自动化实践,一旦投入使用,你就得为它的后续维护买单。有时候,最简单的解决方式,就是让他戒掉。可人嘛总得折腾一下。我现在成了他这个“杨过游戏”的幕后黑手,我才是真的被套牢了。他玩得开心,我却在为它的稳定运行而操心。真是一场“女友杨过”引发的血案。不说了,好像脚本又报错了。

