嵌入式 Java 问卷星系统 问卷星系统开发包
本文分为两个部分, 一个是如何对微信内网页调试抓包的总结另一个是wjx的问卷填写.
总结部分
诸如"ks.wjx.top"的为考试卷, 估计也一般设置为要求微信登录.
一共做过两次, 有强制微信手机登录, 也有可以用电脑微信做的.
我自己发的测试问卷首先是去遮罩, 看到题, 调试可以用浏览器改useragent来模拟微信浏览器, 也可以直接下微信开发者工具调试.
控制台直接show_zhezhao_utlis(0,1)即可, 当然还是处于需要登录的状态
实现
试卷只是第二课堂加分用, 前几名加的比较多. 目的就是为了秒掉试卷(只有三套试卷 比的就是手速).
搜了一下也只有电脑端的随机作答, 故写下此文.
要说下我对这方面的知识只在了解层面, 弄也只是为了兴趣, 写下提供个思路, 言语描述若有不当请见谅…
清楚了目标想到两种方法:
1 用python模拟操作
2 网页控制台写js
第一种方法
最重要的地方就是获取微信登录后的cookie, 不过光是手机抓包这一步就卡住我了, 安卓7.0以上对抓包进行了额外限制, 最后用虚拟机+微信7以下版本解决
能够抓包之后, 发现不简单, 加上自己不懂就不在此献丑了, 有兴趣的可以采用这种方法. 到这,我果断放弃之.
总结如下:
关于微信内网页抓包版本问题fiddler+模拟器调试 对微信网页抓包需要用安卓7以下版本, 推荐mumu
当然也可以在手机上安装虚拟环境然后安装微信具体见使用Fiddler抓包微信7.0–HTTPS协议
第二种方法
就很简单了, 这种方法也是tx官方的方法, 前提要有wx版本号在7之前的版本, 因为7之后了微信浏览器换了内核. 所以不远的将来应该还是得用获取cookie的方式.
在有了这个神器后, 后面的事就比较清晰了.
使用上文介绍的使用虚拟环境(vxposed或模拟器安装微信低版本)
然后利用官方还没有关闭的调试方法debugx5 代码如下 与测试问卷无关,相关问卷已被关闭作答,供参考. ps: 借鉴了油猴上wjx的随机填问卷, 虽然电脑端和手机端是两套代码, 不过照葫芦画瓢就好了
5个基础信息填空15个选择然后10个填空共三套试卷.
(function() {
var ans1Select=new Array('3','4','4','2','1','2','4','1','1','4','4','1','1','3','2');
var ans1Blank=new Array('I','D','H','C','O','B','J','G','L','E');
//loseweight
var ans2Select=new Array('1','4','1','2','1','2','4','1','3','3','4','3','2','4','1');
var ans2Blank=new Array('I','N','M','C','O','J','E','L','A','G');
//whatabout
var ans3Select=new Array('1','2','1','4','1','4','2','1','1','2','3','2','1','4','1');
var ans3Blank=new Array('G','L','F','O','C','E','M','N','J','B');
var ansSelectTotal=new Array(ans1Select,ans2Select,ans3Select);
var ansBlankTotal=new Array(ans1Blank,ans2Blank,ans3Blank);
var basicInfo=new Array("理工","2017","软件","88888888","测试");//基础信息
function GetAnswer() {
this.martixSingleChoose = function(subject,num,paper) {
var tr = subject.querySelectorAll("a");
console.log(num);
console.log(paper);
var ans=ansSelectTotal[paper-1][num-1];
tr[ans - 1].classList.add('jqChecked');
tr[ans - 1].click();
}
this.fillInTheBlank = function(subject,num,paper) {
var textInputs = subject.querySelectorAll("input");
var ans=ansBlankTotal[paper - 1][num-1];
$(textInputs).attr("value",ans);
}
}
function judgeType()
{
var q = document.getElementsByClassName("ui-field-contain");
var paper=0;//第几张试卷
var paperType=q[1].querySelectorAll(".field-label")[0].textContent;
var ans3="1. what about*";
var ans2="1. lose weight*";
var ans1="1. glimpse*";
console.log(q[1].querySelectorAll(".field-label"));
console.log(paperType);
if(paperType==ans3)
paper=3;
if(paperType==ans2)
paper=2;
if(paperType==ans1)
paper=1;
console.log(paper);
var rc = new GetAnswer();
//基本信息
var listBasicInfo = q[0].querySelectorAll("input");
for(var i=0;i<listBasicInfo.length;i++)
{
var info=basicInfo[i];
$(listBasicInfo[i]).attr("value",info);
}
show_next_page();
for (var i = 1; i < q.length; i++)
{
if (q[i].querySelectorAll(".ui-radio")[0])
{
if (q[i].querySelectorAll("input")[0])
{ // 表格题中包含有单选, 多选
input = q[i].querySelectorAll("input");
if (input[0].type == 'radio')
{
rc.martixSingleChoose(q[i],i,paper);
}
}
}
else if (q[i].querySelectorAll(".ui-input-text")[0])
{
console.log("填空", i);
console.log(paper);
rc.fillInTheBlank(q[i],i - 15,paper); //填空题从16开始
}
}
}
judgeType();
setTimeout(function()
{
var vote = document.getElementsByClassName("voteDiv");
var vote_a=vote[0].querySelectorAll("#ctlNext");
vote_a[0].click();
},1000);
})();
上一篇: 去谷歌搜索 Chromium