VikACG 自动签到

打开 VikACG 主站时自动签到

// ==UserScript==
// @name         VikACG 自动签到
// @description  打开 VikACG 主站时自动签到
// @namespace    http://tampermonkey.net/
// @version      0.2.6
// @author       Howard Wu
// @license      GPLv3
// @match        https://www.vikacg.com/
// @icon         http://vikacg.com/favicon.ico
// @grant GM_xmlhttpRequest
// ==/UserScript==

function getCookies(name) {
    function read(value) {
        if (value[0] === '"') {
            value = value.slice(1, -1)
        }
        return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent)
    }
    if (typeof document === 'undefined' || (arguments.length && !name)) {
        return
    }

    // To prevent the for loop in the first place assign an empty array
    // in case there are no cookies at all.
    var cookies = document.cookie ? document.cookie.split('; ') : []
    var jar = {}
    for (var i = 0; i < cookies.length; i++) {
        var parts = cookies[i].split('=')
        var value = parts.slice(1).join('=')

        try {
            var found = decodeURIComponent(parts[0])
            jar[found] = read(value, found)

            if (name === found) {
                break
            }
        } catch (e) { }
    }

    return name ? jar[name] : jar
}

(function () {
    'use strict';
    var b2_token = getCookies('b2_token')
    GM_xmlhttpRequest({
        "url": "https://www.vikacg.com/wp-json/b2/v1/getUserMission",
        "headers": {
            "accept": "application/json, text/plain, */*",
            "accept-language": "zh-CN,zh;q=0.9",
            "authorization": "Bearer " + b2_token,
            "cache-control": "no-cache",
            "content-type": "application/x-www-form-urlencoded",
            "pragma": "no-cache",
            "sec-ch-ua": "\"Microsoft Edge\";v=\"105\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"105\"",
            "sec-ch-ua-mobile": "?0",
            "sec-ch-ua-platform": "\"Windows\"",
            "sec-fetch-dest": "empty",
            "sec-fetch-mode": "cors",
            "sec-fetch-site": "same-origin"
        },
        "referrer": "https://www.vikacg.com/mission/today",
        "referrerPolicy": "strict-origin-when-cross-origin",
        "body": "count=0&paged=1",
        "method": "POST",
        "mode": "cors",
        "credentials": "include",
        "onload": function (result) {
            if (result.status == 200) {
                const json = JSON.parse(result.response)
                var data = json.mission
                var checkinDate = data.date
                var checkGetMission = data.credit
                var my_credit = data.my_credit
                var always = data.always
                if (checkGetMission == 0) {
                    console.log("目前积分:" + my_credit)
                    GM_xmlhttpRequest({
                        "url": "https://www.vikacg.com/wp-json/b2/v1/userMission",
                        "headers": {
                            "accept": "application/json, text/plain, */*",
                            "accept-language": "zh-CN,zh;q=0.9",
                            "authorization": 'Bearer ' + b2_token,
                            "cache-control": "no-cache",
                            "pragma": "no-cache",
                            "sec-ch-ua": "\"Microsoft Edge\";v=\"105\", \" Not;A Brand\";v=\"99\", \"Chromium\";v=\"105\"",
                            "sec-ch-ua-mobile": "?0",
                            "sec-ch-ua-platform": "\"Windows\"",
                            "sec-fetch-dest": "empty",
                            "sec-fetch-mode": "cors",
                            "sec-fetch-site": "same-origin"
                        },
                        "referrer": "https://www.vikacg.com/mission/today",
                        "referrerPolicy": "strict-origin-when-cross-origin",
                        "body": null,
                        "method": "POST",
                        "mode": "cors",
                        "credentials": "include",
                        "onload": function (result) {
                            if (result.status == 200) {
                                const json = JSON.parse(result.response)
                                var date = json.date
                                var credit = json.credit
                                var my_credit = json.mission.my_credit
                                console.log(date + " 签到成功,获得积分:" + credit + " 目前积分:" + my_credit + " 请查看积分是否有变动");
                            } else {
                                console.log("签到失败");
                            }
                        },
                    });
                } else {
                    console.log("签到时间:" + checkinDate + ",签到获得积分:" + checkGetMission + ",目前积分:" + my_credit)
                    console.log("今天已经签到,如有问题请尝试手动签到");
                }
            } else {
                console.log("请求失败,是否未登录?");
            }
        },
    });
})();