一堂“技术冷暴力”的公开课:美团如何远程射杀饿了么、大众点评及淘点点等外卖APP
2015-06-19 09:26

一堂“技术冷暴力”的公开课:美团如何远程射杀饿了么、大众点评及淘点点等外卖APP

外卖O2O战火一直未停息,去年是美团外卖与饿了么线下地推人员的掐架。上周,又爆出美团与大众点评地推间的斗殴。商业战争斗智斗勇,上升体肤格斗远未止步,我们看不见的是背后还有“技术冷暴力”。就以外卖O2O为例,美团外卖给大家上了一堂公开课。


极客头条报道,昨日(6月18日)下午,一位程序员小伙在知乎上发了一则帖子技术揭幕贴,题目《如何评价美团外卖强杀竞争对手的 App 进程?》


该程序员在反编译完美团外卖商家Android版后,发现其中有一个杀死后台运行进程的权限,通过Android开发者官方文档,他随之找到了killBackgroundProcesses(String packageName)的调用处,发现美团的Android程序员直接用Hardcode写死了四款App的包名——饿了么商家版、点评商家版、淘点点商家版、百度外卖商家版。


这位举报者指出,美团调用killBackgroundProcesses(String packageName)方法的类名是FriendUtil,最后他表示美团大胆地用Hardcode封杀的行为,实在有点过了。


反编译美团APP的大致过程


知乎上的那位程序员小伙如此反编译的。


1. 一开始是这样的,在反编译完美团外卖商家Android版后,我发现其中有一个杀死后台运行进程的权限:


0.jpg

Android开发者官方文档描述如下:


Have the system immediately kill all background processes associated with the given package. This is the same as the kernel killing those processes to reclaim memory; the system will take care of restarting these processes in the future as needed.You must hold the permission KILL_BACKGROUND_PROCESSES to be able to call this method.


2. 看到这个权限后,第一感觉应该是美团为了保证自己App可以流畅运行而杀死后台长时间不运行的App,凭借着职业的敏感继续跟进,终于找到killBackgroundProcesses(String packageName)的调用处:


1.png

3. 从调用处看,美团并未使用很高深的技术来判断后台运行进程来选择杀死长期不运行的App,而是直接用Hardcode写死了四款App的包名,细心读了读包名,结果让我震惊。


2.jpg

这些熟悉的名字,每个都是美团的竞对。原来美团并不是为了让自己App运行更流畅而杀死别的App,而是直接封杀竞对的App。


4. 从上图看,调用killBackgroundProcesses(String packageName)方法的类名是FriendUtil,也就是美团字面上称竞对是朋友,然后背后捅一刀子。


美团的回应


美团公司副总裁王慧文(外卖事业部负责人)在当晚9点多给出了详细的调查结果:


这段代码是在 2014 年7 月 10 日提交的,当时我们在做蓝牙打印机的 MVP (可以理解为实验)版本,我们的一个工程师发在部分Android系统上 APP 在连接蓝牙打印机的时候,如果打印机已经被其他 APP 占用端口,则需要重启打印机;由于各同行商家端 APP 后台自动唤醒程序,用这种方法能减少商家操作,也不会给同行业务带来实质上的损害。


随后,王慧文表示美团将发布“全量发版更新掉了这段代码”,并做了道歉。另外代码的编写者(已离开美团,前员工也能很快找到并回应,看人家这执行力)也给出了自己的说明,并道歉。


知乎上很多讨论来自“杀与被杀”当事双方,都有些意气用事,多数都没什么价值。但其中董涵的回答中,建议这种情况下,可以“使用断开后重连的方式来强制再次连接……毕竟你们使用的蓝牙打印机应该是不同的,可以判断出是否是自己应用连接上。实在不行,可以先disable后再enable。”


十三郎还给出了代码:


BluetoothAdapter.getDefaultAdapter().enable(); BluetoothAdapter.getDefaultAdapter().disable();


对此,代码编写者回复:


  • 商家那块一般只会放一台蓝牙打印机,所以当一个app连接上的时候,另外一个app必然不能连接

  • 关于断开蓝牙重连的思路,这个早就尝试过,但是没有效果,原因据我猜测,同行的app监听的蓝牙广播,并且后台自启动,所以即使我们应用在前台,只要他们应用在后台运行着,蓝牙端口也会被抢先占用,所以才考虑kill后台进程的方案


饿了么的产品经理sacho则从产品角度提出了一种解决方案:


针对你说的蓝牙端口被其他 app 占用无法连接的问题,饿了么的产品经理会给出如下解决方案:弹窗提醒用户问题所在,请用户选择是否强行关闭其他 app。


互联网企业商业竞争的技术“核战”


尽管美团方面表示并无恶意,但不论是有意还是无意,偶然性的针对同行对手,背后折射的是商竞争中的技术冷暴力,这也给互联网技术型创业公司上了一堂公开课。


此事件并不像一般的网站攻击,伤显于明处,暗中使技,“故善攻者,敌不知其所守;善守者,敌不知其所攻”,也是一堂具有生动意义的商业竞争案例。虎嗅再与你联想下5年前3Q大战,虽然用户在商业竞争中,要进行被迫选择,但至少还有知情权。而此次美团的做法,无异于动用了低门槛的技术“核武器”。


在二战结束后的《日内瓦公约》中明确规定,战争禁止使用核武器和生化武器,也是人道主义的体现。商场如战场,特别是在“互联网+”带来的创业大潮中,商业竞争局势愈加严峻,是不是也需要达成类似的行业竞争契约?


信息时代的商业竞争,早已不是过去商业案例课题上#从竞争对手的垃圾桶里寻找商业机密#的年代,弱势创业群体也不可能用“普世道德”博得同情。


创业者们,Are you ready?

如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在虎嗅APP
赞赏
关闭赞赏 开启赞赏

支持一下   修改

确定