羊了个羊 | "辅助" 浅谈

2,644 阅读7分钟

“我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第1篇文章,点击查看活动详情

最近这个 "割韭菜" 的小游戏突然爆火,各种占热手,收割的不是钱财,是玩家 宝贵的注意力(时间)

把你的阳寿,转换为他们的广告收入,那种还转发到各种群聊的童鞋,真·被人卖了还帮人数钱~

随手点开别人分享的小程序,简单体验了一下 (就玩了第一关),这TM不就是 升级版的消消乐 吗?网上有很多人提到抄袭的手游 《3 Tiles》,2333,不能说十分相似,只能说一模一样了~

游戏质量和可玩性不咋滴,营销 手段倒是一套套,贴个群里别人发的复盘图 (出处不详,欢迎补充):

各种公号文章、视频刷屏,其中有一个说到某宝代练/辅助引起我的兴趣,TM该不会真有人买吧?搜一下:

2333,还真有啊,只能说有钱真好,其实网上的 辅助早已泛滥,比如我的历史好友排行榜:

兜了一圈,发现所谓的 速通 本质原理都是 模拟请求,游戏在只有在通关时才会请求接口,中途没有其他请求。所以只需 抓包 找到对应接口,然后拼接参数就OK了。

简单提提各端的抓包工具,就不演示基本的抓包操作了:

  • PC:Fidder、Charles等;
  • iPhone (基本要钱):Stream、Http Cather、Storm sniffer、Quanx、Surge等;
  • Android:Packet Capture、tcpdump等;

我也懒得玩第二关,然后自己抓了,通关接口网上都发烂了:

# 加入羊群
finish_sheep_api = "https://xxx/sheep/v1/game/game_over"

# 话题通关
finish_topic_api = "https://xxx/sheep/v1/game/topic_game_over"

都是Get请求,参数有这些:

  • rank_score → 随便填,比如1
  • rank_state → 随便填,比如1
  • rank_time → 通关时间,随便写,比如500,单位不知道是秒还是毫秒;
  • rank_role → 填1
  • skin → 填1
  • t → 你的用户token

最核心的就是这个Token的获取,抓包对于普通用户学习成本有点高,看到有一个EA4写的,直接输入 UID 自动获取Token,然后直接加入羊群。安装后一打开,张口就是:定位、读取相册、联系人的权限,你想干嘛???

抓包发现,其实就是调用了两个接口 (截止发文,接口好像已经发生变动~):

https://xxx/sheep/v1/game/user_info?uid=用户id
https://xxx/sheep/v1/user/login_oppo?uid=用户id&nick_name=xxx&avatar=xxx&sex=1

所以就是拿到Token,然后拼接参数模拟请求就好了,直接用requests试试水:

import requests

# 加入羊群
finish_sheep_api = "https://xxx/sheep/v1/game/game_over"
# 话题通关
finish_topic_api = "https://xxx/sheep/v1/game/topic_game_over"

headers = {
    'Host': 'xxx',
    'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Mi MIX 2S Build/QQ3A.200805.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4313 MMWEBSDK/20220805 Mobile Safari/537.36 MMWEBID/8067 MicroMessenger/8.0.27.2220(0x28001B59) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android',
    't': 'xxx'
}

def auto_run():
    finish_sheep_resp = requests.get(finish_sheep_api, headers=headers, params=params)
    if finish_sheep_resp:
        print("请求:%s" % finish_sheep_resp.url)
        print(finish_sheep_resp.text)
    finish_topic_resp = requests.get(finish_sheep_api, headers=headers, params=params)
    if finish_topic_resp:
        print("请求:%s" % finish_topic_resp.url)
        print(finish_topic_resp.text)

if __name__ == '__main__':
    auto_run()

运行结果:

可以,加循环试了一下,发现:接口并没有做防刷,甚至连代理ip也不需要,那就刷得更狠一点了。

requests不支持并发,直接换成aiohttp,意思意思刷个10w次吧,改动下代码:

import asyncio
import aiohttp


finish_sheep_api = "https://xxx/sheep/v1/game/game_over"
finish_topic_api = "https://xxx/sheep/v1/game/topic_game_over"

headers = {
    'Host': 'xxx',
    'User-Agent': 'xxx',
    't': 'xxx'
}

params = {
    'rank_score': '1',
    'rank_state': '1',
    'rank_time': '500',
    'rank_role': '1',
    'skin': '1',
}
tasks = []


async def speed_run(count, sem):
    async with sem:
        async with aiohttp.ClientSession() as session:
            try:
                async with session.get(finish_sheep_api, headers=headers, params=params):
                    print("加入羊群%d次" % count)
                async with session.get(finish_topic_api, headers=headers, params=params):
                    print("完成话题%d次" % count)
            except Exception as e:
                print(e)


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    semaphore = asyncio.Semaphore(500)  # 控制并发量为500
    for i in range(1, 100000):
        tasks.append(asyncio.ensure_future(speed_run(i, semaphore)))
    result = loop.run_until_complete(asyncio.gather(*tasks))

运行效果如下

Tips:为什么要控制并发量为500?asyncio内部用到了select,而select就是系统打开文件数是有限度的,操作系统的限制,linux打开文件的最大数默认是1024,windows默认是509,超过了这个值,程序就开始报错:ValueError: too many file descriptors in select。

非常简单,当然你甚至不需要写代码,直接用Apifox、Postman直接模拟请求也可,原理都一样,就是换个工具而已~

除此之外,还有一种辅助是利用 代理软件 中间人拦截原理,对返回数据进行篡改,比如:

  • 拦截好友历史排行版,直接改自己的分数;
  • 无限道具;
  • 重复进入第一关;
  • 全皮肤等;

还有一种是 PC微信修改文件 的玩法,如:打开 微信目录/Applet/c970a9结尾/usr/gamecaches/resources,修改大小为2kb的json文件,替换为下述内容:

[1,0,0,[["cc.JsonAsset",["_name","json"],1]],[[0,0,1,3]],[[0,"levelConfigData",{"dailyLevel":[[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001],[80001,80001]],"topicLevel":[[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017],[10017,10017]]}]],0,0,[],[],[]]

保存后再次打开羊了个羊,会重复四次第一关,线索来源:angzhi-1/yanglegeyang

以上就是这款游戏辅助的几种思路,对于这种行为,官方都懒得管,毕竟是快消品,大家一起刷,反而还能再维持下热度,23333。

听哥一句劝,珍爱生命,远离XX游戏~