【原创】最新的"答题热"中,前端的一点小工作
一、前言
据王思聪引爆全民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、收集各个助手的答题情况:每个答案的确信百分比,最终答案,准确率,做数据分析
【原创】最新的"答题热"中,前端的一点小工作的更多相关文章
- 关于C#中readonly的一点小研究
可能园子里有不少文章已经说明了这个问题了,但是我在这里写这篇博客只是写写自己的一些体会,也权当是整理归纳,高手莫见笑. ===============正文分割线================== 现 ...
- VB.NET开发中遇到的一点小问题
在用vb.net开发的security support时,遇到一个问题,在trainingCourses.aspx页面上增加了一个HyperLink控件 <asp:HyperLink runat ...
- js中全局变量的一点小知识点
js中有三种方式定义全局变量: 在任何函数外面直接执行var语句,例如:var f="value"; 直接添加一个属性到全局变量上,在web浏览器中,全局对象名为window.例如 ...
- 使用yii中CSecurityManager的一点小技巧
当我们使用CSecurityManager::encrypt对字符串进行加密, 加密后的字符串是一串乱码(看起来确实像乱码, 具体是什么有待考证), 这不利于我们的下一步操作. 我们可以使用base6 ...
- 前端必备——js中前端与后台的数据交互全解
只要编程语言能够支持网卡端口的监听和发送,理论上都是可以实现服务器后台设计的.也因此造成了实现后台的语言偏多,而web前端语言以html/css/js为主.所以在这里我们不涉及后台的设计,只介绍在we ...
- 当下较热web前端技术汇总
Web前段技术发展很快,主流技术日新月异,想想自己刚毕业那会用的asp技术,现在已经很少有主流网站在使用了.再到后来的J2EE框架,然后SpringMVC大行其道,但是最近各种js框架被广为传播,Ht ...
- 网站建设中前端常用的jQuery+easing缓动的动画
网站建设中前端人员利用jQuery实现动画再简单不过了,只是要实现更酷的效果还需要插件来帮忙,easing就是一款帮助jQuery实现缓动动画的插件,经过试用,效果很不错! 下载该插件:jquery. ...
- Solidity 最新 0.5.8 中文文档发布
本文首发于深入浅出区块链社区 热烈祝贺 Solidity 最新 0.5.8 中文文档发布, 这不单是一份 Solidity 速查手册,更是一份深入以太坊智能合约开发宝典. 翻译说明 Solidity ...
- PDF.Js的使用—javascript中前端显示pdf文件
PDF.Js的使用—javascript中前端显示pdf文件 写于2018/12/6 起因是一个图片展示页面需要展示pdf格式的文件,所以查了半天决定使用pdf.js,我也不求有多了解它,能实现我想要 ...
随机推荐
- ElasticSearch 学习记录之如任何设计可扩容的索引结构
扩容设计 扩容的单元 一个分片即一个 Lucene 索引 ,一个 Elasticsearch 索引即一系列分片的集合 一个分片即为 扩容的单元 . 一个最小的索引拥有一个分片. 一个只有一个分片的索引 ...
- Macaca环境搭建踩坑总结
1.使用命令 npm i macaca-android -g 安装一直不成功,使用Macaca doctor 一直没有显示出android C:\Users\ABC>npm i macaca- ...
- django xdmin使用
我们来看看我们原先django给我们自带的admin后台是什么样子的呢 有人说,你的界面怎么那么丑,我说这个还叫丑吗,他说丑,我说你来,我看看你的,上图 看到登录界面后,我说别看了,我去修改,修改,我 ...
- solr 的 field, copyfield ,dynamic field
Field: Field就是一个字段,定义一个Field很简单: <field name="price" type="sfloat" indexed=&q ...
- Xamarin.Forms (Android制作启动画面)
http://blog.csdn.net/zapzqc/article/details/38496117 Xamarin.Forms 在启动的时候相当慢,必须添加一个启动界面,步骤如下: 1. ...
- 房上的猫:了解java与学习java前的准备
一.java 概述: 1.通常指完成某些事情的一种既定方式和过程 2.程序可以看做对一系列动作执行过程的描述 3.计算机按照某种顺序完成一系列指令的集合称为程序 4.计算机仅识别二进制低级语言 ...
- GpG使用指南
1. 简介 1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP.这个软件非常好用,迅速流传开来,成了许多程序员的必备工具.但是,它是商业软件,不能自由使用.所以,自 ...
- spring boot 之热部署(三)
热部署:当发现程序修改时自动启动应用程序. spring boot使用的是spring-boot-devtools是一个为开发者服务的一个模块.其原理用了classLoader 其中一个加载不变的类, ...
- HTML5新特性:元素的classList属性与应用
在html5新增的classList之前, 操作元素的class用的是className这个属性,而如果要向jquery封装的hasClass, removeClass, addClass, togg ...
- 跨域WebApi的Jquery EasyUI的数据交互
目录 1 大概思路... 1 2 创建WebAPI 1 3 创建CrossMainController并编写... 1 4 Nuget安装microso ...