金蝶云社区|自动签到脚本|tampermonkey

55gY 24 0
// ==UserScript==
// @icon         https://vip.kingdee.com/favicon.ico
// @name        金蝶云社区自动签到抽奖_免打扰
// @namespace    https://55gy.cn/
// @version      1.2
// @description  自动签到,抽奖
// @author       55gY
// @match        *://vip.kingdee.com/*
// @exclude      *://vip.kingdee.com/api/checkins*
// @run-at       document-idle
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @connect      *
// @require      https://www.55gy.cn/message.js
// ==/UserScript==
//通知插件message.min.js
//https://whitesevs.github.io/Message.js/src/message.js
/**
* ///签到 POST
* ///https://vip.kingdee.com/api/checkins/
* ////正常
* ///{"coins":40}
* ////已签到
* ///{"errorCode":409,"errors":null,"message":"今天已签到"}
* ///////////////////////////////////////////////////////////////////////
* ///签到状态 GET
* ///https://vip.kingdee.com/api/checkins/status
* ///{"checkIn":true,"coins":10}
///////////////////////////////////////////////////////////////////////
* ///签到抽奖 POST
* ///https://vip.kingdee.com/activityapi/activities/731/lottery/604602279601212672/draw
* ////返回 抽奖结果
* ///{"createdAt":1724748234599,"deliverInfo":null,"id":"616312013727201024","prizeId":"462640073654295808","prizePoolId":"604602279601212672"}
* ////返回 已抽奖
* ///{"errorCode":409,"errors":null,"message":"您今天还没签到或者已抽奖了"}
* ///////////////////////////////////////////////////////////////////////
* ///抽奖结果明细 GET
* ///https://vip.kingdee.com/activityapi/me/activities/731/lottery-draw-records?page=1&pageSize=1
* ///{"content":[{"createdAt":1724827818000,"deliverInfo":null,"id":"616645810649822976","prize":{"amount":8,"checkInCardNum":0,"coins":8,"createdAt":1688110048000,"credits":0,"description":"13:8","extractionCode":null,"id":"462640322560713984","image":"/download/010059fbd986b8ea4b62a269013f94c3fc44.png","lotteryTimes":0,"name":"8社区金币","new":false,"prizePoolId":null,"type":1,"updatedAt":null,"url":null},"prizePool":{"allowLotteryTime":null,"id":"604602279601212672","openStatus":null,"prizeList":null,"taskId":null},"winner":{"avatar":"/download/0101c39bc0d221a748af9720a075a8cde325.png","id":"333201710350846208","isCurrentUser":null,"name":"55gY","nameSpell":"name","phone":null}}],"empty":false,"first":true,"last":false,"number":0,"numberOfElements":1,"pageable":{"offset":0,"pageNumber":0,"pageSize":1,"paged":true,"sort":{"empty":false,"sorted":true,"unsorted":false},"unpaged":false},"size":1,"sort":{"empty":false,"sorted":true,"unsorted":false},"totalElements":26,"totalPages":26}
* ///////////////////////////////////////////////////////////////////////
*/
(function() {
    'use strict';
    //通知插件CSS message.min.css
    //GM_addStyle('.qmsg.qmsg-wrapper{box-sizing:border-box;margin:0;padding:0;color:rgba(0,0,0,.55);font-size:13px;font-variant:tabular-nums;line-height:1;list-style:none;font-feature-settings:"tnum";position:fixed;top:16px;left:0;z-index:1010;width:100%;pointer-events:none;}.qmsg .qmsg-item{padding:8px;text-align:center;-webkit-animation-duration:.3s;animation-duration:.3s;position:relative;}.qmsg .qmsg-item .qmsg-count{text-align:center;position:absolute;left:-4px;top:-4px;background-color:red;color:#fff;font-size:12px;line-height:16px;border-radius:2px;display:inline-block;min-width:16px;height:16px;-webkit-animation-duration:.3s;animation-duration:.3s;}.qmsg .qmsg-item:first-child{margin-top:-8px;}.qmsg .qmsg-content{text-align:left;position:relative;display:inline-block;padding:10px 16px;background:#fff;border-radius:4px;box-shadow:0 4px 12px rgba(0,0,0,.15);pointer-events:all;max-width:80%;min-width:80px;}.qmsg .qmsg-content [class^="qmsg-content-"]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.qmsg .qmsg-content .qmsg-content-with-close{padding-right:20px;}.qmsg .qmsg-icon{display:inline-block;color:inherit;font-style:normal;line-height:0;text-align:center;text-transform:none;vertical-align:-.125em;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:relative;top:1px;margin-right:8px;font-size:16px;}.qmsg .qmsg-icon svg{display:inline-block;}.qmsg .qmsg-content-info .qmsg-icon{color:#1890ff;user-select:none;}.qmsg .qmsg-icon-close{position:absolute;top:11px;right:5px;padding:0;overflow:hidden;font-size:12px;line-height:22px;background-color:transparent;border:none;outline:none;cursor:pointer;color:rgba(0,0,0,.45);transition:color .3s}.qmsg .qmsg-icon-close:hover>svg path{stroke:#555;}.qmsg .animate-turn{animation:MessageTurn 1s linear infinite;-webkit-animation:MessageTurn 1s linear infinite;}@keyframes MessageTurn{0%{-webkit-transform:rotate(0deg);}25%{-webkit-transform:rotate(90deg);}50%{-webkit-transform:rotate(180deg);}75%{-webkit-transform:rotate(270deg);}100%{-webkit-transform:rotate(360deg);}}@-webkit-keyframes MessageTurn{0%{-webkit-transform:rotate(0deg);}25%{-webkit-transform:rotate(90deg);}50%{-webkit-transform:rotate(180deg);}75%{-webkit-transform:rotate(270deg);}100%{-webkit-transform:rotate(360deg);}}@-webkit-keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}@keyframes MessageMoveOut{0%{max-height:150px;padding:8px;opacity:1}to{max-height:0;padding:0;opacity:0}}@-webkit-keyframes MessageMoveIn{0%{transform:translateY(-100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@keyframes MessageMoveIn{0%{transform:translateY(-100%);transform-origin:0 0;opacity:0}to{transform:translateY(0);transform-origin:0 0;opacity:1}}@-webkit-keyframes MessageShake{0%,100%{transform:translateX(0px);opacity:1;}25%,75%{transform:translateX(-4px);opacity:0.75;}50%{transform:translateX(4px);opacity:0.25;}}@keyframes MessageShake{0%,100%{transform:translateX(0px);opacity:1;}25%,75%{transform:translateX(-4px);opacity:0.75;}50%{transform:translateX(4px);opacity:0.25;}}');
    /**
     * 防止require引入js失败
     * JS已集成css
    */
    //日期
    var today = new Date();
    var DD = String(today.getDate()).padStart(2, '0'); // 获取日
    var MM = String(today.getMonth() + 1).padStart(2, '0'); //获取月份,1 月为 0
    var yyyy = today.getFullYear(); // 获取年
    today = yyyy + '-' + MM + '-' + DD;
    let s = {
        a: "正在自动签到...",
        c: "您已经签到了!",
        f: "签到成功!",
        g: "签到失败!",
        i: "自动签到中..",
        // j: "#header-inner > .lang-switch > img ",
        status_link: 'api/checkins/status',
        checkins: 'api/checkins/',
        draw: 'activityapi/activities/731/lottery/604602279601212672/draw',
        draw_list: 'activityapi/me/activities/731/lottery-draw-records?page=1&pageSize=1',

    }

    let header = {
        "Host": "vip.kingdee.com",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",
        "Accept": "application/json, text/plain, */*",
        "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
        "Accept-Encoding": "gzip, deflate, br, zstd",
        "currentProductLineId": "1",
        "page-url": "https://vip.kingdee.com/",
        "pre-page": "https%3A%2F%2Fvip.kingdee.com%2F%",
        "lang": "zh-CN",
        "X-CSRF-TOKEN": getCookie('V-CSRF-TOKEN') ,
        "DNT": "1",
        "Sec-GPC": "1",
        "Connection": "keep-alive",
        "Referer": "https://vip.kingdee.com/",
        "Cookie":  document.cookie,
        "Sec-Fetch-Dest": "empty",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Site": "same-origin",
        "Pragma": "no-cache",
        "Cache-Control": "no-cache"
    }
    /**
     * 通知插件
    */
    function js() {
        var script = document.createElement("script");
        script.type = 'text/javascript';
        script.src = 'https://www.55gy.cn/message.js';
        document.body.appendChild(script);
    };
    /**
     * 签到后保存cookies
     *
     * autoSign: {date:时间,coins:签到金币}
    */
    function saveDate({time="",coins="",coins_draw=""}){
        var obj = JSON.parse(localStorage.getItem('autoSign'));
        if(time){
            obj.date = today;
        }
        if(coins){
            obj.coins = coins;
            Qmsg.success('签到成功,获得金币:'+coins,{timeout:5000,autoClose:true});

        }
        if(coins_draw){
            obj.coins_draw = coins_draw;
            Qmsg.success("抽奖成功,获得金币:"+coins_draw,{timeout:5000,autoClose:true});
        }
        //document.querySelector('.tool-item-sign.tool-item' ).style.height='80px';
        //document.querySelector('.tool-item-sign.tool-item > .item-title').innerHTML=`签到:${coins}<br>抽奖:${coins_draw}`;
        localStorage.setItem('autoSign',JSON.stringify(obj));
    }

    /**
     * 判断当天是否已签到
     *
     * 通过获取本地cookies {autoSign.date}
    */
    function isTody(){
        var aas = localStorage.getItem('autoSign');
        if(aas !== null){
            var obj = JSON.parse(aas);
            if(obj){
                //判断签到日期
                var time=new Date(obj.date);
                var time1=new Date(today);
                if(time.getTime() != time1.getTime()){
                    return false;
                }
                if(obj.coins==''){
                    return false;
                }
                //document.querySelector('.tool-item-sign.tool-item' ).style.height='80px';
                //document.querySelector('.tool-item-sign.tool-item > .item-title').innerHTML=`签到:${obj.coins}<br>抽奖:${obj.coins_draw}`;
                return true;
            }
        }else{
            localStorage.setItem('autoSign',JSON.stringify({"date":"1970-01-01","coins":"","coins_draw":""}));
            return false;
        }
        //本地cookies不存在
        return false;

    }
    /**
     * 抽奖,并获取最新一条的抽奖明细
    */
    function draw(){
        //抽奖
        Qmsg.info("正在进行抽奖",{timeout:2000,autoClose:true});
        GM_xmlhttpRequest({
            method: "post",
            url: s.draw,
            data: '',
            headers: header,
            onload: function(r) {
                //抽奖后获取抽奖明细
                Qmsg.info("获取抽奖明细",{timeout:2000,autoClose:true});
                GM_xmlhttpRequest({
                    method: "get",
                    url: s.draw_list,
                    data: '',
                    headers: header,
                    onload: function(r) {
                        var obj=JSON.parse(r.responseText);
                        saveDate({'coins_draw':obj.content[0].prize.coins});
                    }
                });
            }
        });
    }


    /**
     * 获取指定cookie名称的值
     * @name {string} cookie名称
    */
    function getCookie(name) {
        let matches = document.cookie.match(new RegExp(
            "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
        ));
        return matches ? decodeURIComponent(matches[1]) : undefined;
    }

    /**
     * 签到主程序
    */
    function autoSign() {
        if (!isTody()){
            Qmsg.info(s.a,{timeout:2000,autoClose:true});
            // 获取签到状态
            GM_xmlhttpRequest({
                method: "get",
                url: s.status_link,
                data: '',
                headers: header,
                onload: function(r) {
                    var res=r.responseText;
                    if(res.indexOf('"checkIn":false')>0){
                        // 未签到,执行签到
                        GM_xmlhttpRequest({
                            method: "post",
                            url: s.checkins,
                            data: '',
                            headers:  header,
                            onload: function(r) {
                                if(r.responseText.indexOf("coins")>0){
                                    // 签到成功
                                    // console.log(s.f);
                                    Qmsg.info(s.f,{timeout:2000,autoClose:true});
                                    var obj=JSON.parse(r.responseText);
                                    saveDate({'time':today,'coins':obj.coins});
                                }else{
                                    // 签到失败
                                    // console.log(s.g);
                                    Qmsg.error(s.g,{timeout:2000,autoClose:true});
                                }
                            }
                        });
                    }else if(res.indexOf('"checkIn":true')>0){
                        Qmsg.error(s.c,{timeout:2000,autoClose:true});
                        var obj=JSON.parse(res);
                        saveDate({'time':today,'coins': obj.coins});
                    }
                    //签到后,执行抽奖
                    draw();
                }
            });
        }
    }
    js();
    autoSign();
})();

本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

发表评论 取消回复
表情 图片 链接 代码