快捷搜索: 答题赚钱答题赚钱
咸鱼帮扶 哆啦赚 悬赏汪 悬赏猫 趣闲赚 趣多帮 小白赚钱 赏乐帮 牛帮 好玩游戏

【Py大法系列--02】我是如何破解答题赚钱的

我要做什么:

近期最火的在风口上飞起来的项目大概就是“全民答题赚钱”了。各个直播平台巨头争相恐后的在这个战场厮杀,惨烈程度可以看下图(最近的烧钱更加惨烈):

【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

我们这些吃瓜群众自然是开心的不行,毕竟有钱拿的事情谁都乐意参与,何况是通过自己的智力赚取财力,贼骄傲贼自豪。

【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

然而,在天朝,有游戏的地方就有外挂,毕竟看着白花花的银子大家都眼红啊。民间程序猿大神们开始动起来自己的双手开工赚钱,有号称写了三个小时程序的Python程序猿的外挂:

【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

更夸张的是,这次不仅民间的码农们出击,竟然都有了官方外挂,比较有代表性的是百度的简单搜索,支持语音+拍照题目搜索;搜狗则更夸张,直接在一个Webview页面上更新答案:

【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

我是怎么做的

明确需求

正所谓,做人处事一定要有风骨,玩游戏怎么能靠外挂呢?要用外挂就得用自己的!
说干就干,首先明确下我的需求是什么,很简单,答对题目赢钱。所以我就有了两个很明确的需求,题目和答案,确定了外挂的基本框架:

【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

乍一看框架特别简单,然而为了满足答题游戏的规则:10s中给出正确答案,再对外挂提出以下要求:

    结合竞品情况,题目准确率不一定要100%,但要达到60%以上;

    一定要快,一定要快,一定要快!重要的事情说三遍,除了10s的限制,因为答案不一定准确还要人脑做一个判断,故效率应该在7s左右;

    明确了需求,话不多说开始干活。

    外挂1.0

    外挂形式:

    思前想后,作为一个测试开发工程师,在技术深度上还欠缺火候,理了一下自己的技术栈:

      语言:Python Java JS

      平台知识储备:SQL Network

      … ….

      【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

      实在是有点惨不忍睹,所以我的外挂一定要简单,那就来最简单的Python吧。

      获取题目:

      第一个想到的就是文字识别,这也是多数外挂应用的方法。百度用了成熟的图片识别和语音识别,而搜狗搜索也用了自己的OCR识别技术。但想到自己单兵作战精力有限,不想再搞一套文字识别算法。想到上面那位花了三个小时的工程师的程序,我定睛一看,”alicloudapi”,这不我司阿里云的API嘛。有现成的API不用再撸一套实在费心啊,还是用兄弟BU的产品吧,刚好遇到五折活动,下单下单(API地址)。
      代码的逻辑比较暴力,adb截图,API获取到文字和位置信息,拿到json,解析出来题目:

      【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

      在做了上面的微小工作之后我花了不到1s的时间获取到了题目信息,给我们阿里云的API点个赞:

      【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

      【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

      搜索答案:

      成功获取了题目,如何搜索到满意的答案呢? 毕竟百度和搜狗两家都是做搜索的,有着成熟的搜索技术和配置牛逼的引擎,再加上百万平方米的机房,而我,只有刚换的新的13 mbp,比不起比不起啊。那我该怎么办呢?综上考虑,机器学习来不及了,我这单机10s内跑不完,海量搜索也做不了,数据哪里来……那就用现成的技术吧:
      回想了之前的项目经历,我决定拿出以前研究过的东西来,WebDriver +htmlUnit,既然是搜答案,那就直接上百度,既然原生浏览器速度太慢太耗时间,那就来虚拟的。话不多说撸了代码:

      【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

      这里也挺简单,开一个selenium remote server,模拟一个虚拟的browser,然后打开百度首页,input题目,搜索,把产生的结果download下来,找到答案可能附着的element作为知识库,比较三个选项在知识库里出现的次数,次数最多的就是最终答案。

      运行结果:

      开挂了开挂了,模拟一次答题的经历如下:

      【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

      虽然程序准确输出了答案,但是在没有截图的步骤下时间达到了6s钟,加上截图保存的时间,耗费时间实在太长。

      外挂2.0

      速度提升自动化优化

      通过运行脚本,发现外挂1.0的弊端实在太明显:

        速度慢

        自动化程度低,截图过程时间长、需要把握时机

        然后1.0受到了瑾瑾的鄙视:

        【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

        为了吃到曲奇,我决定从下面两方面做优化:

          干掉截图的方法,截请求拿题目

          通过API的方式获得百度搜索方法

          经过两天的试验,我到现在都没有获得下发题目的日志(以“芝士超人”为例),所以截获请求拿题目的想法暂时毙掉。想到很多人拿Python用来爬虫,原理也就是download页面数据而已。果断查询了百度请求的参数,得到下面的结果:

            http://www.baidu.com/s?wd=关键字,wd(Keyword):查询的关键词;

            http://www.baidu.com/s?wd=关键字&cl=3,cl(Class):搜索类型,cl=3为网页搜索,cl=2为图片搜索;

            http://video.baidu.com/v?rn=20&pn=0,pn(Page Number):显示结果的页数;

            … …

            剩下的参数感兴趣的同学可以百度,这些已经够我用了哈哈:

            key = question    # 题目 count_search = 3   # 搜索结果的页数 for i in range(1, count_search):    urlsearch = "http://www.baidu.com.cn/s?wd=" + key.decode('utf-8') + "&cl=3&pn=" + str(i) + "0"    # print(urlsearch)    response_search = urllib2.urlopen(urlsearch.decode('utf-8'))    html = response_search.read() + html

            然后最后一步是从html中分析答案就好了,目前的做法就直接统计了选项出现的概率,最后的结果如下图:

            【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

            从截图到给出答案的时间稳定在4s左右。终于得到了瑾瑾的夸奖哈哈:

            【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的

            到底能不能用呢?

            到现在我的外挂也没有投入到生产中去,现在还用着百度的“简单搜索”,处在放弃的边缘。总结起来致命的缺点有以下几个:

              截图的时机不好把握,往往无法最快的速度截图

              仅仅计算答案出现的概率对付填空题类型的题干还可以,计算性选择性的题干错误率贼高

              总结起来就是又慢又不准!
              不过本身这个外挂也没用上什么高端的技术,也没有像公众号那位大哥花费3小时之久,能够用极其简单的成本做出来个小产品挺有成就感的。
              但是我到底能不能吃上女神的法丽兹抹茶曲奇呢?还请各位大神在评论区里献言献策,一起提升我们的外挂实力啊!

              【Py大法系列--02】我是如何破解<a href=http://www.datizq.com/ target=_blank class=infotextkey>答题赚钱</a>的


相关文章: