写了个冲顶大会类答题游戏辅助,有兴趣的朋友可以试试

2018-01-10 01:54:36 +08:00
 SkyeX

这两天冲顶大会之类的直播答题 APP 突然火了起来,不得不佩服互联网公司的想象力,那么程序员怎么用不同的方式玩转答题游戏呢。之前微信的跳一跳小游戏刷报朋友圈,已经有很多朋友写出了自动化的脚本辅助,一看到答题游戏就马上想到可以用类似的方式来写一个简单的脚本。我发现已经有朋友做了个调用百度 api 的,自己就再写个直接用识别库的吧,代码思路简单,可以用在各类答题游戏中。使用文字识别加搜索,只能辅助增加准确率,保证不了全对。

目前版本增加了截图传输效率,修改了识别参数,对图像进行灰度转化,去干扰增加了识别准确率。结果判断使用了三种方式,对不同问题可以参考不同结果。

具体代码和环境及使用请戳https://github.com/Skyexu/TopSup

具体做法

  1. 使用 ADB 获取手机截屏
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png .
  1. OCR 识别题目与选项文字 分别通过代码截取题目区域与选项区域,再进行文字识别

文字识别两个方法:

  1. 搜索判断

结果判断方式

  1. 直接打开浏览器搜索问题

  2. 题目+每个选项都通过浏览器进行搜索,从网页代码中提取搜索结果计数

  3. 只用题目搜索结果页面代码中包含选项的词频计数法

以下为两个示例结果,可以看出下面两道题,两个方法有不同的结果,可以更具问题类型进行不同的决策。

参考了 I Hacked HQ Trivia But Here ’ s How They Can Stop Me

写完简单版本想一想,怕是还没有 Hi ,Siri来的方便,不过好在识别准确,查询快,后来又加了几个方法辅助决策。不玩了,写 paper 去了

11665 次点击
所在节点    分享创造
62 条回复
pheyer
2018-01-10 17:15:22 +08:00
看到 ocr 我很想笑
imyip
2018-01-10 18:53:29 +08:00
再加个识别然后模拟点击? adb shell input tap x y
qsnow6
2018-01-10 19:01:17 +08:00
直接抓包就好了
SkyeX
2018-01-10 20:45:17 +08:00
@moxiaonai 更新了一下,应该不慢了
MonoLogueChi
2018-01-10 20:53:32 +08:00
@marlboros 科技发明都是人类为了偷懒而创造的,没有偷懒的欲望,就没有发明创造的动力。所以说偷懒使人类进步
18912017465
2018-01-10 22:14:53 +08:00
用截图+ocr 的方式,时间上肯定来不及,效率太低了。我的想法是后台抓包得到问题,然后进行百度分析,同事记录进数据库,随着数据库的充实,得到问题后可以现在数据库里比对,没有再百度
yuanfnadi
2018-01-10 23:35:29 +08:00
@18912017465 你只是就知道了,题目是和视频流一起来的。
ocr 可以同时解决任何 app 任何平台,而且不会被破解。
cdwyd
2018-01-11 00:11:10 +08:00
@qsnow6 抓一个试试嘛
XiaolinLeo
2018-01-11 00:15:51 +08:00
SorryChen
2018-01-11 00:16:37 +08:00
分选项搜的那里很耗时,建议用多线程,我用多线程之后,提速效果显著
benjunk
2018-01-11 00:27:33 +08:00
@SorryChen 大佬来一个 pr 吧,造福大家
Linxing
2018-01-11 01:22:58 +08:00
所以楼主瓜分了那笔钱了吗
alinwu05
2018-01-11 07:51:25 +08:00
macOS 打开浏览器搜索,关键词乱码怎么解决?
sundyli
2018-01-11 10:26:00 +08:00
@SkyeX 我也写了这种辅助, 但真不建议你开源出来, 节目方知晓了可能会追究你的责任哦...
benjunk
2018-01-11 10:41:15 +08:00
@sundyli
这是 MIT 开源的,又不是开发外挂来收费的,造福大家。层主想自己独占,自己就闭源呗
siriussilen
2018-01-11 11:19:08 +08:00
这个我也写了一个 python 脚本,我用的是阿里的 ocr 识别技术,不过识别技术不够高,准确率比较差
ljbljb007
2018-01-11 13:38:09 +08:00
新版本有问题 昨天的版本好用
ljbljb007
2018-01-11 13:43:13 +08:00
Traceback (most recent call last):
File "GetQuestionTessAndroid.py", line 33, in <module>
m2 = Thread(methods.run_algorithm(1, question, choices))
File "E:\downloads\TopSup-master\common\methods.py", line 76, in run_algorithm
open_webbrowser_count(question, choices)
File "E:\downloads\TopSup-master\common\methods.py", line 30, in open_webbrowser_count
output(choices, counts)
File "E:\downloads\TopSup-master\common\methods.py", line 48, in output
counts = list(map(int, counts))
ValueError: invalid literal for int() with base 10: 'html><html><body>\r\n<script type="text/javascript">\r\n var u = document.URL;\r\n var ua = navigator.userAgent.toLowerCase();\r\n var u = "https://www.baidu.com/s?"+qs(\'wd|word\')+\'&tn=02

提示这个 怎么整?
yao978318542
2018-01-11 17:59:59 +08:00
e ...我写了个 php 版本的 命中率 80 左右 有的还是得自己判断啊。。。。。
Bresh
2018-01-12 02:12:16 +08:00
这东西感觉还是人多力量大 毕竟三个臭皮匠顶个诸葛亮
去一些 yy 或者群里 一起玩

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/421544

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX