Sangfor BBS Auto Login

深信服论坛自动登录,使用前请设置账号密码

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name               Sangfor BBS Auto Login
// @name:zh-CN         深信服论坛自动登录
// @namespace          daizp
// @version            0.6.0
// @description        深信服论坛自动登录,使用前请设置账号密码
// @author             daizp
// @include            http://bbs.sangfor.com.cn/*
// @grant              none
// ==/UserScript==

(function() {
    'use strict';
    var username = "username";
    var password = "password";

    //判断账号密码是否为默认
    if(username == "username" || password == "password"){
        return false;
    }

    //判断当前页面
    switch(location.pathname){
        case "/plugin.php":
            switch(getQueryString("id")){
                case "common_plug:raffle":
                    //签到页
                    signPage();
                    break;
                default:
                    //首页
                    mainPage();
                    break;
            }
            break;
        case "/member.php":
            switch(getQueryString("mod")){
                case "logging":
                    //首页
                    autoFillIn();
                    break;
            }
            break;
    }

    function mainPage(){
        //寻找用户登录信息
        if(document.getElementsByClassName("col-xs-4")[0]){
            if(document.getElementsByClassName("col-xs-4")[0].getElementsByClassName("username")[0]){
                //已登录
                autoSign();
            }else{
                //未登录
                //判断是否已经自动登录
                if(getQueryString("alreadyLogin") == "yes"){
                    //已自动登录
                    alert("登录失败");
                    window.location = "member.php?mod=logging&action=login";
                }else{
                    //未自动登录
                    autoLogin();
                }
            }
        }
    }

    function autoLogin(){
        //生成表单
        var tempForm = document.createElement("form");
        tempForm.id = "tempForm";
        tempForm.method = "post";
        tempForm.target = "tempFrame";
        tempForm.action = "member.php?mod=logging&action=login&loginsubmit=yes&handlekey=post&loginhash=LdQ3k&inajax=1";
        //来源页输入框
        var tempInput1 = document.createElement("input");
        tempInput1.type = "hidden";
        tempInput1.name = "referer";
        tempInput1.value = "http://bbs.sangfor.com.cn/plugin.php?id=info:index";
        tempForm.appendChild(tempInput1);
        //用户名输入框
        var tempInput2 = document.createElement("input");
        tempInput2.type = "hidden";
        tempInput2.name = "username";
        tempInput2.value = username;
        tempForm.appendChild(tempInput2);
        //密码输入框
        var tempInput3 = document.createElement("input");
        tempInput3.type = "hidden";
        tempInput3.name = "password";
        tempInput3.value = password;
        tempForm.appendChild(tempInput3);
        //结果iframe
        var tempFrame = document.createElement("iframe");
        tempFrame.name = "tempFrame";
        tempFrame.id = "tempFrame";
        tempFrame.onload = reloadMainPage;
        //添加frame到页面
        document.body.appendChild(tempFrame);
        //登录事件
        tempForm.submit();
    }

    function reloadMainPage(){
        //转到首页并防止连续自动登录
        window.location = "plugin.php?id=info:index&alreadyLogin=yes";
    }

    function getQueryString(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
        var r = window.location.search.substr(1).match(reg);
        if (r !== null) return unescape(r[2]);
        return null;
    }

    function autoSign(){
        if(document.getElementsByClassName("btn sign-btn")[0].getElementsByClassName("sign-info has_sign")[0]){
            //已签到
        }else{
            //未签到
            //设置cookie
            var signhash = document.getElementsByClassName("btn sign-btn")[0].getElementsByTagName("input")[0].value;
            //生成表单
            var tempForm = document.createElement("form");
            tempForm.id = "tempForm";
            tempForm.method = "post";
            tempForm.target = "tempFrame";
            tempForm.action = "plugin.php?id=sign:index&op=sign";
            //来源页输入框
            var tempInput1 = document.createElement("input");
            tempInput1.type = "hidden";
            tempInput1.name = "hash";
            tempInput1.value = signhash;
            tempForm.appendChild(tempInput1);
            //用户名输入框
            var tempInput2 = document.createElement("input");
            tempInput2.type = "hidden";
            tempInput2.name = "ajaxdata";
            tempInput2.value = "json";
            tempForm.appendChild(tempInput2);
            //结果iframe
            var tempFrame = document.createElement("iframe");
            tempFrame.name = "tempFrame";
            tempFrame.id = "tempFrame";
            //添加frame到页面
            document.body.appendChild(tempFrame);
            //登录事件
            tempForm.submit();
            //2秒后跳转到签到页
            setTimeout(toSignPage,2000);
        }
    }

    function toSignPage(){
        //跳转到签到页,准备抽奖
        //window.location = 'plugin.php?id=sign:index';//0.5.2版本方法
        window.location = 'plugin.php?id=common_plug:raffle';
    }

    function signPage(){
        var times = document.getElementsByClassName("raffle-wrap")[0].getElementsByClassName("text-center text-white")[0].getElementsByClassName("text-warning-light")[2].innerHTML;
        if(times == "1次"){
            //抽奖
            document.getElementsByClassName("raffle-con-btn")[0].click();
        }
    }

    /*
    * 0.5.2版本方法
    function signPage(){
        if(document.getElementsByClassName("orange-btn start ng-scope")[0]){
            //未抽奖
            //结果iframe
            var tempFrame = document.createElement("iframe");
            tempFrame.name = "tempFrame";
            tempFrame.id = "tempFrame";
            //添加frame到页面
            document.body.appendChild(tempFrame);
            //frame发送开始抽奖请求
            document.getElementById("tempFrame").src = "plugin.php?id=sign:index&op=times&_"+(new Date()).valueOf();
            //1秒后停止抽奖
            setTimeout(stopLottery,1000);
        }
    }

    function stopLottery(){
        //发送停止抽奖请求
        document.getElementById("tempFrame").src = "plugin.php?id=sign:index&op=stop&_="+(new Date()).valueOf();
        //主页面跳转到抽奖页
        window.location = "plugin.php?id=sign:index";
    }*/

    function autoFillIn(){
        var secretStr = document.getElementsByClassName("member-box-inner")[0].getElementsByTagName("div")[0].id.substr(-5);
        document.getElementById("username_" + secretStr).value = username;
        document.getElementById("password3_" + secretStr).value = password;
    }
})();