程序员给“冲顶大会”做了个外挂,轻松瓜分100万奖金!
2018-01-25 15:30
363 查看
2018 年 1 月 3 日,王思聪被迫动用自己的微博,为一个诞生不到 10 天的 APP 打了广告,“每天我都发奖金,今晚 9 点就发 10 万”。
对他而言,这天的微博并非生日宴会,而是战场。王思聪的一则微博开启了“全民竞答”类 APP 的爆红之路。
一时间,直播巨头们都跟上“王校长”的节奏,“冲顶大会”之外,映客旗下的“芝士超人”、今日头条旗下的“百万英雄”和花椒直播旗下的“百万作战”纷纷亮相,每天狂撒百万现金。
“冲顶大会”、“芝士超人”、“百万英雄”等知识竞答游戏火了,奖金数额也从最初的人民币 5 万、10 万涨到了 100 万、甚至更高......
冲顶大会是直播答题游戏,每天指定时间开放,12 道题,每题 3 个选项,10 秒作答,所有通关者分享奖金(每场奖金五万元或十万元),邀请好友可以获得复活资格,这类模式的鼻祖是美国去年 8 月上线的 HQ Trivia。
为了能够全部答对 12 道题,平分数额如此庞大的奖金池,参赛者开始想方设法提高自己答题的正确率。
我们看看有哪些可以 Hack 的方法?
题目出现再去搜索肯定是来不及的(除非你单身 40 年的手速),广大人民的作弊策略也是层出不穷。
最简单的是一群人一起玩,可以利用网络延迟有多几秒的读题时间,遇到不会的每个人分开选,这样你只需要 3^12=531441 台手机即可通关。
正如节目主持人介绍的一样,许多答题者开始寻找身边的朋友共同答题,以求覆盖到更多类型的知识点,提高通关的几率。
于是,各种各样的微信、QQ 答题群诞生,每个人都在群聊里分享自己认为正确的答案。
还可以使用两台设备,一个手机等主播读题,另一个利用百度的语音搜索也能查出答案,但是感觉这种速度要比较慢。
道高一尺,魔高一丈,让你猜不到的是,答题游戏居然也有外挂了!已经有程序员设计了“辅助程序”,用于快速检索答案。
这个用 Python 程序可以修剪并识别图片中的文字内容(问题和选项),然后通过百度进行搜索关键字出现的次数,最后将统计的信息展示出来。
这样一来,答题者就可以根据统计数据来选择相应的答案,极大提高了答题的正确率。
那么程序员到底应该如何玩呢?
用 Python 玩转《冲顶大会》
首先用 WDA 来获取屏幕截图,WDA 本是 Facebook 开发的一套 iOS 测试框架,前几天看见大家都用来做微信“跳一跳”的外挂,便特意去了解了一下,发现也能用在冲顶大会上。
之后 crop 出题目所在的位置(可能需要适配手机屏幕),然后调用开放的 OCR 接口读取出文字文本。
最后调用搜索引擎,就可以达到之前 gif 图的效果。这套环境是 iOS + Mac,如果是安卓应该有更方便的方法。
最初的想法是希望搜索+选择答案全部自动化完成的,思路是 OCR 题目和候选答案,组成三个组合扔到百度或谷歌里搜索,然后哪个组合的结果出现次数最多就选择哪个。
试了几个问题后发现并不是这样,比如上面图片的“骆驼的驼峰是存储什么的?”,可能多数人都会认为是水,因此出现的次数最多,其实是错误答案。
最后还有两个痛点:
免费 OCR 接口调用次数有限,所以不能一直去截屏识别,只能等题目出现时运行程序。
官方也很套路,有的问题是没法搜索的。比如下图中这种:
最后附上代码:
用 Java 来玩百万英雄
《百万英雄》是一档全民知识互动游戏,在《百万英雄》里每场 12 道题目全部回答正确的人,将瓜分奖金。
Github 地址:https://github.com/lingfengsan/MillionHero
gitee 仓库地址:https://gitee.com/lingfengsan/MillionHero
一共 12 道题,全部答对就可以平分奖金。
如果可以把直播中的问题和答案提取出来,然后百度,然后统计一下哪个更相关,就可以辅助你答题了。
当然也可以直接把百度出来的题目和答案都展示出来。算法还在优化,以代码中为准。
Java8
Android 手机
adb 驱动
idea
将手机点击到直播界面(在这里我们先打开一张图片)。
用 adb 工具获取当前手机截图,并用 adb 将截图 pull 上来。
adb shell screencap -p /sdcard/1.png adb pull /sdcard/1.png .
用 tessOCR 进行图像识别,提取文字。
将文字中的问题和答案提取出来。
使用百度搜索并统计搜索得到结果数量。
问题+各个答案count(q&a)
问题 count(q)
答案 count(a)
计算匹配值 pmi: pmi[i]=count(q&a[i])/(count(q)*count(a[i]))。
选择 pmi 值最高的为答案。
安卓手机打开 USB 调试,设置》开发者选项》USB 调试。
电脑与手机 USB 线连接,确保执行 adb devices 可以找到设备 id。
打开百万直播。
运行我们的 Java 程序,当弹出题目时,输入 1 回车。
注意程序中的 adb 驱动目录要更换成自己的目录,我的屏幕是
1920*1080,如果是别的分辨率,暂时需要修改一下代码中的图片参数等。
可以增加一个图形化界面,分别对题目和答案进行搜索并进行展示。
常见问题
项目构建问题:IDE
建议用 idea,从 Github 导入后,在右侧的 Maven project 中添加目录根部的 pom.xml 文件即可。
tessOCR:只是调用了一下,在
pom 已经导入了使用的工具包,训练机在 tessdata 里面,不需要配置。
adb 驱动相关:使用
adb 需要对应的手机驱动的。最简单验证 adb 的方法是在 adb 目录里面打开命令行输入 adb devices 看下有没有设备,有的话即可。
当然最终要的是这个篇文章给大家送福利了
想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、redis、jvm、多线程、netty、kafka、的对于课程有兴趣加群:561614305 同时也可以免费获得下面分享的视频资料
由此可见,程序员是这个世界上最厉害、最单纯的一个群体,他们总是能把世界上所有的问题用程序员的方法去解决。大家还有什么其他的玩法吗?欢迎留言分享~
对他而言,这天的微博并非生日宴会,而是战场。王思聪的一则微博开启了“全民竞答”类 APP 的爆红之路。
一时间,直播巨头们都跟上“王校长”的节奏,“冲顶大会”之外,映客旗下的“芝士超人”、今日头条旗下的“百万英雄”和花椒直播旗下的“百万作战”纷纷亮相,每天狂撒百万现金。
“冲顶大会”、“芝士超人”、“百万英雄”等知识竞答游戏火了,奖金数额也从最初的人民币 5 万、10 万涨到了 100 万、甚至更高......
冲顶大会是直播答题游戏,每天指定时间开放,12 道题,每题 3 个选项,10 秒作答,所有通关者分享奖金(每场奖金五万元或十万元),邀请好友可以获得复活资格,这类模式的鼻祖是美国去年 8 月上线的 HQ Trivia。
为了能够全部答对 12 道题,平分数额如此庞大的奖金池,参赛者开始想方设法提高自己答题的正确率。
我们看看有哪些可以 Hack 的方法?
题目出现再去搜索肯定是来不及的(除非你单身 40 年的手速),广大人民的作弊策略也是层出不穷。
最简单的是一群人一起玩,可以利用网络延迟有多几秒的读题时间,遇到不会的每个人分开选,这样你只需要 3^12=531441 台手机即可通关。
正如节目主持人介绍的一样,许多答题者开始寻找身边的朋友共同答题,以求覆盖到更多类型的知识点,提高通关的几率。
于是,各种各样的微信、QQ 答题群诞生,每个人都在群聊里分享自己认为正确的答案。
还可以使用两台设备,一个手机等主播读题,另一个利用百度的语音搜索也能查出答案,但是感觉这种速度要比较慢。
道高一尺,魔高一丈,让你猜不到的是,答题游戏居然也有外挂了!已经有程序员设计了“辅助程序”,用于快速检索答案。
这个用 Python 程序可以修剪并识别图片中的文字内容(问题和选项),然后通过百度进行搜索关键字出现的次数,最后将统计的信息展示出来。
这样一来,答题者就可以根据统计数据来选择相应的答案,极大提高了答题的正确率。
那么程序员到底应该如何玩呢?
用 Python 玩转《冲顶大会》
首先用 WDA 来获取屏幕截图,WDA 本是 Facebook 开发的一套 iOS 测试框架,前几天看见大家都用来做微信“跳一跳”的外挂,便特意去了解了一下,发现也能用在冲顶大会上。
之后 crop 出题目所在的位置(可能需要适配手机屏幕),然后调用开放的 OCR 接口读取出文字文本。
最后调用搜索引擎,就可以达到之前 gif 图的效果。这套环境是 iOS + Mac,如果是安卓应该有更方便的方法。
最初的想法是希望搜索+选择答案全部自动化完成的,思路是 OCR 题目和候选答案,组成三个组合扔到百度或谷歌里搜索,然后哪个组合的结果出现次数最多就选择哪个。
试了几个问题后发现并不是这样,比如上面图片的“骆驼的驼峰是存储什么的?”,可能多数人都会认为是水,因此出现的次数最多,其实是错误答案。
最后还有两个痛点:
免费 OCR 接口调用次数有限,所以不能一直去截屏识别,只能等题目出现时运行程序。
官方也很套路,有的问题是没法搜索的。比如下图中这种:
最后附上代码:
# python3 import wda import io import urllib.parse import webbrowser import requests import time import base64 from PIL import Image c = wda.Client() # 百度OCR API api_key = '' api_secret = '' token = '' while True: time.sleep(0.5) c.screenshot('1.png') im = Image.open("./1.png") region = im.crop((75, 315, 1167, 789)) # iPhone 7P imgByteArr = io.BytesIO() region.save(imgByteArr, format='PNG') image_data = imgByteArr.getvalue() base64_data = base64.b64encode(image_data) r = requests.post('https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic', params={'access_token': token}, data={'image': base64_data}) result = '' for i in r.json()['words_result']: result += i['words'] result = urllib.parse.quote(result) webbrowser.open('https://baidu.com/s?wd='+result) break
用 Java 来玩百万英雄
Github 地址:https://github.com/lingfengsan/MillionHero
gitee 仓库地址:https://gitee.com/lingfengsan/MillionHero
游戏模式
一共 12 道题,全部答对就可以平分奖金。如果可以把直播中的问题和答案提取出来,然后百度,然后统计一下哪个更相关,就可以辅助你答题了。
当然也可以直接把百度出来的题目和答案都展示出来。算法还在优化,以代码中为准。
工具介绍
Java8Android 手机
adb 驱动
idea
原理说明
将手机点击到直播界面(在这里我们先打开一张图片)。用 adb 工具获取当前手机截图,并用 adb 将截图 pull 上来。
adb shell screencap -p /sdcard/1.png adb pull /sdcard/1.png .
用 tessOCR 进行图像识别,提取文字。
将文字中的问题和答案提取出来。
使用百度搜索并统计搜索得到结果数量。
问题+各个答案count(q&a)
问题 count(q)
答案 count(a)
计算匹配值 pmi: pmi[i]=count(q&a[i])/(count(q)*count(a[i]))。
选择 pmi 值最高的为答案。
操作步骤
安卓手机打开 USB 调试,设置》开发者选项》USB 调试。电脑与手机 USB 线连接,确保执行 adb devices 可以找到设备 id。
打开百万直播。
运行我们的 Java 程序,当弹出题目时,输入 1 回车。
注意程序中的 adb 驱动目录要更换成自己的目录,我的屏幕是
1920*1080,如果是别的分辨率,暂时需要修改一下代码中的图片参数等。
实验结果
PS:无奈本人在出差,笔记本速度和网速都比较慢,比较好的电脑和网速肯定能有很大的提升。
TODO
可以增加一个图形化界面,分别对题目和答案进行搜索并进行展示。常见问题
项目构建问题:IDE
建议用 idea,从 Github 导入后,在右侧的 Maven project 中添加目录根部的 pom.xml 文件即可。
tessOCR:只是调用了一下,在
pom 已经导入了使用的工具包,训练机在 tessdata 里面,不需要配置。
adb 驱动相关:使用
adb 需要对应的手机驱动的。最简单验证 adb 的方法是在 adb 目录里面打开命令行输入 adb devices 看下有没有设备,有的话即可。
当然最终要的是这个篇文章给大家送福利了
想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、redis、jvm、多线程、netty、kafka、的对于课程有兴趣加群:561614305 同时也可以免费获得下面分享的视频资料
由此可见,程序员是这个世界上最厉害、最单纯的一个群体,他们总是能把世界上所有的问题用程序员的方法去解决。大家还有什么其他的玩法吗?欢迎留言分享~
相关文章推荐
- 【程序员的吃鸡大法】利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
- 【程序员的吃鸡大法】利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
- 程序员:我用 Python 给“冲顶大会”做了外挂!王思聪们还舍得撒币吗?
- 如何用黑科技帮女友瓜分冲顶大会百万奖金!!!
- 程序员告诉你如何用技术手段玩转冲顶大会
- 用Python搭建“冲顶大会”外挂,王思聪们还舍得撒币吗?
- 程序员是这么玩冲顶大会的
- 用Python给“冲顶大会”做外挂!王思聪们还敢撒币吗?
- 利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
- 王思聪的冲顶大会火了,但为何会采用奖金均分模式?
- 程序员是这么玩冲顶大会的
- 西瓜视频 百万英雄 冲顶大会 程序员入口简单易懂教程!
- 利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
- 程序员是真正的主角——SD2.0大会有感
- 冲顶大会APP技术选型及架构设计 推荐
- 自制面膜让你轻松美容 - 健康程序员,至尚生活!
- 资深程序员告诉你:如何用五年时间攒够100万?
- 使用 adr 轻松创建 “程序员友好” 的轻量级文档
- 【SD2.0大会】30日11:30 宋兴烈:要改变程序员低级的翻译工作
- 程序员轻松应对工作的秘诀(转载)