查看原文
其他

百万英雄冲顶神器,官方外挂最为致命(内附代码)

2018-01-12 crossin TED Crossin的编程教室

最近我们有发过两篇文章:


今天我们要来谈另外一个在2018年伊始就突然火爆的产品:


在线直播答题



然而与往常不一样的是,面对这么一个值得挑战的目标,这次已经不只是程序员们跃跃欲试,连大佬们都坐不住了:



剧情可以说变得很有意思了。


其实搜狗只是高调了一点罢了,市场上从不缺此类东西。



当然,这种东西的准确率并不是一定可靠的,最多当个辅助吧。

图片转自网络,出处见水印




从技术角度来说,实现这么个“辅助”工具,主要就是两个步骤:


  1. 识别题目

  2. 搜索、分析结果并展示


问题的核心是速度,因为每一题留给你的时间并不多。


碰巧这两方面都是搜狗擅长的技术领域,做出这么一个工具来也真是顺理成章。


按照王小川的说法,第一个环节,搜狗靠的是 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“外挂”已上线

平安夜,Python送你一顶圣诞帽 @微信官方

Python老司机给上路新手的3点忠告

【数据说话】当下的Python就业前景如何

Python有嘻哈:Crossin教你用代码写出押韵的verse

编程新手:看懂很多示例,却依然写不好一个程序

给伸手党的福利:Python 新手引导



欢迎加入

Crossin的编程教室

crossincode.com


  请把我们分享给身边爱学习的小伙伴 :)  

点击“阅读原文”,查看更多学习资源

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存