Hacking8签到

Hacking8自动签到

질문, 리뷰하거나, 이 스크립트를 신고하세요.
// ==UserScript==
// @name         Hacking8签到
// @namespace    https://fengwenhua.top/
// @version      1.0
// @description  Hacking8自动签到
// @author       江南小虫虫
// @match        https://i.hacking8.com/setting/profile
// @icon         https://www.google.com/s2/favicons?domain=i.hacking8.com
// @grant        GM_xmlhttpRequest
// @license MIT
// ==/UserScript==


(function() {
    'use strict';

    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;
    }
    var today = new Date();
    today.setTime(today.getTime());
    var todayStr = today.getFullYear()+"-" + (today.getMonth()+1) + "-" + today.getDate();
    if(!localStorage.getItem(todayStr)){
        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;
        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);
                localStorage.setItem(todayStr, true);
            }else if(result.indexOf('签到成功')!=-1){
                console.log("签到成功")
                Toast("签到成功", 1500);
                localStorage.setItem(todayStr, true);
            }
            else {
                console.log("还有其他结果??");
                console.log(result);
            }
        });
    }else{
        console.log("今天签过到了");
    }

})();