微信小程序头脑王者辅助神器
时间:2022-05-05
本文章向大家介绍微信小程序头脑王者辅助神器,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
起步
最近直播答题火热,群里也经常看到比拼微信小程序《头脑王者》。我比较笨,凭纯答题只到了黑金段位。鉴于本周刚刚点亮了收集抓包的技能,于是想试着通过这个来做一个辅助工具。
抓包
我使用的是 fiddler 抓的,网上关于抓app包的教程很多,可自行查阅,这里不赘述。根据抓包发现出题目的接口:
数据格式是一个 json 字符串,如下所示:
{"data":{"quiz":"我国的根本大法指的是?","options":["刑事诉讼法","刑法","婚姻法","宪法"],"num":3,"school":"理科","type":"地理","typeID":9,"contributor":"孙悦悦","partner":0,"endTime":1516447448,"curTime":1516447433,"myBuff":{}},"errcode":0}
解决了题目的获取,接下来就是想办法把题目传递到其他程序,利用 FiddlerScript 就可以了:
点击 FiddlerScript 然后选择 OnbeforeResponse 进入该函数内,写下如下代码:
这部分就是将题目发到自己写的一个程序上:
if (oSession.fullUrl.Contains("question.hortor.net/question/bat/findQuiz"))
{
//把内容通过ajax http发送其它地方
var _xhr = new ActiveXObject('Microsoft.XMLHTTP');
var url = 'http://localhost:8000/api/brain_king/';
//不需要返回值所以设置为空回调
_xhr.onreadystatechange = function() {}
_xhr.open('POST', url, true);
_xhr.setRequestHeader("Content-Type", "application/json");
_xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
_xhr.send(oSession.GetResponseBodyAsString());
}
解答问题
得到问题后如何答题就见仁见智了,最简单的一个方式就是把问题提交到百度上,进行词频统计,大多数情况下词频多的为正确答案,于是我及其简单的做了处理:
class BrainKing(generics.GenericAPIView):
def post(self, request):
question_dict = request.data.get("data")
question_text = question_dict["quiz"]
choices = question_dict["options"]
content = requests.get('http://www.baidu.com/s?wd=' + question_text, timeout=2).text
for choice in choices:
print(choice + " : " + content.count(choice))
return Response("")
你以为我会用很高级的语义分析等自然语言处理吗?其实我也有试,但效果还不是很好,准确率不如词频统计,等优化后再说吧。
成果展示
用这个上分确实很快,不过缺点也是比较明显的,带一些干扰词就不行了,但总体上王者还是比较轻松的:
后期如果再加上 adb 命令,就可以实现自动化答题了。
我有个朋友真的靠纯答题上的王者,令人敬佩。最后提醒一下,游戏而已,不要为了攀比伤了和气。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在Java Web中设计的编解码
- 怎么让用一行代码实现页面的定时强制刷新?脚本刷流量再也不用愁了!
- 什么是Javac
- springBoot 入门(二)—— 使用 spring.profiles.active来区分配置
- Kubernetes 1.19.0——deployment(2)
- JavaWeb新手进阶经典项目 & 半小时高效开发 & 海量知识点涵盖 (二)
- Java web 开发 Session超时设置
- JavaWeb第四讲 会话跟踪技术HttpSession、Cookie、url、隐藏表单域
- springBoot 入门(三)—— 使用 RestController
- SSM第一讲 Spring概述和基础知识详解
- springBoot 入门(四)—— 使用 纯注解方式的junit整合测试
- ClassLoader工作机制
- SSM第三讲 SpringAOP开发
- 如何加载Class文件到JVM
- spring + maven 实现发送邮件