一、前言

  据王思聪引爆全民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. CJOJ 免费航班

    Description 小Z在MOI比赛中获得了大奖,奖品是一张特殊的机 票.使用这张机票,可以在任意一个国家内的任意城市之间的免费飞行,只有跨国飞行时才会有额外的费用.小Z获得了一张地图,地图上有城 ...

  2. chown 命令详解

    chown 作用:改变某个文件或目录的所有者和所属的组, 该命令可以向某个用户授权,使该用户编程指定文件的所有者或者改变文件的所属组, 用户可以是用户或者是用户ID, 用户组可以是组名或者租ID,   ...

  3. JAVA图片批量上传JS-带预览功能

    这篇文章就简单的介绍一个很好用的文件上传工具,批量带预览功能.直接贴代码吧,都有注释,很好理解. HTML页面 <!DOCTYPE html> <%@ taglib prefix=& ...

  4. js、jQuery、layer实现弹出层的打开、关闭

    打开layer layer.open({ type: 2, title: '新增收货地址', shadeClose: true,//点击阴影关闭 shade: 0.8, area: ['900px', ...

  5. 程序猿的日常——Java中的集合列表

    列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再 ...

  6. 发短信utils

    package cn.itcast.bos.utils;   import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; ...

  7. 鸟哥的linux私房菜学习-(五)Linux系统的在线求助man page与info page

    1.man page man是manual(操作说明)的简写啦!只要下达:『man date』 马上就会有清楚的说明出现在你面前喔!如下所示: 进入man命令的功能后,你可以按下『空格键』往下翻页,可 ...

  8. 自定义类型转换器Convert

    //自己指定一个类型转换器(将String转成Date) ConvertUtils.register(new Converter() { @Override public Object convert ...

  9. win10使用u盘装回win7

    背景:一朋友要我帮忙把系统从win10装回到win7,因为做IT的嘛,想想也难不倒我,况且以前也经常重装系统,硬盘里就有win7的系统,于是很爽快的答应了.电脑拿过来一试才知道原来有这么多坑,原来的系 ...

  10. UWP 手绘视频创作工具技术分享系列 - 有 AI 的手绘视频

    AI(Artificial Intelligence)正在不断的改变着各个行业的形态和人们的生活方式,图像识别.语音识别.自然语言理解等 AI 技术正在自动驾驶.智能机器人.人脸识别.智能助理等领域中 ...