一、前言

  据王思聪引爆全民HQ也3个星期了,总结下最新做的一个有关"答题热"的工具。并借由这个工具的开发,分析当下HybridApp中H5的一些技术。

  在百万英雄等节目刚出来的时候,就有很多大咖预测会有人工智能AI介入。但是AI需要大量的运算分析,更贴近服务端,前端主要还是做客户端的工作。

  所以我的思路是借助一些互联网公司开发的免费AI答题助手,做一个整合到PC端AI参考答案的界面,并支持批量答题操作。助手包括:

  丶百度:简单搜索  Hybrid-App

  丶搜狗:汪仔助手  Hybrid-App

  丶UC:UC答题助手  Hybrid-App 或者 Web

二、开发

  目前全部代码已放在github:https://github.com/SmileSmith/autoAnswer(欢迎star和issue)

  效果图:

  

  1、各个助手代码分析(借用Charles抓取手机的请求和返回包)

    简单搜索:Hybrid-App,简单的静态页面做webscoket请求,特点如下:

      丶主要JS逻辑和代码放在index.html中,引入zepto和自己开发的scoket.io.js

      丶API用WebSocket实现实时响应,不需要轮询

      丶API请求简单的请求头即可,支持跨域,没有做安全策略,也不检验referrer

    点评:官方命名是DAN哥直播间,除了显示AI搜索的结果外,还有比较答案等功能,互动性较强。技术上用了Webscoket等,减少通讯数量,降低服务器的压力。但是业务层的代码没有做模块化工程化,且有一些低级错误,比如函数名为:stepTow。总结是设计和架构不错,业务逻辑代码有点像赶工的。。。

    模拟:直接抓取相关代码,静态托管即可。

    

    汪仔助手:Hybrid-App,与简单搜索差不多,简单的静态页面,差别在于用Ajax轮询,特点如下:

      丶主要JS逻辑和代码放在index.html中,引入zepto

      丶API需要轮询

      丶API使用jsonp支持跨域,并且做了CSP以及校验域名和校验User-Agent

    点评:与上面的简单搜索对比,无时无刻的轮询肯定是耗费大量资源的。前几天API接口从wd.sogou.com换到一个ip地址,不知道是不是服务器压力还是技术升级的原因。

    模拟:抓取相关代码,静态托管,对API请求做反向代理,修改Refer和User-Agent

     

    UC答题助手:Web访问或Hybrid-App,一个Vue的SPA应用,在特定时间段Ajax轮询,特点如下:

      丶Vue构建的SPA应用,webpack打包并做了版本控制,看上去是最工程化

      丶使用了服务端渲染SSR,(当前期数,奖金,开始轮询的时间)是动态渲染到首页的一个变量中的

      丶API在答题开始时开始轮询,12题结束后结束轮询,由前端控制,API不支持跨域

      丶API做了校验域名

    模拟:抓取相关代码,静态托管,对API请求做反向代理,修改Refer和User-Agent。首页动态渲染的参数,需要先请求真实地址(这里也需要反向代理),拿到相关参数eval,并修改请求数据的API地址

    

    2、本地服务器静态文件托管和反向代理、以及收集数据和点击手机

    用Python3写了简单的sever,方便后续分析处理数据。

    静态托管:

    

    动态代理(感觉这里用urllib模拟的反向代理,和我以前常用的Koa和Nginx中的反向代理有些不同:Charles抓的包能看到代理访问的地址):

    

    收集答题数据:

    

    3、收据收集和分析

    后续工作:

    1、根据各个助手的情况,分配权重值。再出题5秒后,用户还未点击的情况下,自动点击平均各个助手的答案权重值后的最终结果。

    2、收集各个助手的答题情况:每个答案的确信百分比,最终答案,准确率,做数据分析

【原创】最新的"答题热"中,前端的一点小工作的更多相关文章

  1. 关于C#中readonly的一点小研究

    可能园子里有不少文章已经说明了这个问题了,但是我在这里写这篇博客只是写写自己的一些体会,也权当是整理归纳,高手莫见笑. ===============正文分割线================== 现 ...

  2. VB.NET开发中遇到的一点小问题

    在用vb.net开发的security support时,遇到一个问题,在trainingCourses.aspx页面上增加了一个HyperLink控件 <asp:HyperLink runat ...

  3. js中全局变量的一点小知识点

    js中有三种方式定义全局变量: 在任何函数外面直接执行var语句,例如:var f="value"; 直接添加一个属性到全局变量上,在web浏览器中,全局对象名为window.例如 ...

  4. 使用yii中CSecurityManager的一点小技巧

    当我们使用CSecurityManager::encrypt对字符串进行加密, 加密后的字符串是一串乱码(看起来确实像乱码, 具体是什么有待考证), 这不利于我们的下一步操作. 我们可以使用base6 ...

  5. 前端必备——js中前端与后台的数据交互全解

    只要编程语言能够支持网卡端口的监听和发送,理论上都是可以实现服务器后台设计的.也因此造成了实现后台的语言偏多,而web前端语言以html/css/js为主.所以在这里我们不涉及后台的设计,只介绍在we ...

  6. 当下较热web前端技术汇总

    Web前段技术发展很快,主流技术日新月异,想想自己刚毕业那会用的asp技术,现在已经很少有主流网站在使用了.再到后来的J2EE框架,然后SpringMVC大行其道,但是最近各种js框架被广为传播,Ht ...

  7. 网站建设中前端常用的jQuery+easing缓动的动画

    网站建设中前端人员利用jQuery实现动画再简单不过了,只是要实现更酷的效果还需要插件来帮忙,easing就是一款帮助jQuery实现缓动动画的插件,经过试用,效果很不错! 下载该插件:jquery. ...

  8. Solidity 最新 0.5.8 中文文档发布

    本文首发于深入浅出区块链社区 热烈祝贺 Solidity 最新 0.5.8 中文文档发布, 这不单是一份 Solidity 速查手册,更是一份深入以太坊智能合约开发宝典. 翻译说明 Solidity ...

  9. PDF.Js的使用—javascript中前端显示pdf文件

    PDF.Js的使用—javascript中前端显示pdf文件 写于2018/12/6 起因是一个图片展示页面需要展示pdf格式的文件,所以查了半天决定使用pdf.js,我也不求有多了解它,能实现我想要 ...

随机推荐

  1. react native仿微信性别选择-自定义弹出框

    简述 要实现微信性别选择需要使用两部分的技术: 第一.是自定义弹出框: 第二.单选框控件使用: 效果 实现 一.配置弹出框 弹出框用的是:react-native-popup-dialog(Git地址 ...

  2. C#设计模式之二十二备忘录模式(Memeto Pattern)【行为型】

    一.引言   今天我们开始讲"行为型"设计模式的第十个模式,该模式是[备忘录模式],英文名称是:Memento Pattern.按老规矩,先从名称上来看看这个模式,个人的最初理解就 ...

  3. vue-router项目实战总结

    今天来谈谈vue项目{vue,vue-router,component}三大神将之一的vue-router.作为我们前后端分离很重要的实践之一,router帮我们完成了SPA应用间的页面跳转. 并且, ...

  4. 在亚马逊linux环境上装mysql+添加启动项

    安装mysql sudo yum install mysql sudo yum install mysql-server sudo yum install mysql-devel 添加到系统启动项su ...

  5. MyBatis map foreach

    以下资料来源于网络,仅供参考学习.   mybatis 遍历map实例 map 数据如下 Map<String,List<Long>>.   测试代码如下: public vo ...

  6. Linux 下Beanstalk安装

    1.安装 # wget https://github.com/kr/beanstalkd/archive/v1.10.tar.gz # tar xzvf v1.10 # cd beanstalkd-1 ...

  7. 视频流GPU解码在ffempg的实现(二)-GPU解码器

    1.gpu解码器的基本调用流程 要做视频流解码,必须要了解cuda自身的解码流,因为二者是一样的底层实现,不一样的上层调用 那cuda的解码流程是如何的呢 在https://developer.nvi ...

  8. ffempg支持文件解码

    在做一个数据通道 要求有两个 1.支持打开实时流,解码得到图片 2.支持打开视频文件,得到解码图片 第一个要求前任已经实现 bool FfmpegStreamChr::Open(const char ...

  9. 454ITS数据按barcode和primer分类程序v1.0

    不知道有什么好办法可以让primer允许漏配,现在仅仅是允许错配,还是有一些没有配上,454数据有些primer漏配了一些,下一步解决这个问题 #include <cstdio> #inc ...

  10. Python的类与类型

    1.经典类与新式类 在了解Python的类与类型前,需要对Python的经典类(classic classes)与新式类(new-style classes)有个简单的概念. 在Python 2.x及 ...