百万英雄冲顶神器,官方外挂最为致命(内附代码)
最近我们有发过两篇文章:
今天我们要来谈另外一个在2018年伊始就突然火爆的产品:
在线直播答题
然而与往常不一样的是,面对这么一个值得挑战的目标,这次已经不只是程序员们跃跃欲试,连大佬们都坐不住了:
剧情可以说变得很有意思了。
其实搜狗只是高调了一点罢了,市场上从不缺此类东西。
当然,这种东西的准确率并不是一定可靠的,最多当个辅助吧。
图片转自网络,出处见水印
从技术角度来说,实现这么个“辅助”工具,主要就是两个步骤:
识别题目
搜索、分析结果并展示
问题的核心是速度,因为每一题留给你的时间并不多。
碰巧这两方面都是搜狗擅长的技术领域,做出这么一个工具来也真是顺理成章。
按照王小川的说法,第一个环节,搜狗靠的是 OCR(Optical Character Recognition,光学字符识别),将题目转成程序可处理的文本。
Python 可以使用 pytesseract 模块来实现 OCR 文字识别,这个我们在去年的文章 一行代码扫出“敬业福” 里也有用到过。
第二个环节就是语义分析+搜索。对于分析和搜索结果的优化细节,就关系到最终结果的准确性了。
如果是你自己实现的话,需要在这个层面多考虑下,是直接把搜索引擎的结果展示出来,还是根据一些规则(比如分词后统计词频,选出最高频的一些词)进行预判,少不了一番调试。
除此之外,对于获取题目本身,还有种思路:对APP的网络请求抓包,分析内容,尝试从中直接找出题目。或者直接对APP客户端本身进行分析,从内存中获取数据。不过通常的产品对这方面都会做额外的加密,不是那么容易获取。一旦可以拿到,那最终的速度和准确率将大大提高。如果说之前的方法还能说是“辅助”的话,这样的工具就已经是不折不扣的“外挂”了。即使作为一名技术人员,也应当把控好自己的行为,切勿越界。
上述都是纸上谈兵。而当我们还在谈论的时候,咱们编程教室的 @TED 同学已经完成了一个版本,并且在《百万英雄》上实测可行。
https://v.qq.com/txp/iframe/player.html?vid=d13317sb9ps&width=500&height=375&auto=0
TED 同学学习 Python 还不到两个月,现在是我们编程教室的志愿者,如果最近你有在我们的论坛(bbs.crossincode.com)上提问过,一定对这个 ID 很眼熟。在此也欢迎大家多来论坛上交流,共同进步。
这里使用方案就是 pytesseract,然后把结果直接放到百度里搜索并返回页面,算是一个半自动的辅助吧。
window_capture('haha.jpg')
text = pytesseract.image_to_string(Image.open('haha.jpg'), lang='chi_sim')
word = ''.join(text.split())
url = 'http://www.baidu.com/s?wd=%s' % word
webbrowser.open(url)
详细过程在 TED 同学的公众号 TEDxPY 里,也可在我们编程教室的知乎专栏 上查看。
获取完整代码地址请在公众号里回复 答题
代码问题请在论坛 bbs.crossincode.com 上发帖提问
点击文章最下方的“阅读原文”,查看更多学习资源
别忘了将我们的文章转发朋友圈或在知乎上为我们的专栏点赞,你们的支持将会让编程教室做得更好:)
推荐阅读:
Python有嘻哈:Crossin教你用代码写出押韵的verse
欢迎加入
Crossin的编程教室
crossincode.com
请把我们分享给身边爱学习的小伙伴 :)
点击“阅读原文”,查看更多学习资源