Hacking8签到

Hacking8自动签到

As of 06/10/2021. See the latest version.

// ==UserScript==
// @name         Hacking8签到
// @namespace    https://fengwenhua.top/
// @version      0.2
// @description  Hacking8自动签到
// @author       江南小虫虫
// @match        https://i.hacking8.com/setting/profile
// @icon         https://www.google.com/s2/favicons?domain=i.hacking8.com
// @grant        GM_xmlhttpRequest
// ==/UserScript==


(function() {
    'use strict';
    var url = "https://i.hacking8.com/setting/profile";
    var headers = {
        "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
        "accept-language": "zh-CN,zh;q=0.9",
        "cache-control": "max-age=0",
        "content-type": "application/x-www-form-urlencoded",
        "sec-ch-ua": "\"Chromium\";v=\"94\", \"Google Chrome\";v=\"94\", \";Not A Brand\";v=\"99\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "document",
        "sec-fetch-mode": "navigate",
        "sec-fetch-site": "same-origin",
        "sec-fetch-user": "?1",
        "upgrade-insecure-requests": "1"
    }

    var csrf_token = document.querySelector("#tables > div.panel-body > form > div > input[type=hidden]:nth-child(1)").value;
    console.log(csrf_token);
    var sign_btn = document.querySelector("#tables > div.panel-body > form > button").textContent;
    console.log(sign_btn);
    let labels = document.querySelectorAll("#tables > div.panel-body > form > div > label");
    var question = '';

    for(let label of labels){
        if(label.textContent.indexOf('=')!=-1){
            question = label.textContent;
            break;
        }
    }
    question = question.split('=')[0]
    console.log(question);
    var answer = eval(question).toString();
    console.log(answer);
    var body = "csrfmiddlewaretoken=" + csrf_token + "&plug="+answer;

    function Toast(msg, duration) {
        duration = isNaN(duration) ? 3000 : duration;
        var m = document.createElement('div');
        m.innerHTML = msg;
        m.style.cssText = "max-width:60%;min-width: 150px;padding:0 14px;height: 40px;color: rgb(255, 255, 255);line-height: 40px;text-align: center;border-radius: 4px;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%);z-index: 999999;background: rgba(0, 0, 0,.7);font-size: 16px;";
        document.body.appendChild(m);
        setTimeout(function() {
            var d = 0.5;
            m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';
            m.style.opacity = '0';
            setTimeout(function() {
                document.body.removeChild(m)
            },
                       d * 1000);
        },
                   duration);
    }

    function runAsync(url, send_type, headers, data) {
        var p = new Promise((resolve, reject) => {
            GM_xmlhttpRequest({
                method: send_type,
                url: url,
                headers: headers,
                data: data,
                onload: function(response) {
                    //console.log("请求成功");
                    //console.log(response.responseText);

                    resolve(response.responseText);

                },
                onerror: function(response) {
                    //console.log("请求失败");
                    reject("请求失败");
                }
            });
        })
        return p;
    }
    runAsync(url,"POST",headers,body).then((result)=>{
        if(result.indexOf('请求失败')!=-1){
            console.log("出现网络问题,签到失败!")
            Toast("出现网络问题,签到失败!", 2000);
        }else if(result.indexOf('签到验证码错误')!=-1){
            console.log("不知道为啥,验证码竟然会有问题。。。签到失败");
            Toast("不知道为啥,验证码竟然会有问题。。。签到失败", 2000);
        }else if(result.indexOf('签过到了')!=-1){
            console.log("您已经签过到了");
            Toast("您已经签过到了", 1500);
        }else if(result.indexOf('签到成功')!=-1){
            console.log("签到成功")
            Toast("签到成功", 1500);
        }
        else {
            console.log("还有其他结果??");
            console.log(result);
        }
    });
})();