在iOS下为他人App开发自动化操作插件,实现挂机操作(1)
2015-11-04 本文已影响2631人
野火wildfire
手机上经常会有一些需要我们重复操作的事情,做这些事情为的仅仅是一些利益结果,而并不关心过程,例如游戏打怪升级的固定关口,微信抢红包,或者一些别的什么商品的抢购流程。这时候如果能够有自动化插件就是最美妙的了。
一般我们可以采用2种方法模拟这些重复操作:
- 一种是模拟网络请求,因为本质上这些行为最终都会以某一种数据格式和顺序通过网络发送到服务端。例如微信抢红包,在过去的版本就是一个https的网络请求,请求中携带个人信息的token,所以如果我们知道个人的token并知道网络加密方法,我们就很容易完成批量操作;
- 另一种就是直接造一个机器人,真实的按照设计者希望我们完成的操作步骤一步步的完成。还是举抢红包的例子,我们打开某一个常发红包的群,监听聊天信息tableview的datasource变化,如果变了,自动想该cell send点击event,跳转红包页面,然后在模拟点击抢红包操作,完成一次操作。
以上两种方法各有优劣:
- 第一种直接方便,又快又准,但却需要
破解加密信息
,抓对方的漏洞,属于黑客行为,整个行为过程面对的是对方的安全工程师,而且有隐含法律问题; - 第二种其实就是模拟操作,我们做的基本只是和机器做斗争,具备不可防御性,处于灰色行为,一般自己使用不会存在什么法律问题,而且不需要研究对方的网络传输加密信息。但难点是需要
研究对方产品(app)的具体实现细节
,尤其是UI细节,重用性差,在对方app改版后易失效(因app升级UI一般多会有改动)。
一般模拟不太复杂的行为,例如抢购商品,抢红包,可以在以上方案中选择好实现的那个来做。如果是复杂操作,例如抢票下单(中间可能存在5-10个步骤),游戏打怪(这个可能更多,超多副本切换),我们就需要综合两种方案共同完成。