Greasy Fork is available in English.

京东双十一红包插件2019

2019双十一自动做任务:逛商品,逛店铺,好玩互动,视频直播,精彩会场,一劳永逸。

// ==UserScript==
// @namespace         https://github.com/vbonluk/

// @name              京东双十一红包插件2019

// @description       2019双十一自动做任务:逛商品,逛店铺,好玩互动,视频直播,精彩会场,一劳永逸。

// @homepageURL       https://github.com/vbonluk/JDLuckyMoneyActivity
// @supportURL        https://github.com/vbonluk/JDLuckyMoneyActivity/issues/

// @author            vbonluk
// @version           1.3
// @license           MIT

// @compatible        chrome Chrome_46.0.2490.86 + TamperMonkey + 脚本_1.3 测试通过
// @compatible        firefox Firefox_42.0 + GreaseMonkey + 脚本_1.2.1 测试通过
// @compatible        opera Opera_33.0.1990.115 + TamperMonkey + 脚本_1.1.3 测试通过
// @compatible        safari 未测试

// @match             *happy.m.jd.com/babelDiy/GZWVJFLMXBQVEBDQZWMY/XJf8bH6oXDWSgS91daDJzXh9bU7/index.html
// @grant             none
// @run-at            document-start
// ==/UserScript==
(function() {
    'use strict';

    function Toast(msg, duration) {
        duration = isNaN(duration) ? 1000 : duration;
        var m = document.createElement('div');
        m.innerHTML = msg;
        m.style.cssText = "font-family:siyuan;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 Toast2(msg, duration) {
        duration = isNaN(duration) ? 1000 : duration;
        var m = document.createElement('div');
        m.innerHTML = msg;
        m.style.cssText = "font-family:siyuan;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: 42%;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 Toast3(msg, duration) {
        duration = isNaN(duration) ? 1000 : duration;
        var m = document.createElement('div');
        m.innerHTML = msg;
        m.style.cssText = "font-family:siyuan;max-width:60%;min-width: 150px;padding:0 14px;height: 80px;color: rgb(255, 255, 255);line-height: 20px;text-align: center;border-radius: 4px;position: fixed;top: 28%;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);
    }

    let productList = [],
        shopList = [],
        url = "https://api.m.jd.com/client.action";

    function autoPost(id, type, index, progress) {
        fetch(`${url}?timestamp=${new Date().getTime()}`, { method: "POST", mode: "cors", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: `functionId=raisepacket_collectScore&body={"type":${type},"ext":"${id}","appsign":1,"msgsign":2}&client=wh5` })
            .then(function(response) { return response.json() })
            .then(function(res) {
                if (type == 4) {
                    Toast(`逛商品 任务已完成 ${index + 1 } 次,进度 ${parseInt(progress)}%,继续进行中,请不要关闭本页面`)
                } else if (type == 2) {
                    Toast(`逛店铺 任务已完成 ${index + 1 } 次,进度 ${parseInt(progress)}%,继续进行中,请不要关闭本页面`)
                } else if (type == 5) {
                    Toast(`好玩互动 任务已完成 ${index + 1 } 次,进度 ${parseInt(progress)}%,继续进行中,请不要关闭本页面`)
                } else if (type == 10) {
                    Toast(`视频直播 任务已完成 ${index + 1 } 次,进度 ${parseInt(progress)}%,继续进行中,请不要关闭本页面`)
                } else if (type == 3) {
                    Toast(`精彩会场 任务已完成 ${index + 1 } 次,进度 ${parseInt(progress)}%,继续进行中,请不要关闭本页面`)
                    if (index == 2) {
                        setTimeout(() => {
                            Toast(`任务已全部完成,请打开京东app查看进度,有异常请重新运行本插件`, 1000000);
                        }, 1500)
                    }
                }
                // Toast(res.data.biz_msg);
            });
    }

    function start() {
        Toast2("任务进行中", 100000);
        //Toast3("商业广告:POS 0.55%不加3,正规一清不跳码,全国邮寄免费送,微信:tianpos", 100000);
        fetch(`${url}?${new Date().getTime()}`, { method: "POST", mode: "cors", credentials: "include", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: 'functionId=raisepacket_getShopAndProductList&body=&client=wh5' })
            .then(function(response) { return response.json() })
            .then(function(res) {
                if (res.code != 0) {
                    Toast("未登录,3秒后自动跳转到登录页面", 3000);
                    setTimeout(() => {
                        unlogin();
                    }, 3000)
                } else {
                    productList = res.data.result.productList;
                    shopList = res.data.result.shopList;
                    //Toast(`获取到任务,商品:${productList.length} 商品:${shopList.length}`);
                    autoProductTask();
                }
            });
    }

    function unlogin() {
        window.location.href = "https://passport.jd.com/new/login.aspx?ReturnUrl=https%3A%2F%2Fhappy.m.jd.com%2fbabelDiy%2fGZWVJFLMXBQVEBDQZWMY%2fXJf8bH6oXDWSgS91daDJzXh9bU7%2findex.html";
    }

    //逛商品
    function autoProductTask() {
        for (let i = 0, leng = productList.length; i < leng; i++) {
            (function(index) {
                setTimeout(() => {
                    let item = productList[index];
                    autoPost(item['id'], 4, index, (i + 1) / productList.length * 100);
                    //Toast(`商品总任务数:${leng} 当前任务数:${index + 1}`);
                    if (leng - 1 == index) {
                        setTimeout(() => {
                            autoShopTask();
                        }, 1000)
                    }
                }, index * 1500)
            })(i)
        }
    }
    //逛店铺
    function autoShopTask() {
        for (let i = 0, leng = shopList.length; i < leng; i++) {
            (function(index) {
                setTimeout(() => {
                    let item = shopList[index];
                    autoPost(item['id'], 2, index, (i + 1) / shopList.length * 100);
                    //Toast(`商铺总任务数:${leng} 当前任务数:${index + 1}`);
                    if (leng - 1 == index) {
                        setTimeout(() => {
                            autoPlay();
                        }, 1000)
                    }
                }, index * 1500)
            })(i)
        }
    }
    //好玩互动
    function autoPlay() {
        for (let i = 0, leng = 4; i < leng; i++) {
            (function(index) {
                setTimeout(() => {
                    autoPost(0, 5, index, (i + 1) / 4 * 100);
                    //Toast(`好玩互动:${leng} 当前任务数:${index + 1}`);
                    if (leng - 1 == index) {
                        setTimeout(() => {
                            autoInteract();
                        }, 1000)
                    }
                }, index * 1000)
            })(i)
        }
    }
    //视频直播
    function autoInteract() {
        for (let i = 0, leng = 4; i < leng; i++) {
            (function(index) {
                setTimeout(() => {
                    autoPost(0, 10, index, (i + 1) / 4 * 100);
                    //Toast(`视频直播:${leng} 当前任务数:${index + 1}`);
                    if (leng - 1 == index) {
                        setTimeout(() => {
                            autoShopping();
                        }, 1000)
                    }
                }, index * 1000)
            })(i)
        }
    }
    //精彩会场
    function autoShopping() {
        for (let i = 0, leng = 3; i < leng; i++) {
            (function(index) {
                setTimeout(() => {
                        autoPost(0, 3, index, (i + 1) / 3 * 100);
                        //Toast(`精彩会场:${leng} 当前任务数:${index + 1}`);
                    },
                    index * 1000)
            })(i)
        }
    }
    start();
})();