利用JavaScript实现问卷星问卷调查的刷票
寒假做一个无聊的社会实践,在问卷星发了一篇问卷调查。然而推广力不从心,填的人太少。于是打算用脚本把人数刷多。摸索了一下午,成功了,并刷了几百张票(当然我刷几十张票之后就得酌情改一下答案,要不然几百张答案完全相同就太假了):
之后在网上搜索类似内容,发现关于在问卷星上刷票的讨论比较稀少(有倒是有,但是是几年前的了,可能不再适用)。
本方法是用简单的几行javascript脚本(其实自己javascript也刚入门啦),虽然很low,但是简单易行,只需要一款内有开发人员工具(按F12打开)的浏览器就可以实现。最近又看到好多同学在各种群里发各种问卷,所以姑且写篇文章介绍下这个偷懒的办法。
首先要说明,本方法只适用于问卷设置里“防重复填写”的三项全未选中的问卷(如下图。以后会考虑如何绕开这些限制,现在是真没时间):
所以如果是你自己的问卷,当然要在设置里把这些勾给去掉咯。
下面详细讲步骤:
1. 访问需要填写的问卷网页,填写好答案:
这里就以我那个无聊的问卷为例好了:
https://sojump.com/jq/11955824.aspx
先和以前一样正常地填写完。注意不能空题,要不然之后刷多少次也没效果。
2. 找到网页的js脚本
按F12打开开发人员工具,找到与“提交”动作有关的js脚本。以google浏览器为例,脚本是这个样子(为了方便修改,你还应该点一下左下角的“{}”按钮,这样能使代码更加漂亮的显示):
(这个网站有两个js脚本,你应当和图片比对一下,别选错了)
3. 替换第二步的js脚本
下载这个我修改过的脚本:jqnew2_nojump,用它来替换第二步中的那个脚本文件的所有内容。具体操作当然是:全选下载的txt文件的所有内容,复制,全选第二步窗口里的所有内容,粘贴。
第三步替换脚本主要是为了避免提交问卷后的跳转(观察一下修改过的脚本,你会发现我注释掉了其中一段用于跳转的代码)。大家应该都知道在问卷星填完问卷后会跳转到一个抽奖页面,那样你在前一个网页所填写的表单数据就全丢了,不能重复填写了。
4.在控制台写刷票脚本
其实现在你可以试一下点“提交”按钮。你会发现不会跳转到抽奖页面了。
控制台在这里:
刷票脚本寥寥几行,其实就是循环n次的代码块:
var n=15; function loop() { submit(1); console.log("n= "+n); if(n>0) {var t=setTimeout("loop()",50000);n--;} }
为了避免刷票过快而出现验证码,用setTimeout函数实现50秒(也就是代码里的50000ms)刷一次,你也可以试着减少间隔,试试不出现验证码的时间阈值是多少。
此处要注意,setTimeout仅使引号内的代码延时执行,而并未使setTimeout的下一条语句延时执行。为了实现暂停,图简便的我用了递归。当时只求达到目的,没有管啥优不优雅的问题。
该脚本中的submit(1)函数即为提交按钮所触发的函数。你可以在脚本里面找到它。
好啦。总体来讲应该还算简单吧。刷票愉快!