京东云无线宝积分查询

京东云无线宝路由器积分统计、积分兑换、积分查询脚本

目前为 2021-02-14 提交的版本。查看 最新版本

// ==UserScript==
// @name         京东云无线宝积分查询
// @namespace    http://blog.gobyte.cn/
// @version      0.32
// @description  京东云无线宝路由器积分统计、积分兑换、积分查询脚本
// @author       [email protected] 山岚
// @match        *://router-app-api.jdcloud.com/*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

/**
使用教程:
1.安装油猴子,或者复制JS代码到浏览器控制台运行:
京东云无线宝积分查询
https://gf.qytechs.cn/zh-CN/scripts/416281-%E4%BA%AC%E4%B8%9C%E4%BA%91%E6%97%A0%E7%BA%BF%E5%AE%9D%E7%A7%AF%E5%88%86%E6%9F%A5%E8%AF%A2

2.抓包获取Key
需要通过抓包“京东云无线宝”App获取。在header内,链接是:https://router-app-api.jdcloud.com/v1/开头的链接,具体请自行修改代码。

3.打开网址查看效果
https://router-app-api.jdcloud.com/v1

4.抓包工具
Android 系统 : HttpCanary
iOS 系统 :Stream


*/

    let wskey = "";
    let jdmt_sign = "";
    let jdmt_appkey = "";
    localStorage.setItem('wskey',wskey);
    localStorage.setItem('jdmt_sign',jdmt_sign);
    localStorage.setItem('jdmt_appkey',jdmt_appkey);

    //start
    let mac_arr = [];
    let sum = 0 ,exchanged = 0,thisDevice = 0,bodyStr="",todayPoint = null;
    let todayPointCount = 0;
    let allPointnts = 0;
    //所有未兑换的积分统计
    let allAmount = 0;
    //     let wskey = localStorage.getItem('wskey');
    //     let jdmt_sign = localStorage.getItem('jdmt_sign');
    //     let jdmt_appkey = localStorage.getItem('jdmt_appkey');

    //今日所有设备总积分
    fetch(`https://router-app-api.jdcloud.com/v1/regions/cn-north-1/todayPointDetail?sortField=today_point&sortDirection=DESC&pageSize=15&currentPage=1&time=${new Date().getTime()}`, {
        "credentials": "omit",
        "headers": {
            "content-type": "application/json",
            "jdmt-rx-appkey": jdmt_appkey,
            "jdmt-rx-sign": jdmt_sign,
            "wskey": wskey,
            "jdmt-rx-time": new Date().getTime(),
            "User-Agent": "Mozilla/5.0 (Linux; Android 9; MI 6 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36 (JBOX-APP; Android/2.0.4/8)",
        },
        "referrerPolicy": "no-referrer-when-downgrade",
        "body": null,
        "method": "GET",
        "mode": "cors"
    })
        .then(res => {
        return res.json();
    })
        .then(data => {
//                 console.log(`今日总积分:`,JSON.stringify(data));
        if(JSON.stringify(data).indexOf('权限') > -1){
            alert("抓包的Key值可能失效,请重新抓包!!!");
            console.error("抓包的Key值可能失效,请重新抓包!!!");
        }
        let pointInfos = data.result.pointInfos;

        //遍历所有设备
        for( let i = 0; i < pointInfos.length; i++ ){
            let mac = pointInfos[i].mac;
            //保存mac备用
            mac_arr.push(mac);
            //获取备注名;默认mac地址
            let name = localStorage.getItem(mac) ? localStorage.getItem(mac) : mac;
            todayPointCount += pointInfos[i].todayPointIncome;
            allPointnts += pointInfos[i].allPointIncome;
            // 所有的值以mac为id前缀,后面再添加不同值的名字。如:未兑换的积分id为:mac_amount,这样就会让id变得唯一且容易修改dom
            bodyStr += `<tr>
<td>备注:${name}</td>
<td style="display:none" name="${mac}">MAC:${mac}</td>
<td style="color: #03A9F4;" >${data.result.todayDate} 日积分:${pointInfos[i].todayPointIncome}</td>
<td style="display:none">缓存:<span id=''></span></td>
<td>未兑换:<span id='${mac}_amount'></span></td>
<td>总积分:${pointInfos[i].allPointIncome}</td>
<td><button id='${mac}_exchangeButton' class="exchangeButton" onClick="exchangePoint(this,'${mac}',${mac})">兑换</button></td>
<td><button onClick="markName(this,'${mac}')">备注</button></td>`;
        };
        document.querySelector("body").innerHTML = `<table cellpadding="10"> <tr> ${bodyStr} <td><button onClick="allExchangePoint(this)">全部兑换</button></td> </tr>
<tr><td></td><td><b>统计:</b>今日总积分:<span style="color:red;">${todayPointCount}</span></td> <td class="所有未兑换总积分">总计:<span style="color:blue;" id="allAmountId">${allAmount}</span></td><td class="所有总积分">总计:<span style="color:blue;">${allPointnts}</span></td></tr>
</table>`;

        //显示未兑换的积分
        //查询所有账户信息和积分
        mac_arr.map(
            mac =>{
                let routerAccountInfo_url = `https://router-app-api.jdcloud.com/v1/regions/cn-north-1/routerAccountInfo?mac=${mac}`;
                fetch(routerAccountInfo_url, {
                    "headers": {
                        "content-type": "application/json",
                        "jdmt-rx-appkey": jdmt_appkey,
                        "jdmt-rx-sign": jdmt_sign,
                        "wskey": wskey,
                        "Referer": "http://guanli.luyou.360.cn/new_index.htm"
                    },
                    "referrerPolicy": "no-referrer-when-downgrade",
                    "body": null,
                    "method": "get",
                    "mode": "cors"
                })
                    .then(res => {
                    return res.json();
                }).then( data => {
                    //统计未兑换的设备积分
                    allAmountFun(data.result.accountInfo.amount);
                    document.getElementById(`${mac}_amount`).textContent = data.result.accountInfo.amount;
                    document.getElementById(`${mac}_exchangeButton`).attributes.onclick.value = `exchangePoint(this,'${mac}',${data.result.accountInfo.amount})`;
                });
            }
        );
    });

    //     ==========================
    //给所有未兑换积分统计dom赋值
    //统计未兑换总积分函数
    function allAmountFun(n){
        allAmount += n;
        document.getElementById('allAmountId').textContent = allAmount;
    }
    //兑换积分函数
    window.exchangePoint= function (obj,mac,point) {
        console.log("外部调用",mac,point);
        point = window.prompt("请输入需要兑换的积分",point);
        if(!point) return;
        //构造请求体
        const pointExchangeBody = {
            "pointExchangeReqVo": {
                "deviceId": mac,
                "pointAmount": point,
                "source": 3
            },
            "regionId": "cn-north-1"
        };

        fetch("https://router-app-api.jdcloud.com/v1/regions/cn-north-1/point:exchange", {
            "headers": {
                "content-type": "application/json",
                "wskey": wskey,
                "User-Agent": "",
            },
            "body": JSON.stringify(pointExchangeBody),
            "method": "POST",
            "mode": "cors"
        })
            .then(res => {
            return res.json();
        })
            .then(data => {
            if(data.code === 200){
                alert("兑换成功!");
            }else{
                alert("失败!请按下F12 - console (控制台)内截图给开发者");
                console.error(data);
            }
        });
    }

    //备注函数
    window.markName=(obj,mac)=>{
        let name = window.prompt("请输入备注名","")
        if(!name) return;
        localStorage.setItem(mac,name);
        window.location.reload();
    }

    //-1
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址