Greasy Fork

Greasy Fork is available in English.

自定义问卷星—测试

特定问卷星填写

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        自定义问卷星—测试
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  特定问卷星填写
// @author       YWL
// @include     https://www.wjx.cn/*
// @grant        GM_setValue
// @grant        GM_getValue
// @match        https://www.wjx.cn/*
// @license GNU GPLv3
// ==/UserScript==

/* 
  操作教程可以查看我的博文:https://itxiaoye.top/article/10
  如果有什么问题可以一块探讨的,在博文下边给我评论留言就行
*/

(function() {
    'use strict';
    var shua_num = 0; // 当前刷的份数
    var shau_num_total = 500; // 要刷的总份数

    if(!GM_getValue('shua_num_1')){ // 保存全局缓存变量
        GM_setValue('shua_num_1', 1);
    }

    //===========================开始==============================
    clearCookie();

    var wenjuan_url = 'https://www.wjx.cn/vj/Pof3FuQ.aspx'; // 需要刷的问卷网址
    var success_url = 'https://www.wjx.cn/wjx/join/complete.aspx'; // 提交成功后跳转的网址除参数部分

    /*判断当前处于哪个网址*/
    if(window.location.href.indexOf(success_url)!=-1){ // 当前处于提交成功的网址
        if(shua_num < shau_num_total){ // 如果还没有完成需要的份数
            /*刷的份数加一*/
           shua_num = GM_getValue('shua_num_1') +1;
           GM_setValue('shua_num_1', shua_num);

           window.location.href=wenjuan_url; // 跳转到问卷网址
        }
    }else if(window.location.href==wenjuan_url){ // 当前为问卷网址,则接着下边的操作
    }else{ // 当前是其他网址则不进行任何操作
        return
    }

    /*滚动到末尾*/
    window.scrollTo(0,document.body.scrollHeight)

    var lists = document.querySelectorAll('.ulradiocheck') // 题目列表,获取题块列表
    var ccc=0; // 当前题目下标
    var ops; // 当前题目
    var now_select = getIndex([353,941,2118,5412,1176]); // 为了避免题目之间的无关联,先选出主体的选项(以13题作为主体)

    /*根据自定的规则给所有的题目选上选项*/
    for(var i=0;i<=lists.length-1;i++){
        switch(i){
            case 0: // 第一道题
                ops = lists[i].querySelectorAll('li'); //获取题目中的选项列表
                ops[getIndex([3647,6353])].click(); // 点击根据getIndex获取到的选项
                break;
            case 1:
                ops = lists[i].querySelectorAll('li');
                ops[getIndex([1353,1529,2706,4412])].click();
                break;
            case 2:
                ops = lists[i].querySelectorAll('li');
                //由于从3题开始之后所有的题目存在关联关系,需要确保可信度,所以做一些简单的限制
                ops[getSelectIndex([706,1765,3647,3176,706],now_select)].click();
                break;
            case 3:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([353,941,2118,5412,1176],now_select)].click();
                break;
            case 4:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([471,1765,4353,2941,471],now_select)].click();
                break;
            case 5:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([118,1176,1765,5647,1294],now_select)].click();
                break;
            case 6:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([659,635,1765,6353,588],now_select)].click();
                break;
            case 7:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([824,941,3529,4353,353],now_select)].click();
                break;
            case 8:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([235,1176,3765,4353,471],now_select)].click();
                break;
            case 9:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([235,1647,3059,4588,471],now_select)].click();
                break;
            case 10:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([588,1176,3176,4588,471],now_select)].click();
                break;
            case 11:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([235,941,2941,5059,824],now_select)].click();
                break;
            case 12:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([235,706,3294,4941,824],now_select)].click();
                break;
            case 13:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([235,1294,3529,4118,824],now_select)].click();
                break;
            case 14:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([588,1412,3294,4000,706],now_select)].click();
                break;
            case 15:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([706,1529,3647,3412,706],now_select)].click();
                break;
            case 16:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([471,2000,4000,2941,588],now_select)].click();
                break;
            case 17:
                ops = lists[i].querySelectorAll('li');
                ops[getSelectIndex([341,1059,3529,3529,941],now_select)].click();
                break;

        }
    }

    /*问卷提交函数*/
    setTimeout( function(){
        document.querySelector('#submit_button').click() // 点击提交按钮
        setTimeout( function(){
            document.querySelector('#SM_BTN_1').click() // 点击智能验证按钮
            setInterval( function(){
                try{
                    yanzhen(); // 滑动滑块
                }
                catch(err){
                    
                }
            }, 500 );
        }, 1000 );
    }, 2000 );

    //===========================结束==============================

    /**
     * 返回单选下标,根据传入的题目每道题的概率数组,返回当前需要选择的题目选项下标
     * @param:round 概率数组
    */
    function getIndex(round){
        var data = Math.floor(Math.random() * 10000) + 1;
        for(let i =0;i<round.length;i++){
            data = data - round[i];
            if(data <= 0){
                console.log(data+","+i)
                return i;
            }
        }
        return round.length - 1;
    }

    /**
     * 返回基于主选的单选下标,根据传入的题目每道题的概率数组以及主选的选项下标,返回当前需要选择的题目选项下标
     * @param:round 概率数组
     * @param:select 当前的主选下标
    */
     function getSelectIndex(round,select){
         var randomMax = 0; // 随机最大
         const randomMin = 1; // 随机最小
         const randomAdd = 10000; //提高的概率数
         var start = 0; // 循环起始下标
         var length = 0; // 循环次数
        if(select == 0){
            start = 0;
            length = 2;
            randomMax = round[0] + round[1];
        }
        else if(select == round.length - 1){
            start = round.length - 2;
            length = 2;
            randomMax = round[round.length - 2] + round[round.length - 1];
        }
        else{
            start = select - 1;
            length = 3;
            randomMax = round[select - 1] + round[select] + round[select+1];
        }
        length = start+ length;
        randomMax = randomAdd+randomMax;



        var data = Math.floor(Math.random() * randomMax) + randomMin;
        for(let i =start;i<length;i++){
            data = data - round[i];
            if(i == select){
                data = data - randomAdd;
            }
            if(data <= 0){
                console.log(data+","+i)
                return i;
            }
        }
        return start + length - 1;
    }

    //清除cookie
    function clearCookie() {
        var keys = document.cookie.match(/[^ =;]+(?=\=)/g);
        if (keys) {
            for (var i = keys.length; i--;) {
                document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString();//清除当前域名下的,例如:m.kevis.com
                document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString();//清除当前域名下的,例如 .m.kevis.com
                document.cookie = keys[i] + '=0;path=/;domain=kevis.com;expires=' + new Date(0).toUTCString();//清除一级域名下的或指定的,例如 .kevis.com
            }
        }
    }
    //滑动验证函数
    function yanzhen(){
        var event = document.createEvent('MouseEvents');
        event.initEvent('mousedown', true, false);
        document.querySelector("#nc_1_n1z").dispatchEvent(event);
        event = document.createEvent('MouseEvents');
        event.initEvent('mousemove', true, false);
        Object.defineProperty(event,'clientX',{get(){return 130;}})
        document.querySelector("#nc_1_n1z").dispatchEvent(event);
        event.initEvent('mousemove', true, false);
        Object.defineProperty(event,'clientX',{get(){return 130;}})
        document.querySelector("#nc_1_n1z").dispatchEvent(event);
    }

})();