├── README.md ├── common.js ├── ele_sendNotify.js ├── elm_2048.js ├── elm_assest.js ├── elm_checkCK.js ├── elm_cycg.js ├── elm_elge.js ├── elm_hctmm.js ├── elm_lyb.js ├── elm_mhxy.js ├── elm_mst.js └── ql.js /README.md: -------------------------------------------------------------------------------- 1 | ### kolikow 2 | #### 拉库 3 | 无代理:ql repo https://github.com/kolikow/ele.git "^elm" "" "common|ql|ele_sendNotify" 4 | 5 | 代理:ql repo https://kkgithub.com/kolikow/ele.git "^elm" "" "common|ql|ele_sendNotify" 6 | #### 声明:此库所有内容仅用于个人学习!!! 7 | 8 | -------------------------------------------------------------------------------- /common.js: -------------------------------------------------------------------------------- 1 | /* 2 | 拉库:ql repo https://kkgithub.com/kolikow/ele.git "^elm" "" "common|ql|ele_sendNotify" 3 | */ 4 | const _0x57ecf6 = ["iPad;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;2346663656561603-4353564623932316;network/wifi;model/ONEPLUS A5010;addressid/0;aid/2dfceea045ed292a;oaid/;osVer/29;appBuild/1436;psn/BS6Y9SAiw0IpJ4ro7rjSOkCRZTgR3z2K|10;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/10.5;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "iPhone;3.7.0;14.1;59d6ae6e8387bd09fe046d5b8918ead51614e80a;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.26;apprpd/;ref/JDLTSubMainPageViewController;psq/0;ads/;psn/59d6ae6e8387bd09fe046d5b8918ead51614e80a|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.1;Mozilla/5.0 (iPhone; CPU iPhone OS 14_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.5;22d679c006bf9c087abf362cf1d2e0020ebb8798;network/wifi;ADID/10857A57-DDF8-4A0D-A548-7B8F43AC77EE;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,1;addressid/2378947694;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/15.7;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/6;ads/;psn/22d679c006bf9c087abf362cf1d2e0020ebb8798|22;jdv/0|kong|t_1000170135|tuiguang|notset|1614153044558|1614153044;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;2616935633265383-5333463636261326;network/UNKNOWN;model/M2007J3SC;addressid/1840745247;aid/ba9e3b5853dccb1b;oaid/371d8af7dd71e8d5;osVer/29;appBuild/1436;psn/t7JmxZUXGkimd4f9Jdul2jEeuYLwxPrm|8;psq/6;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.6;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36", "iPhone;3.7.0;14.3;d7beab54ae7758fa896c193b49470204fbb8fce9;network/4g;ADID/97AD46C9-6D49-4642-BF6F-689256673906;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;9;D246836333735-3264353430393;network/4g;model/MIX 2;addressid/138678023;aid/bf8bcf1214b3832a;oaid/308540d1f1feb2f5;osVer/28;appBuild/1436;psn/Z/rGqfWBY/h5gcGFnVIsRw==|16;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/13.7;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/xiaomi;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2 Build/PKQ1.190118.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36", "iPhone;3.7.0;14.4;eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5;network/wifi;ADID/5603541B-30C1-4B5C-A782-20D0B569D810;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/1041002757;hasOCPay/0;appBuild/101;supportBestPay/0;pv/34.6;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/eb5a9e7e596e262b4ffb3b6b5c830984c8a5c0d5|44;jdv/0|androidapp|t_335139774|appshare|CopyURL|1612612940307|1612612944;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;21631ed983b3e854a3154b0336413825ad0d6783;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.5;500a795cb2abae60b877ee4a1930557a800bef1c;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPad;3.7.0;14.4;f5e7b7980fb50efc9c294ac38653c1584846c3db;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;19fef5419f88076c43f5317eabe20121d52c6a61;network/wifi;ADID/00000000-0000-0000-0000-000000000000;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/3430850943;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.4;apprpd/;ref/JDLTSubMainPageViewController;psq/3;ads/;psn/19fef5419f88076c43f5317eabe20121d52c6a61|16;jdv/0|kong|t_1001327829_|jingfen|f51febe09dd64b20b06bc6ef4c1ad790#/|1614096460311|1614096511;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;12.2;f995bc883282f7c7ea9d7f32da3f658127aa36c7;network/4g;ADID/9F40F4CA-EA7C-4F2E-8E09-97A66901D83E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,4;addressid/525064695;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/11.11;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/f995bc883282f7c7ea9d7f32da3f658127aa36c7|22;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 12.2;Mozilla/5.0 (iPhone; CPU iPhone OS 12_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;5366566313931326-6633931643233693;network/wifi;model/Mi9 Pro 5G;addressid/0;aid/5fe6191bf39a42c9;oaid/e3a9473ef6699f75;osVer/29;appBuild/1436;psn/b3rJlGi AwLqa9AqX7Vp0jv4T7XPMa0o|5;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; Mi9 Pro 5G Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045135 Mobile Safari/537.36", "iPhone;3.7.0;14.4;4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/666624049;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/54.11;apprpd/MessageCenter_MessageMerge;ref/MessageCenterController;psq/10;ads/;psn/4e6b46913a2e18dd06d6d69843ee4cdd8e033bc1|101;jdv/0|kong|t_2010804675_|jingfen|810dab1ba2c04b8588c5aa5a0d44c4bd|1614183499;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.2;c71b599e9a0bcbd8d1ad924d85b5715530efad06;network/wifi;ADID/751C6E92-FD10-4323-B37C-187FD0CF0551;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,8;addressid/4053561885;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/263.8;apprpd/;ref/JDLTSubMainPageViewController;psq/2;ads/;psn/c71b599e9a0bcbd8d1ad924d85b5715530efad06|481;jdv/0|kong|t_1001610202_|jingfen|3911bea7ee2f4fcf8d11fdf663192bbe|1614157052210|1614157056;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.2;Mozilla/5.0 (iPhone; CPU iPhone OS 14_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;2d306ee3cacd2c02560627a5113817ebea20a2c9;network/4g;ADID/A346F099-3182-4889-9A62-2B3C28AB861E;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.35;apprpd/Allowance_Registered;ref/JDLTTaskCenterViewController;psq/0;ads/;psn/2d306ee3cacd2c02560627a5113817ebea20a2c9|2;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;28355aff16cec8bcf3e5728dbbc9725656d8c2c2;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/833058617;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.10;apprpd/;ref/JDLTWebViewController;psq/9;ads/;psn/28355aff16cec8bcf3e5728dbbc9725656d8c2c2|5;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.5;24ddac73a3de1b91816b7aedef53e97c4c313733;network/4g;ADID/598C6841-76AC-4512-AA97-CBA940548D70;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone11,6;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/12.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/24ddac73a3de1b91816b7aedef53e97c4c313733|23;jdv/0|kong|t_1000170135|tuiguang|notset|1614126110904|1614126110;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/25239372;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/8.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/d7732ba60c8ff73cc3f5ba7290a3aa9551f73a1b|14;jdv/0|kong|t_1001226363_|jingfen|5713234d1e1e4893b92b2de2cb32484d|1614182989528|1614182992;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;ca1a32afca36bc9fb37fd03f18e653bce53eaca5;network/wifi;ADID/3AF380AB-CB74-4FE6-9E7C-967693863CA3;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone8,1;addressid/138323416;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/72.12;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/ca1a32afca36bc9fb37fd03f18e653bce53eaca5|109;jdv/0|kong|t_1000536212_|jingfen|c82bfa19e33a4269a5884ffc614790f4|1614141246;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;7346933333666353-8333366646039373;network/wifi;model/ONEPLUS A5010;addressid/138117973;aid/7d933f6583cfd097;oaid/;osVer/29;appBuild/1436;psn/T/eqfRSwp8VKEvvXyEunq09Cg2MUkiQ5|17;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/11.4;jdv/0|kong|t_1001849073_|jingfen|495a47f6c0b8431c9d460f61ad2304dc|1614084403978|1614084407;ref/HomeFragment;partner/oppo;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A5010 Build/QKQ1.191014.012; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "android;3.7.0;11;4626269356736353-5353236346334673;network/wifi;model/M2006J10C;addressid/0;aid/dbb9e7655526d3d7;oaid/66a7af49362987b0;osVer/30;appBuild/1436;psn/rQRQgJ 4 S3qkq8YDl28y6jkUHmI/rlX|3;psq/4;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/3.4;jdv/;ref/HomeFragment;partner/xiaomi;apprpd/Home_Main;eufv/1;Mozilla/5.0 (Linux; Android 11; M2006J10C Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045513 Mobile Safari/537.36", "iPhone;3.7.0;14.4;78fc1d919de0c8c2de15725eff508d8ab14f9c82;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,1;addressid/137829713;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/23.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/78fc1d919de0c8c2de15725eff508d8ab14f9c82|34;jdv/0|iosapp|t_335139774|appshare|Wxfriends|1612508702380|1612534293;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;0373263343266633-5663030363465326;network/wifi;model/Redmi Note 7;addressid/590846082;aid/07b34bf3e6006d5b;oaid/17975a142e67ec92;osVer/29;appBuild/1436;psn/OHNqtdhQKv1okyh7rB3HxjwI00ixJMNG|4;psq/3;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.3;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36", "android;3.7.0;10;3636566623663623-1693635613166646;network/wifi;model/ASUS_I001DA;addressid/1397761133;aid/ccef2fc2a96e1afd;oaid/;osVer/29;appBuild/1436;psn/T8087T0D82PHzJ4VUMGFrfB9dw4gUnKG|76;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/73.5;jdv/0|kong|t_1002354188_|jingfen|2335e043b3344107a2750a781fde9a2e#/|1614097081426|1614097087;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/yingyongbao;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ASUS_I001DA Build/QKQ1.190825.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,2;addressid/138419019;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.7;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/6;ads/;psn/4ee6af0db48fd605adb69b63f00fcbb51c2fc3f0|9;jdv/0|direct|-|none|-|1613705981655|1613823229;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/wifi;ADID/F9FD7728-2956-4DD1-8EDD-58B07950864C;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;ADID/5D306F0D-A131-4B26-947E-166CCB9BFFFF;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPad;3.7.0;14.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad8,9;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/1.20;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/5;ads/;psn/d9f5ddaa0160a20f32fb2c8bfd174fae7993c1b4|3;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.5;Mozilla/5.0 (iPad; CPU OS 14_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/wifi;ADID/31548A9C-8A01-469A-B148-E7D841C91FD0;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/10.5;apprpd/;ref/JDLTSubMainPageViewController;psq/4;ads/;psn/a858fb4b40e432ea32f80729916e6c3e910bb922|12;jdv/0|direct|-|none|-|1613898710373|1613898712;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;3346332626262353-1666434336539336;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "android;3.7.0;8.1.0;8363834353530333132333132373-43D2930366035323639333662383;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36", "android;3.7.0;11;1343467336264693-3343562673463613;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36", "android;3.7.0;10;8353636393732346-6646931673935346;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "iPhone;3.7.0;14.4;6d343c58764a908d4fa56609da4cb3a5cc1396d3;network/wifi;ADID/4965D884-3E61-4C4E-AEA7-9A8CE3742DA7;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.6.1;4606ddccdfe8f343f8137de7fea7f91fc4aef3a3;network/4g;ADID/C6FB6E20-D334-45FA-818A-7A4C58305202;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone10,1;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/5.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/4606ddccdfe8f343f8137de7fea7f91fc4aef3a3|5;jdv/0|iosapp|t_335139774|liteshare|Qqfriends|1614206359106|1614206366;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.6.1;Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;3b6e79334551fc6f31952d338b996789d157c4e8;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/138051400;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/14.34;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/12;ads/;psn/3b6e79334551fc6f31952d338b996789d157c4e8|46;jdv/0|kong|t_1001707023_|jingfen|e80d7173a4264f4c9a3addcac7da8b5d|1613837384708|1613858760;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;1346235693831363-2373837393932673;network/wifi;model/LYA-AL00;addressid/3321567203;aid/1d2e9816278799b7;oaid/00000000-0000-0000-0000-000000000000;osVer/29;appBuild/1436;psn/45VUZFTZJkhP5fAXbeBoQ0 O2GCB I|7;psq/5;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/5.8;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1614066210320|1614066219;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/huawei;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; LYA-AL00 Build/HUAWEILYA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36", "iPhone;3.7.0;14.3;c2a8854e622a1b17a6c56c789f832f9d78ef1ba7;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPhone12,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.9;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/8;ads/;psn/c2a8854e622a1b17a6c56c789f832f9d78ef1ba7|6;jdv/0|direct|-|none|-|1613541016735|1613823566;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;9;;network/wifi;model/MIX 2S;addressid/;aid/f87efed6d9ed3c65;oaid/94739128ef9dd245;osVer/28;appBuild/1436;psn/R7wD/OWkQjYWxax1pDV6kTIDFPJCUid7C/nl2hHnUuI=|3;psq/13;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 9;osv/9;pv/1.42;jdv/;ref/activityId=8a8fabf3cccb417f8e691b6774938bc2;partner/xiaomi;apprpd/jsbqd_home;eufv/1;Mozilla/5.0 (Linux; Android 9; MIX 2S Build/PKQ1.180729.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36", "iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;network/wifi;Mozilla/5.0 (Linux; Android 10; Redmi Note 7 Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.152 Mobile Safari/537.36", "iPhone;3.7.0;14.4;network/3g;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/1;lang/zh_CN;model/iPad6,3;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/231.11;pap/JA2020_3112531|3.7.0|IOS 14.4;apprpd/;psn/f5e7b7980fb50efc9c294ac38653c1584846c3db|305;usc/kong;jdv/0|kong|t_1000170135|tuiguang|notset|1613606450668|1613606450;umd/tuiguang;psq/2;ucp/t_1000170135;app_device/IOS;utr/notset;ref/JDLTRedPacketViewController;adk/;ads/;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,1;addressid/669949466;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/9.11;apprpd/;ref/JDLTSubMainPageViewController;psq/10;ads/;psn/500a795cb2abae60b877ee4a1930557a800bef1c|11;jdv/;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/3g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,4;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.47;apprpd/;ref/JDLTSubMainPageViewController;psq/8;ads/;psn/21631ed983b3e854a3154b0336413825ad0d6783|9;jdv/0|direct|-|none|-|1614150725100|1614225882;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone13,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/3.15;apprpd/;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fchat%2Findex.action%3Fentry%3Djd_m_JiSuCommodity%26pid%3D7763388%26lng%3D118.159665%26lat%3D24.504633%26sid%3D31cddc2d58f6e36bf2c31c4e8a79767w%26un_area%3D16_1315_3486_0;psq/12;ads/;psn/c10e0db6f15dec57a94637365f4c3d43e05bbd48|4;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/2813715704;pv/67.38;apprpd/MyJD_Main;ref/https%3A%2F%2Fh5.m.jd.com%2FbabelDiy%2FZeus%2F2ynE8QDtc2svd36VowmYWBzzDdK6%2Findex.html%3Flng%3D103.957532%26lat%3D30.626962%26sid%3D4fe8ef4283b24723a7bb30ee87c18b2w%26un_area%3D22_1930_49324_52512;psq/4;ads/;psn/5aef178f95931bdbbde849ea9e2fc62b18bc5829|127;jdv/0|direct|-|none|-|1612588090667|1613822580;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,2;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/6.28;apprpd/;ref/JDLTRedPacketViewController;psq/3;ads/;psn/d7beab54ae7758fa896c193b49470204fbb8fce9|8;jdv/0|kong|t_1001707023_|jingfen|79ad0319fa4d47e38521a616d80bc4bd|1613800945610|1613824900;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,1;addressid/3104834020;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/c633e62b5a4ad0fdd93d9862bdcacfa8f3ecef63|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.3;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone10,1;addressid/1346909722;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/30.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/40d4d4323eb3987226cae367d6b0d8be50f2c7b3|39;jdv/0|kong|t_1000252057_0|tuiguang|eba7648a0f4445aa9cfa6f35c6f36e15|1613995717959|1613995723;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.3;Mozilla/5.0 (iPhone; CPU iPhone OS 14_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone11,6;addressid/138164461;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/7.8;apprpd/;ref/JDLTSubMainPageViewController;psq/7;ads/;psn/d40e5d4a33c100e8527f779557c347569b49c304|7;jdv/0|kong|t_1001226363_|jingfen|3bf5372cb9cd445bbb270b8bc9a34f00|1608439066693|1608439068;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;13.5;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,2;addressid/2237496805;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/13.6;apprpd/;ref/JDLTSubMainPageViewController;psq/5;ads/;psn/48e495dcf5dc398b4d46b27e9f15a2b427a154aa|15;jdv/0|direct|-|none|-|1613354874698|1613952828;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 13.5;Mozilla/5.0 (iPhone; CPU iPhone OS 13_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "android;3.7.0;10;network/wifi;model/ONEPLUS A6000;addressid/0;aid/3d3bbb25af44c59c;oaid/;osVer/29;appBuild/1436;psn/ECbc2EqmdSa7mDF1PS1GSrV/Tn7R1LS1|6;psq/8;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/2.67;jdv/0|direct|-|none|-|1613822479379|1613991194;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/oppo;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 10; ONEPLUS A6000 Build/QKQ1.190716.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "android;3.7.0;8.1.0;network/wifi;model/16th Plus;addressid/0;aid/f909e5f2c464c7c6;oaid/;osVer/27;appBuild/1436;psn/c21YWvVr77Hn6 pOZfxXGY4TZrre1 UOL5hcPbCEDMo=|3;psq/10;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 8.1.0;osv/8.1.0;pv/2.15;jdv/;ref/com.jd.jdlite.lib.personal.view.fragment.JDPersonalFragment;partner/jsxdlyqj09;apprpd/MyJD_Main;eufv/1;Mozilla/5.0 (Linux; Android 8.1.0; 16th Plus Build/OPM1.171019.026; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045514 Mobile Safari/537.36", "android;3.7.0;11;network/wifi;model/Mi 10 Pro;addressid/0;aid/14d7cbd934eb7dc1;oaid/335f198546eb3141;osVer/30;appBuild/1436;psn/ZcQh/Wov sNYfZ6JUjTIUBu28 KT0T3u|1;psq/24;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 11;osv/11;pv/1.24;jdv/;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/xiaomi;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 11; Mi 10 Pro Build/RKQ1.200826.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile Safari/537.36", "android;3.7.0;10;network/wifi;model/MI 8;addressid/1969998059;aid/8566972dfd9a795d;oaid/4a8b773c3e307386;osVer/29;appBuild/1436;psn/PhYbUtCsCJo r 1b8hwxjnY8rEv5S8XC|383;psq/14;adk/;ads/;pap/JA2020_3112531|3.7.0|ANDROID 10;osv/10;pv/374.14;jdv/0|iosapp|t_335139774|liteshare|CopyURL|1609306590175|1609306596;ref/com.jd.jdlite.lib.jdlitemessage.view.activity.MessageCenterMainActivity;partner/jsxdlyqj09;apprpd/MessageCenter_MessageMerge;eufv/1;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/66.0.3359.126 MQQBrowser/6.2 TBS/045140 Mobile Safari/537.36", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone8,4;addressid/1477231693;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/21.15;apprpd/MyJD_Main;ref/https%3A%2F%2Fgold.jd.com%2F%3Flng%3D0.000000%26lat%3D0.000000%26sid%3D4584eb84dc00141b0d58e000583a338w%26un_area%3D19_1607_3155_62114;psq/0;ads/;psn/2c822e59db319590266cc83b78c4a943783d0077|46;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone9,1;addressid/70390480;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.24;apprpd/MyJD_Main;ref/https%3A%2F%2Fjdcs.m.jd.com%2Fafter%2Findex.action%3FcategoryId%3D600%26v%3D6%26entry%3Dm_self_jd;psq/4;ads/;psn/6d343c58764a908d4fa56609da4cb3a5cc1396d3|17;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPhone;3.7.0;14.4;network/4g;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPhone12,3;hasOCPay/0;appBuild/1017;supportBestPay/0;addressid/;pv/3.49;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/7;ads/;psn/9e0e0ea9c6801dfd53f2e50ffaa7f84c7b40cd15|6;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPhone; CPU iPhone OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148", "iPad;3.7.0;14.4;network/wifi;hasUPPay/0;pushNoticeIsOpen/0;lang/zh_CN;model/iPad7,5;addressid/;hasOCPay/0;appBuild/1017;supportBestPay/0;pv/4.14;apprpd/MyJD_Main;ref/MyJdMTAManager;psq/3;ads/;psn/956c074c769cd2eeab2e36fca24ad4c9e469751a|8;jdv/0|;adk/;app_device/IOS;pap/JA2020_3112531|3.7.0|IOS 14.4;Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148"]; 5 | const _0x3a1b91 = require("request"); 6 | const { 7 | "sendNotify": sendNotify 8 | } = require("./ele_sendNotify.js"); 9 | const _0xhicong = require('md5'); 10 | const _0x355d3c = require("child_process")["exec"]; 11 | const _0x483607 = process["env"]["HOST"]; 12 | const _0xaaf3e8 = "网络异常,跳过"; 13 | function _0x533bff(_0x4d15c4 = 0, _0x14a025 = 100) { 14 | return Math["min"](Math["floor"](_0x4d15c4 + Math["random"]() * (_0x14a025 - _0x4d15c4)), _0x14a025); 15 | } 16 | const _0x5f1259 = _0x57ecf6[_0x533bff(0, _0x57ecf6["length"] - 1)]; 17 | async function _0x5670f4(_0x3551bc, _0x3e2152) { 18 | const _0x5b285e = _0x10d424(_0x3551bc); 19 | if (!_0x5b285e["has"]("wxUid")) { 20 | console["log"]("没有获取到推送 uid,不推送消息\n"); 21 | } else { 22 | await sendNotify("饿了么抢券成功推送", _0x3e2152, { 23 | 'uid': _0x5b285e["get"]("wxUid") 24 | }); 25 | } 26 | } 27 | const _0x249dba = async (_0x265b39, _0x3322d4, _0x2fd662 = 1, _0x47f1da = 5) => { 28 | return _0xhicong(_0x265b39); 29 | }; 30 | const _0x2f0cce = async (_0x3de188, _0x1423b5, _0xa811ea, _0x4596c2 = 1, _0x1cadb2 = 5) => { 31 | const _0x26d5e7 = _0x458c4f(_0x3de188); 32 | const _0x3ee20f = _0x26d5e7["split"]('_')[0]; 33 | const _0x98225c = _0x3ee20f + _0x1423b5 34 | return _0xhicong(_0x98225c); 35 | }; 36 | function _0x458c4f(_0x3ae020) { 37 | if (!_0x3ae020) { 38 | return '-1'; 39 | } 40 | for (var _0xfd333b = _0x3ae020["split"](';'), _0x2e79fd = 0; _0x2e79fd < _0xfd333b["length"]; _0x2e79fd++) { 41 | var _0x184641 = _0xfd333b[_0x2e79fd]["split"]('='); 42 | if ([" _m_h5_tk", "_m_h5_tk"]["includes"](_0x184641[0])) { 43 | return _0x184641[1]; 44 | } 45 | } 46 | return '-1'; 47 | } 48 | const _0x5d2ff1 = _0x342f94 => { 49 | return new Promise(_0x13ba7b => { 50 | setTimeout(() => { 51 | _0x13ba7b(); 52 | }, _0x342f94 * 1000); 53 | }); 54 | }; 55 | function _0x2c737d(_0x46b552, _0x1a3d50, _0x41088c, _0x2ff75b, _0x237bbb = 5) { 56 | const _0x7d5e97 = { 57 | "url": "https://waimai-guide.ele.me/h5/mtop.alsc.personal.queryminecenter/1.0/?jsv=2.6.2&appKey=12574478", 58 | "headers": {} 59 | }; 60 | _0x7d5e97["headers"]["Cookie"] = _0x46b552; 61 | _0x7d5e97["headers"]["method"] = "GET"; 62 | _0x7d5e97["headers"]["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"; 63 | return _0x5bcbae(_0x29f4bf => { 64 | try { 65 | _0x3a1b91(_0x7d5e97, async (_0x32ce50, _0x4a8b06, _0x1a37d5) => { 66 | if (!_0x32ce50 && _0x4a8b06["statusCode"] === 200) { 67 | const _0x16201b = JSON["stringify"](_0x4a8b06["headers"]["set-cookie"]); 68 | const _0x424891 = /_m_h5_tk=(\S*);/; 69 | const _0x2e8eab = _0x16201b["match"](_0x424891)[1]; 70 | const _0x42d44a = " _m_h5_tk=" + _0x2e8eab["split"](';')[0]; 71 | const _0x297388 = /_m_h5_tk_enc=(\S*);/; 72 | const _0x59db87 = _0x16201b["match"](_0x297388)[1]; 73 | const _0x4c64f4 = " _m_h5_tk_enc=" + _0x59db87["split"](';')[0]; 74 | _0x46b552 = _0xebb331(_0x42d44a, _0x4c64f4, _0x46b552); 75 | if (_0x237bbb <= 0) { 76 | console["log"]('第', _0x1a3d50 + 1, "cookie存在异常,请检查"); 77 | _0x29f4bf(null); 78 | } else { 79 | _0x29f4bf(await _0x539aac(_0x46b552, _0x1a3d50, _0x41088c, _0x2ff75b, _0x237bbb - 1)); 80 | } 81 | } else { 82 | _0x29f4bf(null); 83 | } 84 | }); 85 | } catch (_0x22440b) { 86 | console["log"](_0xaaf3e8); 87 | } 88 | }); 89 | } 90 | function _0xebb331(_0x3845ef, _0x32a055, _0x3ad86c) { 91 | let _0x1a02b5 = false; 92 | for (var _0x42defc = _0x3ad86c["split"](';'), _0x1ec553 = 0; _0x1ec553 < _0x42defc["length"]; _0x1ec553++) { 93 | var _0x2ae628 = _0x42defc[_0x1ec553]["split"]('='); 94 | if (["_m_h5_tk", " _m_h5_tk"]["indexOf"](_0x2ae628[0]) > -1) { 95 | _0x1a02b5 = true; 96 | _0x42defc[_0x1ec553] = _0x3845ef; 97 | } 98 | if ([" _m_h5_tk_enc", "_m_h5_tk_enc"]["indexOf"](_0x2ae628[0]) > -1) { 99 | _0x42defc[_0x1ec553] = _0x32a055; 100 | _0x1a02b5 = true; 101 | } 102 | } 103 | var _0x4b1413 = ''; 104 | if (_0x1a02b5) { 105 | for (_0x1ec553 = 0; _0x1ec553 < _0x42defc["length"]; _0x1ec553++) { 106 | _0x4b1413 += _0x42defc[_0x1ec553]; 107 | _0x1ec553 != _0x42defc["length"] - 1 && (_0x4b1413 += ';'); 108 | } 109 | } else { 110 | _0x4b1413 = _0x3ad86c + ';' + _0x3845ef + ';' + _0x32a055; 111 | } 112 | _0x3ad86c = _0x4b1413; 113 | return _0x3ad86c; 114 | } 115 | const _0x539aac = async (_0x408327, _0x519316, _0x157f81, _0x2554be, _0x67dc3e = 5) => { 116 | _0x408327 = _0x408327["replace"](/\s/g, ''); 117 | let _0x5ab20b = _0x458c4f(_0x408327); 118 | _0x5ab20b = _0x5ab20b["split"]('_')[0]; 119 | let _0x553c43 = {}; 120 | let _0x497a9a = JSON["stringify"](_0x553c43); 121 | let _0x104808 = 12574478; 122 | let _0x3a9106 = new Date()["getTime"](); 123 | let _0x8b73a1 = await _0x249dba(_0x5ab20b + '&' + _0x3a9106 + '&' + _0x104808 + '&' + _0x497a9a, _0x157f81, _0x2554be); 124 | const _0x348401 = { 125 | "Cookie": _0x408327, 126 | "User-Agent": _0x5f1259 127 | }; 128 | const _0x56e25b = { 129 | "url": "https://shopping.ele.me/h5/mtop.alsc.user.session.ele.check/1.0/?H5Request=true&api=mtop.alsc.user.session.ele.check&appKey=12574478&data={}&dataType=json&jsv=2.6.2&mainDomain=ele.me&pageDomain=ele.me&sign=" + _0x8b73a1 + "&subDomain=shopping&t=" + _0x3a9106 + "&timeout=5000&type=json&v=1.0", 130 | "method": "GET", 131 | "headers": _0x348401 132 | }; 133 | return _0x5bcbae(_0x1a911e => { 134 | try { 135 | _0x3a1b91(_0x56e25b, async (_0x28b2ee, _0x120d7b, _0x53e620) => { 136 | if (!_0x28b2ee && _0x120d7b["statusCode"] === 200) { 137 | const _0x267557 = JSON["parse"](_0x53e620); 138 | if (_0x267557["data"]["errorCode"] === "000502") { 139 | console["log"]('第', _0x519316 + 1, "账号失效!请重新登录!!!😭"); 140 | _0x1a911e(null); 141 | } else { 142 | if (_0x67dc3e <= 0) { 143 | console["log"]('第', _0x519316 + 1, "cookie存在异常,请检查"); 144 | _0x1a911e(null); 145 | } 146 | if (_0x267557["ret"]["includes"]("FAIL_SYS_TOKEN_EXOIRED::令牌过期") || _0x267557["ret"]["includes"]("FAIL_SYS_TOKEN_EMPTY::令牌为空")) { 147 | _0x1a911e(await _0x2c737d(_0x408327, _0x519316, _0x157f81, _0x2554be, _0x67dc3e - 1)); 148 | } else { 149 | _0x1a911e(_0x408327); 150 | } 151 | } 152 | } else { 153 | if (_0x28b2ee && _0x28b2ee["message"]["indexOf"]("Invalid character in header content [\"Cookie\"]") !== -1) { 154 | console["log"]('第', _0x519316 + 1, "账号ck不合法,请确认!!!"); 155 | } else { 156 | console["log"](_0x28b2ee); 157 | } 158 | _0x1a911e(null); 159 | } 160 | }); 161 | } catch (_0x3d4002) { 162 | console["log"](_0xaaf3e8); 163 | } 164 | }); 165 | }; 166 | const _0x115399 = async (_0x32fb0a, _0x2a2505, _0x21b5df, _0xecae50 = 5) => { 167 | _0x32fb0a = _0x32fb0a["replace"](/\s/g, ''); 168 | let _0x32be51 = _0x458c4f(_0x32fb0a); 169 | _0x32be51 = _0x32be51["split"]('_')[0]; 170 | let _0x26a2f6 = {}; 171 | let _0x42444c = JSON["stringify"](_0x26a2f6); 172 | let _0x1d9ed6 = 12574478; 173 | let _0x80454c = new Date()["getTime"](); 174 | let _0x142367 = await _0x249dba(_0x32be51 + '&' + _0x80454c + '&' + _0x1d9ed6 + '&' + _0x42444c, _0x2a2505, _0x21b5df); 175 | const _0x1d09f2 = { 176 | "Cookie": _0x32fb0a, 177 | "User-Agent": _0x5f1259 178 | }; 179 | const _0x4a3370 = { 180 | "url": "https://shopping.ele.me/h5/mtop.alsc.user.session.ele.check/1.0/?H5Request=true&api=mtop.alsc.user.session.ele.check&appKey=12574478&data={}&dataType=json&jsv=2.6.2&mainDomain=ele.me&pageDomain=ele.me&sign=" + _0x142367 + "&subDomain=shopping&t=" + _0x80454c + "&timeout=5000&type=json&v=1.0", 181 | "method": "GET", 182 | "headers": _0x1d09f2 183 | }; 184 | return _0x5bcbae(_0x30d5ae => { 185 | try { 186 | _0x3a1b91(_0x4a3370, async (_0x25f556, _0x499eca, _0x5d5a78) => { 187 | if (!_0x25f556 && _0x499eca["statusCode"] === 200) { 188 | const _0x3c3ff6 = JSON["parse"](_0x5d5a78); 189 | if (_0x3c3ff6["data"]["errorCode"] === "000502") { 190 | _0x30d5ae(null); 191 | } else { 192 | if (_0xecae50 <= 0) { 193 | console["log"]("cookie 存在异常,请确认"); 194 | _0x30d5ae(null); 195 | } 196 | if (_0x3c3ff6["ret"]["includes"]("FAIL_SYS_TOKEN_EXOIRED::令牌过期") || _0x3c3ff6["ret"]["includes"]("FAIL_SYS_TOKEN_EMPTY::令牌为空")) { 197 | _0x30d5ae(await _0x45baa7(_0x32fb0a, _0x2a2505, _0x21b5df, _0xecae50 - 1)); 198 | } else { 199 | _0x30d5ae(_0x32fb0a); 200 | } 201 | } 202 | } else { 203 | if (_0x25f556 && _0x25f556["message"]["indexOf"]("Invalid character in header content [\"Cookie\"]") !== -1) { 204 | console["log"]("被助力账号ck不合法,请确认!!!"); 205 | } else { 206 | console["log"]("网络异常"); 207 | } 208 | _0x30d5ae(null); 209 | } 210 | }); 211 | } catch (_0x15120b) { 212 | console["log"](_0xaaf3e8); 213 | } 214 | }); 215 | }; 216 | function _0x45baa7(_0x5cb9f9, _0x57561b, _0x4ecc31, _0x481869 = 5) { 217 | const _0x3f38e3 = { 218 | "url": "https://waimai-guide.ele.me/h5/mtop.alsc.personal.queryminecenter/1.0/?jsv=2.6.2&appKey=12574478", 219 | "headers": {} 220 | }; 221 | _0x3f38e3["headers"]["Cookie"] = _0x5cb9f9; 222 | _0x3f38e3["headers"]["method"] = "GET"; 223 | _0x3f38e3["headers"]["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36"; 224 | return _0x5bcbae(_0x547e2a => { 225 | try { 226 | _0x3a1b91(_0x3f38e3, async (_0x5732e2, _0x290935, _0x55bf73) => { 227 | if (!_0x5732e2 && _0x290935["statusCode"] === 200) { 228 | const _0xa625b0 = JSON["stringify"](_0x290935["headers"]["set-cookie"]); 229 | const _0x256487 = /_m_h5_tk=(\S*);/; 230 | const _0x5afdf4 = _0xa625b0["match"](_0x256487)[1]; 231 | const _0x51de6a = " _m_h5_tk=" + _0x5afdf4["split"](';')[0]; 232 | const _0x405720 = /_m_h5_tk_enc=(\S*);/; 233 | const _0x8d90f7 = _0xa625b0["match"](_0x405720)[1]; 234 | const _0x1dfbcf = " _m_h5_tk_enc=" + _0x8d90f7["split"](';')[0]; 235 | _0x5cb9f9 = _0xebb331(_0x51de6a, _0x1dfbcf, _0x5cb9f9); 236 | if (_0x481869 <= 0) { 237 | console["log"]("cookie 存在异常,请确认"); 238 | _0x547e2a(null); 239 | } else { 240 | _0x547e2a(await _0x115399(_0x5cb9f9, _0x57561b, _0x4ecc31, _0x481869 - 1)); 241 | } 242 | } else { 243 | _0x547e2a(null); 244 | } 245 | }); 246 | } catch (_0x50f012) { 247 | console["log"](_0xaaf3e8); 248 | } 249 | }); 250 | } 251 | function _0x51a5e8(_0xcfa98d) { 252 | return new Promise(_0x3048ff => { 253 | _0x355d3c(_0xcfa98d, function (_0x26b2f7, _0x41597d, _0x52c551) { 254 | if (_0x26b2f7) { 255 | console["error"](_0x26b2f7); 256 | _0x3048ff(''); 257 | } else { 258 | _0x3048ff(_0x41597d); 259 | } 260 | }); 261 | }); 262 | } 263 | const _0x53fee8 = async (_0x3bc174, _0x2719db, _0x5af601 = 5) => { 264 | }; 265 | const _0x2c412b = async (_0x2b0217, _0x476507, _0x30fa7a, _0x3a8264 = 5) => { 266 | }; 267 | const _0x171be3 = async (_0x3fe456, _0x5e4065, _0x5b7be9 = 5) => { 268 | console["log"]("By 姜白白\n"); 269 | }; 270 | async function _0x5bcbae(_0x23aeb9) { 271 | return new Promise(_0x3b6a77 => { 272 | try { 273 | _0x23aeb9(_0x3b6a77); 274 | } catch (_0x47b4bc) { 275 | console["log"](_0xaaf3e8); 276 | _0x3b6a77(); 277 | } 278 | }); 279 | } 280 | function _0x12ee09(_0x276024) { 281 | var _0x507049 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_"; 282 | var _0x24fce7 = ''; 283 | for (var _0x3ec8f9 = _0x276024; _0x3ec8f9 > 0; --_0x3ec8f9) { 284 | _0x24fce7 += _0x507049[Math["floor"](Math["random"]() * _0x507049["length"])]; 285 | } 286 | return _0x24fce7; 287 | } 288 | function _0x316481(_0x2d63e2) { 289 | let _0x1cb272 = /^(\S+)=(\S+)$/; 290 | let _0x4b69fc = _0x2d63e2["replace"](/\s*/g, '')["split"](';'); 291 | let _0xd778f8 = new Map(); 292 | for (let _0x51d1d6 of _0x4b69fc) { 293 | let _0x33876d = _0x1cb272["exec"](_0x51d1d6); 294 | if (_0x33876d) { 295 | _0xd778f8["set"](_0x33876d[1], _0x33876d[2]); 296 | } 297 | } 298 | return _0xd778f8; 299 | } 300 | function _0x37e70a(_0xfd158b = "elmck") { 301 | console["log"]("版本:9.9.9\n"); 302 | let _0x48a24a = []; 303 | let _0x53f2af = process["env"][_0xfd158b]; 304 | if (_0x53f2af) { 305 | if (_0x53f2af["indexOf"]('&') > -1) { 306 | _0x48a24a = _0x53f2af["split"]('&'); 307 | } else { 308 | if (_0x53f2af["indexOf"]("\n") > -1) { 309 | _0x48a24a = _0x53f2af["split"]("\n"); 310 | } else { 311 | _0x48a24a = [_0x53f2af]; 312 | } 313 | } 314 | } 315 | return _0x48a24a; 316 | } 317 | const _0x4ba1f4 = _0x5cb07d => { 318 | const _0xf8bebe = { 319 | "Cookie": _0x5cb07d, 320 | "user-agent": _0x5f1259 321 | }; 322 | const _0x279dc2 = { 323 | "url": "https://restapi.ele.me/eus/v5/user_detail", 324 | "headers": _0xf8bebe 325 | }; 326 | return _0x5bcbae(_0x4dfe68 => { 327 | _0x3a1b91(_0x279dc2, async (_0x201ca3, _0x465fa9, _0xf6fa62) => { 328 | if (!_0x201ca3 && _0x465fa9["statusCode"] === 200) { 329 | _0x4dfe68(JSON["parse"](_0xf6fa62)); 330 | } else { 331 | _0x4dfe68({}); 332 | } 333 | }); 334 | }); 335 | }; 336 | function _0x10d424(_0x3da33a) { 337 | const _0x5a4cec = _0x3da33a["split"](';')["map"](_0x1c1868 => _0x1c1868["trim"]()["split"]('=')); 338 | const _0x448a98 = new Map(); 339 | for (let _0x38a3ec = 0; _0x38a3ec < _0x5a4cec["length"]; _0x38a3ec++) { 340 | const [_0xe4ff2f, _0x1693f7] = _0x5a4cec[_0x38a3ec]; 341 | if (_0xe4ff2f) { 342 | _0x448a98["set"](_0xe4ff2f, decodeURIComponent(_0x1693f7)); 343 | } 344 | } 345 | return _0x448a98; 346 | } 347 | async function _0x40ed21(_0xb58b84, _0x2abfe4) { 348 | const _0x522695 = _0x10d424(_0xb58b84); 349 | if (!_0x522695["has"]("wxUid")) { 350 | console["log"]("没有获取到推送 uid,不推送消息\n"); 351 | } else { 352 | await sendNotify("登录失效通知", "### 通知 \n 备注为:" + _0x2abfe4 + "的饿了么登录已失效,请重新登录", { 353 | 'uid': _0x522695["get"]("wxUid") 354 | }); 355 | } 356 | } 357 | function _0x57c4d6(_0x682df3, _0x5a93e1, _0x40150c, _0x1eb753, _0x554274, _0x22537b, _0x413801, _0x1a3ceb) { 358 | const _0x13b82d = { 359 | "data": _0x682df3, 360 | "api": _0x5a93e1, 361 | "pageId": decodeURIComponent(_0x40150c), 362 | "uid": _0x22537b, 363 | "deviceId": _0x413801, 364 | "utdid": _0x1a3ceb 365 | }; 366 | const _0x59fcf6 = { 367 | "carmi": process["env"]["ELE_CARME"] || process["env"]["ELE_TTCJ_CARME"], 368 | "needSignData": _0x13b82d 369 | }; 370 | if (_0x1eb753) { 371 | _0x59fcf6["needSignData"]["sid"] = _0x1eb753; 372 | } 373 | if (_0x554274) { 374 | _0x59fcf6["needSignData"]["realSID"] = _0x554274; 375 | } 376 | _0x59fcf6["needSignData"] = JSON["stringify"](_0x59fcf6["needSignData"]); 377 | const _0xd775e0 = { 378 | "method": "POST", 379 | "headers": {}, 380 | "url": _0x483607 + "/check/xsign", 381 | "body": JSON["stringify"](_0x59fcf6) 382 | }; 383 | _0xd775e0["headers"]["content-type"] = "application/json"; 384 | return _0x5bcbae(_0x1757c5 => { 385 | _0x3a1b91(_0xd775e0, async (_0x1d3a25, _0x33eac7, _0x6c2d1c) => { 386 | if (!_0x1d3a25 && _0x33eac7["statusCode"] === 200) { 387 | try { 388 | const _0x3621a1 = JSON["parse"](_0x6c2d1c); 389 | if (_0x3621a1["code"] !== 20000) { 390 | console["log"](_0x3621a1["message"]); 391 | _0x1757c5(null); 392 | } else { 393 | _0x1757c5(_0x3621a1["data"]); 394 | } 395 | } catch (_0x1c4410) { 396 | console["log"](_0x1c4410); 397 | _0x1757c5(null); 398 | } 399 | } else { 400 | _0x1757c5(null); 401 | } 402 | }); 403 | }); 404 | } 405 | async function _0x5a1592(_0x403dbf, _0xcaf64c) { 406 | let _0x12d0e5 = _0x10d424(_0x403dbf); 407 | let _0x2f73e7 = _0x12d0e5["get"]("deviceId"); 408 | let _0xd7e951 = _0x12d0e5["get"]("utdid"); 409 | let _0x43b2dc = _0x12d0e5["get"]("USERID"); 410 | let _0x98de9c = _0x12d0e5["get"]("token"); 411 | if (!_0x98de9c) { 412 | console["log"]("未获取到刷新 token,自动续期 ck 失败"); 413 | return; 414 | } 415 | let _0x76dc79 = _0x12d0e5["get"]("umt"); 416 | let _0x3ebf34 = "{\"ext\":\"{\\\"apiReferer\\\":\\\"{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}\\\"}\",\"userId\":\"" + _0x43b2dc + "\",\"tokenInfo\":\"{\\\"appName\\\":\\\"24895413\\\",\\\"appVersion\\\":\\\"android_11.1.38\\\",\\\"deviceId\\\":\\\"" + _0x2f73e7 + "\\\",\\\"deviceName\\\":\\\"Android(AOSP on blueline)\\\",\\\"ext\\\":{\\\"aFrom\\\":\\\"{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}{\\\\\\\"errorCode\\\\\\\":\\\\\\\"7\\\\\\\",\\\\\\\"eventName\\\\\\\":\\\\\\\"autologinFailed\\\\\\\"}\\\",\\\"firstLogin\\\":false,\\\"huaweiLogin\\\":false,\\\"pad\\\":false},\\\"locale\\\":\\\"zh_CN\\\",\\\"sdkVersion\\\":\\\"android_5.3.3.4\\\",\\\"site\\\":25,\\\"t\\\":" + new Date()["getTime"]() + ",\\\"token\\\":\\\"" + _0x98de9c + "\\\",\\\"ttid\\\":\\\"1608030065155@eleme_android_11.1.38\\\",\\\"useAcitonType\\\":true,\\\"useDeviceToken\\\":true,\\\"utdid\\\":\\\"\\\"}\",\"riskControlInfo\":\"{\\\"appStore\\\":\\\"1608030065155@eleme_android_11.1.38\\\",\\\"deviceBrand\\\":\\\"Google\\\",\\\"deviceModel\\\":\\\"AOSP on blueline\\\",\\\"deviceName\\\":\\\"AOSP on blueline\\\",\\\"osName\\\":\\\"android\\\",\\\"osVersion\\\":\\\"10\\\",\\\"screenSize\\\":\\\"0x0\\\",\\\"t\\\":\\\"" + new Date()["getTime"]() + "\\\",\\\"umidToken\\\":\\\"" + _0x76dc79 + "\\\",\\\"wua\\\":\\\"ISdF_FRG6WfAC3hq3tKFPCpwtmaqmW\\/MjsEb3FCZ90ionntxuCdjFDvlua+Gx18Em2WqSYOBg9gNTlOSCM0acYBlAV8E0VCcEwi6n+zfM2sxmYY+klHTup7J6nkn1prMWfeapByu2evAxDr9OduHbFyzkypgAxoUXvGMogXb0UsKdpfaH9CGFJ32hDQlPy+IdRSeI84JQzx8IFErDBo3CBHRH58FvaRwkywNCqNecHwUB+JN9c2casuw1s6KNJHraD2kCFtjaUO2BgDNici2hKwnlLHwvBm+oRSboxE+K\\/HCzXLk3\\/sCpKM8WVg+0+3t4dsh82tlLh2i1V4g5MRJkbZn4c1EoC0ug92R7WUG0Gqs9+0DsyceK03b7Ckh7UozNrXo4\\\"}\"}"; 417 | let _0x300241 = "com.taobao.mtop.mloginunitservice.autologin"; 418 | let _0xf6c131 = "https%3A%2F%2Fr.ele.me%2Fmagic-cube%2F%3FnavType%3D3%26spm%3Da13.b_activity_kb_m71293.0.0%23%2Fgame"; 419 | let _0xa152c4 = _0x12d0e5["get"]("cookie2"); 420 | let _0x551803 = _0x12d0e5["get"]("unb"); 421 | let _0x4c3aac = await _0x57c4d6(_0x3ebf34, _0x300241, _0xf6c131, _0xa152c4, _0xcaf64c, _0x551803, _0x2f73e7, _0xd7e951); 422 | if (!_0x4c3aac) { 423 | return _0x4c3aac; 424 | } 425 | _0x4c3aac = JSON["parse"](_0x4c3aac["msg"]); 426 | let _0x354b65 = encodeURIComponent(_0x4c3aac["x-sgext"]); 427 | let _0x5271d0 = encodeURIComponent(_0x4c3aac["x-sign"]); 428 | _0x76dc79 = encodeURIComponent(_0x4c3aac["x-umt"]); 429 | let _0x183fe6 = encodeURIComponent(_0x4c3aac["x-mini-wua"]); 430 | let _0x4e8046 = _0x4c3aac["x-t"]; 431 | let _0xbed8f0 = encodeURIComponent(_0x4c3aac["wua"]); 432 | const _0xf00816 = { 433 | "x-sgext": _0x354b65, 434 | "x-sign": _0x5271d0, 435 | "x-devid": _0x2f73e7, 436 | "x-pv": "6.3", 437 | "x-features": "1051", 438 | "x-mini-wua": _0x183fe6, 439 | "content-type": "application/x-www-form-urlencoded;charset=UTF-8", 440 | "x-t": _0x4e8046, 441 | "x-bx-version": "6.5.90", 442 | "f-refer": "mtop", 443 | "x-extdata": "openappkey%3DDEFAULT_AUTH", 444 | "x-ttid": "1551089129819%40eleme_android_10.14.3", 445 | "x-app-ver": "10.14.3", 446 | "x-umt": _0x76dc79, 447 | "x-utdid": encodeURIComponent(_0xd7e951), 448 | "x-appkey": "24895413", 449 | "x-page-url": _0xf6c131, 450 | "Host": "guide-acs.m.taobao.com", 451 | "user-agent": "MTOPSDK%2F3.1.1.7+%28Android%3B13%3BGoogle%3BPixel+4+XL%29", 452 | "x-sid": _0xa152c4, 453 | "x-uid": _0x551803, 454 | "Cookie": _0x403dbf, 455 | "asac": "2A22C0239QW1FOL3UUQY7U" 456 | }; 457 | let _0x51077b = "https://guide-acs.m.taobao.com/gw/com.taobao.mtop.mloginunitservice.autologin/1.0/?data=" + encodeURIComponent(_0x3ebf34) + "&type=originaljson&wua=" + _0xbed8f0; 458 | const _0x4455ce = { 459 | "method": "POST", 460 | "url": _0x51077b, 461 | "headers": _0xf00816, 462 | "body": _0x3ebf34 463 | }; 464 | return _0x5bcbae(_0x1ec0bf => { 465 | _0x3a1b91(_0x4455ce, async (_0x107519, _0x5ef435, _0x454730) => { 466 | if (!_0x107519 && _0x5ef435["statusCode"] === 200) { 467 | try { 468 | const _0x99d3ed = JSON["parse"](_0x454730); 469 | _0x1ec0bf(_0x99d3ed); 470 | } catch (_0x99b1dd) { 471 | console["log"](_0x99b1dd); 472 | _0x1ec0bf(null); 473 | } 474 | } else { 475 | _0x1ec0bf(null); 476 | } 477 | }); 478 | }); 479 | } 480 | const _0x1aab37 = { 481 | "checkCk": _0x539aac, 482 | "User_Agent": _0x5f1259, 483 | "getToken": _0x458c4f, 484 | "sign": _0x249dba, 485 | "wait": _0x5d2ff1, 486 | "validateCarmeWithType": _0x171be3, 487 | "randomString": _0x12ee09, 488 | "getCookies": _0x37e70a, 489 | "getUserInfo": _0x4ba1f4, 490 | "validateCarmeNoCon": _0x53fee8, 491 | "getCookieMap": _0x10d424, 492 | "invalidCookieNotify": _0x40ed21, 493 | "checkCarmeCount": _0x2c412b, 494 | "tryCatchPromise": _0x5bcbae, 495 | "checkMasterCk": _0x115399, 496 | "couponNotify": _0x5670f4, 497 | "runOne": _0x5a1592, 498 | "newSign": _0x2f0cce 499 | }; 500 | module["exports"] = _0x1aab37; 501 | -------------------------------------------------------------------------------- /ele_sendNotify.js: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: lxk0301 https://gitee.com/lxk0301 3 | * @Date: 2020-08-19 16:12:40 4 | * @Last Modified by: whyour 5 | * @Last Modified time: 2021-5-1 15:00:54 6 | * sendNotify 推送通知功能 7 | * @param text 通知头 8 | * @param desp 通知体 9 | * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } 10 | * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` 11 | */ 12 | 13 | const querystring = require('querystring'); 14 | const $ = new Env(); 15 | const timeout = 10000; //超时时间(单位毫秒) 16 | 17 | // =======================================wxpush设置区域======================================= 18 | //官方文档:https://wxpusher.zjiecode.com/ 19 | //WX_PUSH_TOKEN:微信扫码登录后一对一推送 20 | let WX_PUSH_TOKEN = 'AT_l2zR8LFfpdPUtaKNrVI3yBjRWyF9MaXa'; 21 | // =======================================gotify通知设置区域============================================== 22 | //gotify_url 填写gotify地址,如https://push.example.de:8080 23 | //gotify_token 填写gotify的消息应用token 24 | //gotify_priority 填写推送消息优先级,默认为0 25 | let GOTIFY_URL = ''; 26 | let GOTIFY_TOKEN = ''; 27 | let GOTIFY_PRIORITY = 0; 28 | // =======================================go-cqhttp通知设置区域=========================================== 29 | //gobot_url 填写请求地址http://127.0.0.1/send_private_msg 30 | //gobot_token 填写在go-cqhttp文件设置的访问密钥 31 | //gobot_qq 填写推送到个人QQ或者QQ群号 32 | //go-cqhttp相关API https://docs.go-cqhttp.org/api 33 | let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg 34 | let GOBOT_TOKEN = ''; //访问密钥 35 | let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群 36 | 37 | // =======================================微信server酱通知设置区域=========================================== 38 | //此处填你申请的SCKEY. 39 | //(环境变量名 PUSH_KEY) 40 | let SCKEY = ''; 41 | 42 | // =======================================Bark App通知设置区域=========================================== 43 | //此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX) 44 | let BARK_PUSH = ''; 45 | //BARK app推送铃声,铃声列表去APP查看复制填写 46 | let BARK_SOUND = ''; 47 | //BARK app推送消息的分组, 默认为"QingLong" 48 | let BARK_GROUP = 'QingLong'; 49 | 50 | // =======================================telegram机器人通知设置区域=========================================== 51 | //此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw 52 | //(环境变量名 TG_BOT_TOKEN) 53 | let TG_BOT_TOKEN = ''; 54 | //此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206 55 | //(环境变量名 TG_USER_ID) 56 | let TG_USER_ID = ''; 57 | //tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填) 58 | let TG_PROXY_HOST = ''; //例如:127.0.0.1(环境变量名:TG_PROXY_HOST) 59 | let TG_PROXY_PORT = ''; //例如:1080(环境变量名:TG_PROXY_PORT) 60 | let TG_PROXY_AUTH = ''; //tg代理配置认证参数 61 | //Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST) 62 | let TG_API_HOST = 'api.telegram.org'; 63 | // =======================================钉钉机器人通知设置区域=========================================== 64 | //此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd 65 | //(环境变量名 DD_BOT_TOKEN) 66 | let DD_BOT_TOKEN = ''; 67 | //密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串 68 | let DD_BOT_SECRET = ''; 69 | 70 | // =======================================企业微信机器人通知设置区域=========================================== 71 | //此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa 72 | //(环境变量名 QYWX_KEY) 73 | let QYWX_KEY = ''; 74 | 75 | // =======================================企业微信应用消息通知设置区域=========================================== 76 | /* 77 | 此处填你企业微信应用消息的值(详见文档 https://work.weixin.qq.com/api/doc/90000/90135/90236) 78 | 环境变量名 QYWX_AM依次填入 corpid,corpsecret,touser(注:多个成员ID使用|隔开),agentid,消息类型(选填,不填默认文本消息类型) 79 | 注意用,号隔开(英文输入法的逗号),例如:wwcff56746d9adwers,B-791548lnzXBE6_BWfxdf3kSTMJr9vFEPKAbh6WERQ,mingcheng,1000001,2COXgjH2UIfERF2zxrtUOKgQ9XklUqMdGSWLBoW_lSDAdafat 80 | 可选推送消息类型(推荐使用图文消息(mpnews)): 81 | - 文本卡片消息: 0 (数字零) 82 | - 文本消息: 1 (数字一) 83 | - 图文消息(mpnews): 素材库图片id, 可查看此教程(http://note.youdao.com/s/HMiudGkb)或者(https://note.youdao.com/ynoteshare1/index.html?id=1a0c8aff284ad28cbd011b29b3ad0191&type=note) 84 | */ 85 | let QYWX_AM = ''; 86 | 87 | // =======================================iGot聚合推送通知设置区域=========================================== 88 | //此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX) 89 | let IGOT_PUSH_KEY = ''; 90 | 91 | // =======================================push+设置区域======================================= 92 | //官方文档:http://www.pushplus.plus/ 93 | //PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送 94 | //PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送) 95 | let PUSH_PLUS_TOKEN = ''; 96 | let PUSH_PLUS_USER = ''; 97 | 98 | 99 | 100 | //==========================云端环境变量的判断与接收========================= 101 | if (process.env.GOTIFY_URL) { 102 | GOTIFY_URL = process.env.GOTIFY_URL; 103 | } 104 | if (process.env.GOTIFY_TOKEN) { 105 | GOTIFY_TOKEN = process.env.GOTIFY_TOKEN; 106 | } 107 | if (process.env.GOTIFY_PRIORITY) { 108 | GOTIFY_PRIORITY = process.env.GOTIFY_PRIORITY; 109 | } 110 | 111 | if (process.env.GOBOT_URL) { 112 | GOBOT_URL = process.env.GOBOT_URL; 113 | } 114 | if (process.env.GOBOT_TOKEN) { 115 | GOBOT_TOKEN = process.env.GOBOT_TOKEN; 116 | } 117 | if (process.env.GOBOT_QQ) { 118 | GOBOT_QQ = process.env.GOBOT_QQ; 119 | } 120 | 121 | if (process.env.PUSH_KEY) { 122 | SCKEY = process.env.PUSH_KEY; 123 | } 124 | 125 | if (process.env.QQ_SKEY) { 126 | QQ_SKEY = process.env.QQ_SKEY; 127 | } 128 | 129 | if (process.env.QQ_MODE) { 130 | QQ_MODE = process.env.QQ_MODE; 131 | } 132 | 133 | if (process.env.BARK_PUSH) { 134 | if ( 135 | process.env.BARK_PUSH.indexOf('https') > -1 || 136 | process.env.BARK_PUSH.indexOf('http') > -1 137 | ) { 138 | //兼容BARK自建用户 139 | BARK_PUSH = process.env.BARK_PUSH; 140 | } else { 141 | BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`; 142 | } 143 | if (process.env.BARK_SOUND) { 144 | BARK_SOUND = process.env.BARK_SOUND; 145 | } 146 | if (process.env.BARK_GROUP) { 147 | BARK_GROUP = process.env.BARK_GROUP; 148 | } 149 | } else { 150 | if ( 151 | BARK_PUSH && 152 | BARK_PUSH.indexOf('https') === -1 && 153 | BARK_PUSH.indexOf('http') === -1 154 | ) { 155 | //兼容BARK本地用户只填写设备码的情况 156 | BARK_PUSH = `https://api.day.app/${BARK_PUSH}`; 157 | } 158 | } 159 | if (process.env.TG_BOT_TOKEN) { 160 | TG_BOT_TOKEN = process.env.TG_BOT_TOKEN; 161 | } 162 | if (process.env.TG_USER_ID) { 163 | TG_USER_ID = process.env.TG_USER_ID; 164 | } 165 | if (process.env.TG_PROXY_AUTH) TG_PROXY_AUTH = process.env.TG_PROXY_AUTH; 166 | if (process.env.TG_PROXY_HOST) TG_PROXY_HOST = process.env.TG_PROXY_HOST; 167 | if (process.env.TG_PROXY_PORT) TG_PROXY_PORT = process.env.TG_PROXY_PORT; 168 | if (process.env.TG_API_HOST) TG_API_HOST = process.env.TG_API_HOST; 169 | 170 | if (process.env.DD_BOT_TOKEN) { 171 | DD_BOT_TOKEN = process.env.DD_BOT_TOKEN; 172 | if (process.env.DD_BOT_SECRET) { 173 | DD_BOT_SECRET = process.env.DD_BOT_SECRET; 174 | } 175 | } 176 | 177 | if (process.env.QYWX_KEY) { 178 | QYWX_KEY = process.env.QYWX_KEY; 179 | } 180 | 181 | if (process.env.QYWX_AM) { 182 | QYWX_AM = process.env.QYWX_AM; 183 | } 184 | 185 | if (process.env.IGOT_PUSH_KEY) { 186 | IGOT_PUSH_KEY = process.env.IGOT_PUSH_KEY; 187 | } 188 | 189 | if (process.env.PUSH_PLUS_TOKEN) { 190 | PUSH_PLUS_TOKEN = process.env.PUSH_PLUS_TOKEN; 191 | } 192 | if (process.env.PUSH_PLUS_USER) { 193 | PUSH_PLUS_USER = process.env.PUSH_PLUS_USER; 194 | } 195 | 196 | if (process.env.WX_PUSH_TOKEN) { 197 | WX_PUSH_TOKEN = process.env.WX_PUSH_TOKEN 198 | } 199 | 200 | //==========================云端环境变量的判断与接收========================= 201 | 202 | /** 203 | * sendNotify 推送通知功能 204 | * @param text 通知头 205 | * @param desp 通知体 206 | * @param params 某些推送通知方式点击弹窗可跳转, 例:{ url: 'https://abc.com' } 207 | * @param author 作者仓库等信息 例:`本通知 By:https://github.com/whyour/qinglong` 208 | * @returns {Promise} 209 | */ 210 | async function sendNotify( 211 | text, 212 | desp, 213 | params = {}, 214 | author = '\n\nQQ群:870906127\n\n京东爱心公益活动', 215 | ) { 216 | //提供6种通知 217 | if (process.env.pushDesc) { 218 | author = '\n\n' + process.env.pushDesc; 219 | } 220 | desp += author; //增加作者信息,防止被贩卖等 221 | await Promise.all([ 222 | // serverNotify(text, desp), //微信server酱 223 | // pushPlusNotify(text, desp), //pushplus(推送加) 224 | wxPushNotify(text, desp, params) //wxPush 225 | ]); 226 | //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动 227 | // text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text; 228 | // await Promise.all([ 229 | // BarkNotify(text, desp, params), //iOS Bark APP 230 | // tgBotNotify(text, desp), //telegram 机器人 231 | // ddBotNotify(text, desp), //钉钉机器人 232 | // qywxBotNotify(text, desp), //企业微信机器人 233 | // qywxamNotify(text, desp), //企业微信应用消息推送 234 | // iGotNotify(text, desp, params), //iGot 235 | // gobotNotify(text, desp),//go-cqhttp 236 | // gotifyNotify(text, desp),//gotify 237 | // ]); 238 | } 239 | 240 | function gotifyNotify(text, desp) { 241 | return new Promise((resolve) => { 242 | if (GOTIFY_URL && GOTIFY_TOKEN) { 243 | const options = { 244 | url: `${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}`, 245 | body: `title=${encodeURIComponent(text)}&message=${encodeURIComponent(desp)}&priority=${GOTIFY_PRIORITY}`, 246 | headers: { 247 | 'Content-Type': 'application/x-www-form-urlencoded', 248 | } 249 | }; 250 | $.post(options, (err, resp, data) => { 251 | try { 252 | if (err) { 253 | console.log('gotify发送通知调用API失败!!\n'); 254 | console.log(err); 255 | } else { 256 | data = JSON.parse(data); 257 | if (data.id) { 258 | console.log('gotify发送通知消息成功🎉\n'); 259 | } else { 260 | console.log(`${data.message}\n`); 261 | } 262 | } 263 | } catch (e) { 264 | $.logErr(e, resp); 265 | } finally { 266 | resolve(); 267 | } 268 | }); 269 | } else { 270 | resolve(); 271 | } 272 | }); 273 | } 274 | 275 | function gobotNotify(text, desp, time = 2100) { 276 | return new Promise((resolve) => { 277 | if (GOBOT_URL) { 278 | const options = { 279 | url: `${GOBOT_URL}?access_token=${GOBOT_TOKEN}&${GOBOT_QQ}`, 280 | json: { message: `${text}\n${desp}` }, 281 | headers: { 282 | 'Content-Type': 'application/json', 283 | }, 284 | timeout, 285 | }; 286 | setTimeout(() => { 287 | $.post(options, (err, resp, data) => { 288 | try { 289 | if (err) { 290 | console.log('发送go-cqhttp通知调用API失败!!\n'); 291 | console.log(err); 292 | } else { 293 | data = JSON.parse(data); 294 | if (data.retcode === 0) { 295 | console.log('go-cqhttp发送通知消息成功🎉\n'); 296 | } else if (data.retcode === 100) { 297 | console.log(`go-cqhttp发送通知消息异常: ${data.errmsg}\n`); 298 | } else { 299 | console.log( 300 | `go-cqhttp发送通知消息异常\n${JSON.stringify(data)}`, 301 | ); 302 | } 303 | } 304 | } catch (e) { 305 | $.logErr(e, resp); 306 | } finally { 307 | resolve(data); 308 | } 309 | }); 310 | }, time); 311 | } else { 312 | resolve(); 313 | } 314 | }); 315 | } 316 | 317 | function serverNotify(text, desp, time = 2100) { 318 | return new Promise((resolve) => { 319 | if (SCKEY) { 320 | //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换 321 | desp = desp.replace(/[\n\r]/g, '\n\n'); 322 | const options = { 323 | url: SCKEY.includes('SCT') 324 | ? `https://sctapi.ftqq.com/${SCKEY}.send` 325 | : `https://sc.ftqq.com/${SCKEY}.send`, 326 | body: `text=${text}&desp=${desp}`, 327 | headers: { 328 | 'Content-Type': 'application/x-www-form-urlencoded', 329 | }, 330 | timeout, 331 | }; 332 | setTimeout(() => { 333 | $.post(options, (err, resp, data) => { 334 | try { 335 | if (err) { 336 | console.log('发送通知调用API失败!!\n'); 337 | console.log(err); 338 | } else { 339 | data = JSON.parse(data); 340 | //server酱和Server酱·Turbo版的返回json格式不太一样 341 | if (data.errno === 0 || data.data.errno === 0) { 342 | console.log('server酱发送通知消息成功🎉\n'); 343 | } else if (data.errno === 1024) { 344 | // 一分钟内发送相同的内容会触发 345 | console.log(`server酱发送通知消息异常: ${data.errmsg}\n`); 346 | } else { 347 | console.log( 348 | `server酱发送通知消息异常\n${JSON.stringify(data)}`, 349 | ); 350 | } 351 | } 352 | } catch (e) { 353 | $.logErr(e, resp); 354 | } finally { 355 | resolve(data); 356 | } 357 | }); 358 | }, time); 359 | } else { 360 | resolve(); 361 | } 362 | }); 363 | } 364 | 365 | function CoolPush(text, desp) { 366 | return new Promise((resolve) => { 367 | if (QQ_SKEY) { 368 | let options = { 369 | url: `https://push.xuthus.cc/${QQ_MODE}/${QQ_SKEY}`, 370 | headers: { 371 | 'Content-Type': 'application/json', 372 | }, 373 | }; 374 | 375 | // 已知敏感词 376 | text = text.replace(/京豆/g, '豆豆'); 377 | desp = desp.replace(/京豆/g, ''); 378 | desp = desp.replace(/🐶/g, ''); 379 | desp = desp.replace(/红包/g, 'H包'); 380 | 381 | switch (QQ_MODE) { 382 | case 'email': 383 | options.json = { 384 | t: text, 385 | c: desp, 386 | }; 387 | break; 388 | default: 389 | options.body = `${text}\n\n${desp}`; 390 | } 391 | 392 | let pushMode = function (t) { 393 | switch (t) { 394 | case 'send': 395 | return '个人'; 396 | case 'group': 397 | return 'QQ群'; 398 | case 'wx': 399 | return '微信'; 400 | case 'ww': 401 | return '企业微信'; 402 | case 'email': 403 | return '邮件'; 404 | default: 405 | return '未知方式'; 406 | } 407 | }; 408 | 409 | $.post(options, (err, resp, data) => { 410 | try { 411 | if (err) { 412 | console.log(`发送${pushMode(QQ_MODE)}通知调用API失败!!\n`); 413 | console.log(err); 414 | } else { 415 | data = JSON.parse(data); 416 | if (data.code === 200) { 417 | console.log(`酷推发送${pushMode(QQ_MODE)}通知消息成功🎉\n`); 418 | } else if (data.code === 400) { 419 | console.log( 420 | `QQ酷推(Cool Push)发送${pushMode(QQ_MODE)}推送失败:${data.msg 421 | }\n`, 422 | ); 423 | } else if (data.code === 503) { 424 | console.log(`QQ酷推出错,${data.message}:${data.data}\n`); 425 | } else { 426 | console.log(`酷推推送异常: ${JSON.stringify(data)}`); 427 | } 428 | } 429 | } catch (e) { 430 | $.logErr(e, resp); 431 | } finally { 432 | resolve(data); 433 | } 434 | }); 435 | } else { 436 | resolve(); 437 | } 438 | }); 439 | } 440 | 441 | function BarkNotify(text, desp, params = {}) { 442 | return new Promise((resolve) => { 443 | if (BARK_PUSH) { 444 | const options = { 445 | url: `${BARK_PUSH}/${encodeURIComponent(text)}/${encodeURIComponent( 446 | desp, 447 | )}?sound=${BARK_SOUND}&group=${BARK_GROUP}&${querystring.stringify(params)}`, 448 | headers: { 449 | 'Content-Type': 'application/x-www-form-urlencoded', 450 | }, 451 | timeout, 452 | }; 453 | $.get(options, (err, resp, data) => { 454 | try { 455 | if (err) { 456 | console.log('Bark APP发送通知调用API失败!!\n'); 457 | console.log(err); 458 | } else { 459 | data = JSON.parse(data); 460 | if (data.code === 200) { 461 | console.log('Bark APP发送通知消息成功🎉\n'); 462 | } else { 463 | console.log(`${data.message}\n`); 464 | } 465 | } 466 | } catch (e) { 467 | $.logErr(e, resp); 468 | } finally { 469 | resolve(); 470 | } 471 | }); 472 | } else { 473 | resolve(); 474 | } 475 | }); 476 | } 477 | 478 | function tgBotNotify(text, desp) { 479 | return new Promise((resolve) => { 480 | if (TG_BOT_TOKEN && TG_USER_ID) { 481 | const options = { 482 | url: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`, 483 | body: `chat_id=${TG_USER_ID}&text=${text}\n\n${desp}&disable_web_page_preview=true`, 484 | headers: { 485 | 'Content-Type': 'application/x-www-form-urlencoded', 486 | }, 487 | timeout, 488 | }; 489 | if (TG_PROXY_HOST && TG_PROXY_PORT) { 490 | const tunnel = require('tunnel'); 491 | const agent = { 492 | https: tunnel.httpsOverHttp({ 493 | proxy: { 494 | host: TG_PROXY_HOST, 495 | port: TG_PROXY_PORT * 1, 496 | proxyAuth: TG_PROXY_AUTH, 497 | }, 498 | }), 499 | }; 500 | Object.assign(options, { agent }); 501 | } 502 | $.post(options, (err, resp, data) => { 503 | try { 504 | if (err) { 505 | console.log('telegram发送通知消息失败!!\n'); 506 | console.log(err); 507 | } else { 508 | data = JSON.parse(data); 509 | if (data.ok) { 510 | console.log('Telegram发送通知消息成功🎉。\n'); 511 | } else if (data.error_code === 400) { 512 | console.log( 513 | '请主动给bot发送一条消息并检查接收用户ID是否正确。\n', 514 | ); 515 | } else if (data.error_code === 401) { 516 | console.log('Telegram bot token 填写错误。\n'); 517 | } 518 | } 519 | } catch (e) { 520 | $.logErr(e, resp); 521 | } finally { 522 | resolve(data); 523 | } 524 | }); 525 | } else { 526 | resolve(); 527 | } 528 | }); 529 | } 530 | 531 | function ddBotNotify(text, desp) { 532 | return new Promise((resolve) => { 533 | const options = { 534 | url: `https://oapi.dingtalk.com/robot/send?access_token=${DD_BOT_TOKEN}`, 535 | json: { 536 | msgtype: 'text', 537 | text: { 538 | content: ` ${text}\n\n${desp}`, 539 | }, 540 | }, 541 | headers: { 542 | 'Content-Type': 'application/json', 543 | }, 544 | timeout, 545 | }; 546 | if (DD_BOT_TOKEN && DD_BOT_SECRET) { 547 | const crypto = require('crypto'); 548 | const dateNow = Date.now(); 549 | const hmac = crypto.createHmac('sha256', DD_BOT_SECRET); 550 | hmac.update(`${dateNow}\n${DD_BOT_SECRET}`); 551 | const result = encodeURIComponent(hmac.digest('base64')); 552 | options.url = `${options.url}×tamp=${dateNow}&sign=${result}`; 553 | $.post(options, (err, resp, data) => { 554 | try { 555 | if (err) { 556 | console.log('钉钉发送通知消息失败!!\n'); 557 | console.log(err); 558 | } else { 559 | data = JSON.parse(data); 560 | if (data.errcode === 0) { 561 | console.log('钉钉发送通知消息成功🎉。\n'); 562 | } else { 563 | console.log(`${data.errmsg}\n`); 564 | } 565 | } 566 | } catch (e) { 567 | $.logErr(e, resp); 568 | } finally { 569 | resolve(data); 570 | } 571 | }); 572 | } else if (DD_BOT_TOKEN) { 573 | $.post(options, (err, resp, data) => { 574 | try { 575 | if (err) { 576 | console.log('钉钉发送通知消息失败!!\n'); 577 | console.log(err); 578 | } else { 579 | data = JSON.parse(data); 580 | if (data.errcode === 0) { 581 | console.log('钉钉发送通知消息完成。\n'); 582 | } else { 583 | console.log(`${data.errmsg}\n`); 584 | } 585 | } 586 | } catch (e) { 587 | $.logErr(e, resp); 588 | } finally { 589 | resolve(data); 590 | } 591 | }); 592 | } else { 593 | resolve(); 594 | } 595 | }); 596 | } 597 | 598 | function qywxBotNotify(text, desp) { 599 | return new Promise((resolve) => { 600 | const options = { 601 | url: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=${QYWX_KEY}`, 602 | json: { 603 | msgtype: 'text', 604 | text: { 605 | content: ` ${text}\n\n${desp}`, 606 | }, 607 | }, 608 | headers: { 609 | 'Content-Type': 'application/json', 610 | }, 611 | timeout, 612 | }; 613 | if (QYWX_KEY) { 614 | $.post(options, (err, resp, data) => { 615 | try { 616 | if (err) { 617 | console.log('企业微信发送通知消息失败!!\n'); 618 | console.log(err); 619 | } else { 620 | data = JSON.parse(data); 621 | if (data.errcode === 0) { 622 | console.log('企业微信发送通知消息成功🎉。\n'); 623 | } else { 624 | console.log(`${data.errmsg}\n`); 625 | } 626 | } 627 | } catch (e) { 628 | $.logErr(e, resp); 629 | } finally { 630 | resolve(data); 631 | } 632 | }); 633 | } else { 634 | resolve(); 635 | } 636 | }); 637 | } 638 | 639 | function ChangeUserId(desp) { 640 | const QYWX_AM_AY = QYWX_AM.split(','); 641 | if (QYWX_AM_AY[2]) { 642 | const userIdTmp = QYWX_AM_AY[2].split('|'); 643 | let userId = ''; 644 | for (let i = 0; i < userIdTmp.length; i++) { 645 | const count = '账号' + (i + 1); 646 | const count2 = '签到号 ' + (i + 1); 647 | if (desp.match(count2)) { 648 | userId = userIdTmp[i]; 649 | } 650 | } 651 | if (!userId) userId = QYWX_AM_AY[2]; 652 | return userId; 653 | } else { 654 | return '@all'; 655 | } 656 | } 657 | 658 | function qywxamNotify(text, desp) { 659 | return new Promise((resolve) => { 660 | if (QYWX_AM) { 661 | const QYWX_AM_AY = QYWX_AM.split(','); 662 | const options_accesstoken = { 663 | url: `https://qyapi.weixin.qq.com/cgi-bin/gettoken`, 664 | json: { 665 | corpid: `${QYWX_AM_AY[0]}`, 666 | corpsecret: `${QYWX_AM_AY[1]}`, 667 | }, 668 | headers: { 669 | 'Content-Type': 'application/json', 670 | }, 671 | timeout, 672 | }; 673 | $.post(options_accesstoken, (err, resp, data) => { 674 | html = desp.replace(/\n/g, '
'); 675 | var json = JSON.parse(data); 676 | accesstoken = json.access_token; 677 | let options; 678 | 679 | switch (QYWX_AM_AY[4]) { 680 | case '0': 681 | options = { 682 | msgtype: 'textcard', 683 | textcard: { 684 | title: `${text}`, 685 | description: `${desp}`, 686 | url: 'https://github.com/whyour/qinglong', 687 | btntxt: '更多', 688 | }, 689 | }; 690 | break; 691 | 692 | case '1': 693 | options = { 694 | msgtype: 'text', 695 | text: { 696 | content: `${text}\n\n${desp}`, 697 | }, 698 | }; 699 | break; 700 | 701 | default: 702 | options = { 703 | msgtype: 'mpnews', 704 | mpnews: { 705 | articles: [ 706 | { 707 | title: `${text}`, 708 | thumb_media_id: `${QYWX_AM_AY[4]}`, 709 | author: `智能助手`, 710 | content_source_url: ``, 711 | content: `${html}`, 712 | digest: `${desp}`, 713 | }, 714 | ], 715 | }, 716 | }; 717 | } 718 | if (!QYWX_AM_AY[4]) { 719 | //如不提供第四个参数,则默认进行文本消息类型推送 720 | options = { 721 | msgtype: 'text', 722 | text: { 723 | content: `${text}\n\n${desp}`, 724 | }, 725 | }; 726 | } 727 | options = { 728 | url: `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${accesstoken}`, 729 | json: { 730 | touser: `${ChangeUserId(desp)}`, 731 | agentid: `${QYWX_AM_AY[3]}`, 732 | safe: '0', 733 | ...options, 734 | }, 735 | headers: { 736 | 'Content-Type': 'application/json', 737 | }, 738 | }; 739 | 740 | $.post(options, (err, resp, data) => { 741 | try { 742 | if (err) { 743 | console.log( 744 | '成员ID:' + 745 | ChangeUserId(desp) + 746 | '企业微信应用消息发送通知消息失败!!\n', 747 | ); 748 | console.log(err); 749 | } else { 750 | data = JSON.parse(data); 751 | if (data.errcode === 0) { 752 | console.log( 753 | '成员ID:' + 754 | ChangeUserId(desp) + 755 | '企业微信应用消息发送通知消息成功🎉。\n', 756 | ); 757 | } else { 758 | console.log(`${data.errmsg}\n`); 759 | } 760 | } 761 | } catch (e) { 762 | $.logErr(e, resp); 763 | } finally { 764 | resolve(data); 765 | } 766 | }); 767 | }); 768 | } else { 769 | resolve(); 770 | } 771 | }); 772 | } 773 | 774 | function iGotNotify(text, desp, params = {}) { 775 | return new Promise((resolve) => { 776 | if (IGOT_PUSH_KEY) { 777 | // 校验传入的IGOT_PUSH_KEY是否有效 778 | const IGOT_PUSH_KEY_REGX = new RegExp('^[a-zA-Z0-9]{24}$'); 779 | if (!IGOT_PUSH_KEY_REGX.test(IGOT_PUSH_KEY)) { 780 | console.log('您所提供的IGOT_PUSH_KEY无效\n'); 781 | resolve(); 782 | return; 783 | } 784 | const options = { 785 | url: `https://push.hellyw.com/${IGOT_PUSH_KEY.toLowerCase()}`, 786 | body: `title=${text}&content=${desp}&${querystring.stringify(params)}`, 787 | headers: { 788 | 'Content-Type': 'application/x-www-form-urlencoded', 789 | }, 790 | timeout, 791 | }; 792 | $.post(options, (err, resp, data) => { 793 | try { 794 | if (err) { 795 | console.log('发送通知调用API失败!!\n'); 796 | console.log(err); 797 | } else { 798 | if (typeof data === 'string') data = JSON.parse(data); 799 | if (data.ret === 0) { 800 | console.log('iGot发送通知消息成功🎉\n'); 801 | } else { 802 | console.log(`iGot发送通知消息失败:${data.errMsg}\n`); 803 | } 804 | } 805 | } catch (e) { 806 | $.logErr(e, resp); 807 | } finally { 808 | resolve(data); 809 | } 810 | }); 811 | } else { 812 | resolve(); 813 | } 814 | }); 815 | } 816 | 817 | function pushPlusNotify(text, desp) { 818 | return new Promise((resolve) => { 819 | if (PUSH_PLUS_TOKEN) { 820 | desp = desp.replace(/[\n\r]/g, '
'); // 默认为html, 不支持plaintext 821 | const body = { 822 | token: `${PUSH_PLUS_TOKEN}`, 823 | title: `${text}`, 824 | content: `${desp}`, 825 | topic: `${PUSH_PLUS_USER}`, 826 | }; 827 | const options = { 828 | url: `https://www.pushplus.plus/send`, 829 | body: JSON.stringify(body), 830 | headers: { 831 | 'Content-Type': ' application/json', 832 | }, 833 | timeout, 834 | }; 835 | $.post(options, (err, resp, data) => { 836 | try { 837 | if (err) { 838 | console.log( 839 | `push+发送${PUSH_PLUS_USER ? '一对多' : '一对一' 840 | }通知消息失败!!\n`, 841 | ); 842 | console.log(err); 843 | } else { 844 | data = JSON.parse(data); 845 | if (data.code === 200) { 846 | console.log( 847 | `push+发送${PUSH_PLUS_USER ? '一对多' : '一对一' 848 | }通知消息完成。\n`, 849 | ); 850 | } else { 851 | console.log( 852 | `push+发送${PUSH_PLUS_USER ? '一对多' : '一对一' 853 | }通知消息失败:${data.msg}\n`, 854 | ); 855 | } 856 | } 857 | } catch (e) { 858 | $.logErr(e, resp); 859 | } finally { 860 | resolve(data); 861 | } 862 | }); 863 | } else { 864 | resolve(); 865 | } 866 | }); 867 | } 868 | 869 | function wxPushNotify(text, desp, params) { 870 | 871 | const dataString = { 872 | // appToken: WX_PUSH_TOKEN, 873 | appToken: WX_PUSH_TOKEN, 874 | content: desp, 875 | summary: text, 876 | contentType: 3,//markdown 格式 877 | topicIds: [], 878 | uids: [params.uid], 879 | verifyPay: false 880 | } 881 | 882 | return new Promise((resolve) => { 883 | if (WX_PUSH_TOKEN) { 884 | // 校验传入的WX_PUSH_TOKEN是否有效 885 | if (!WX_PUSH_TOKEN) { 886 | console.log('您所提供的WX_PUSH_TOKEN无效\n'); 887 | resolve(); 888 | return; 889 | } 890 | const options = { 891 | url: 'https://wxpusher.zjiecode.com/api/send/message', 892 | method: 'POST', 893 | headers: { 894 | "Content-Type": 'application/json' 895 | }, 896 | body: JSON.stringify(dataString), 897 | timeout, 898 | }; 899 | $.post(options, (err, resp, data) => { 900 | try { 901 | if (err) { 902 | console.log('发送通知调用API失败!!\n'); 903 | console.log(err); 904 | } else { 905 | if (typeof data === 'string') data = JSON.parse(data); 906 | if (data.code === 1000) { 907 | console.log('wxPush发送通知消息成功🎉\n'); 908 | } else { 909 | console.log(`wxPush发送通知消息失败:${data.msg}\n`); 910 | } 911 | } 912 | } catch (e) { 913 | $.logErr(e, resp); 914 | } finally { 915 | resolve(data); 916 | } 917 | }); 918 | } else { 919 | resolve(); 920 | } 921 | }); 922 | } 923 | 924 | module.exports = { 925 | sendNotify, 926 | BARK_PUSH, 927 | }; 928 | 929 | // prettier-ignore 930 | function Env(t, s) { 931 | return new class { 932 | constructor(t, s) { 933 | this.name = t, this.data = null, this.dataFile = "box.dat", this.logs = [], this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, s), this.log("", `\ud83d\udd14${this.name}, \u5f00\u59cb!`) 934 | } 935 | 936 | isNode() { 937 | return "undefined" != typeof module && !!module.exports 938 | } 939 | 940 | isQuanX() { 941 | return "undefined" != typeof $task 942 | } 943 | 944 | isSurge() { 945 | return "undefined" != typeof $httpClient && "undefined" == typeof $loon 946 | } 947 | 948 | isLoon() { 949 | return "undefined" != typeof $loon 950 | } 951 | 952 | getScript(t) { 953 | return new Promise(s => { 954 | $.get({ url: t }, (t, e, i) => s(i)) 955 | }) 956 | } 957 | 958 | runScript(t, s) { 959 | return new Promise(e => { 960 | let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); 961 | i = i ? i.replace(/\n/g, "").trim() : i; 962 | let o = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); 963 | o = o ? 1 * o : 20, o = s && s.timeout ? s.timeout : o; 964 | const [h, a] = i.split("@"), r = { 965 | url: `http://${a}/v1/scripting/evaluate`, 966 | body: { script_text: t, mock_type: "cron", timeout: o }, 967 | headers: { "X-Key": h, Accept: "*/*" } 968 | }; 969 | $.post(r, (t, s, i) => e(i)) 970 | }).catch(t => this.logErr(t)) 971 | } 972 | 973 | loaddata() { 974 | if (!this.isNode()) return {}; 975 | { 976 | this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); 977 | const t = this.path.resolve(this.dataFile), s = this.path.resolve(process.cwd(), this.dataFile), 978 | e = this.fs.existsSync(t), i = !e && this.fs.existsSync(s); 979 | if (!e && !i) return {}; 980 | { 981 | const i = e ? t : s; 982 | try { 983 | return JSON.parse(this.fs.readFileSync(i)) 984 | } catch (t) { 985 | return {} 986 | } 987 | } 988 | } 989 | } 990 | 991 | writedata() { 992 | if (this.isNode()) { 993 | this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); 994 | const t = this.path.resolve(this.dataFile), s = this.path.resolve(process.cwd(), this.dataFile), 995 | e = this.fs.existsSync(t), i = !e && this.fs.existsSync(s), o = JSON.stringify(this.data); 996 | e ? this.fs.writeFileSync(t, o) : i ? this.fs.writeFileSync(s, o) : this.fs.writeFileSync(t, o) 997 | } 998 | } 999 | 1000 | lodash_get(t, s, e) { 1001 | const i = s.replace(/\[(\d+)\]/g, ".$1").split("."); 1002 | let o = t; 1003 | for (const t of i) if (o = Object(o)[t], void 0 === o) return e; 1004 | return o 1005 | } 1006 | 1007 | lodash_set(t, s, e) { 1008 | return Object(t) !== t ? t : (Array.isArray(s) || (s = s.toString().match(/[^.[\]]+/g) || []), s.slice(0, -1).reduce((t, e, i) => Object(t[e]) === t[e] ? t[e] : t[e] = Math.abs(s[i + 1]) >> 0 == +s[i + 1] ? [] : {}, t)[s[s.length - 1]] = e, t) 1009 | } 1010 | 1011 | getdata(t) { 1012 | let s = this.getval(t); 1013 | if (/^@/.test(t)) { 1014 | const [, e, i] = /^@(.*?)\.(.*?)$/.exec(t), o = e ? this.getval(e) : ""; 1015 | if (o) try { 1016 | const t = JSON.parse(o); 1017 | s = t ? this.lodash_get(t, i, "") : s 1018 | } catch (t) { 1019 | s = "" 1020 | } 1021 | } 1022 | return s 1023 | } 1024 | 1025 | setdata(t, s) { 1026 | let e = !1; 1027 | if (/^@/.test(s)) { 1028 | const [, i, o] = /^@(.*?)\.(.*?)$/.exec(s), h = this.getval(i), 1029 | a = i ? "null" === h ? null : h || "{}" : "{}"; 1030 | try { 1031 | const s = JSON.parse(a); 1032 | this.lodash_set(s, o, t), e = this.setval(JSON.stringify(s), i) 1033 | } catch (s) { 1034 | const h = {}; 1035 | this.lodash_set(h, o, t), e = this.setval(JSON.stringify(h), i) 1036 | } 1037 | } else e = $.setval(t, s); 1038 | return e 1039 | } 1040 | 1041 | getval(t) { 1042 | return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null 1043 | } 1044 | 1045 | setval(t, s) { 1046 | return this.isSurge() || this.isLoon() ? $persistentStore.write(t, s) : this.isQuanX() ? $prefs.setValueForKey(t, s) : this.isNode() ? (this.data = this.loaddata(), this.data[s] = t, this.writedata(), !0) : this.data && this.data[s] || null 1047 | } 1048 | 1049 | initGotEnv(t) { 1050 | this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) 1051 | } 1052 | 1053 | get(t, s = (() => { 1054 | })) { 1055 | t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? $httpClient.get(t, (t, e, i) => { 1056 | !t && e && (e.body = i, e.statusCode = e.status), s(t, e, i) 1057 | }) : this.isQuanX() ? $task.fetch(t).then(t => { 1058 | const { statusCode: e, statusCode: i, headers: o, body: h } = t; 1059 | s(null, { status: e, statusCode: i, headers: o, body: h }, h) 1060 | }, t => s(t)) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, s) => { 1061 | try { 1062 | const e = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); 1063 | this.ckjar.setCookieSync(e, null), s.cookieJar = this.ckjar 1064 | } catch (t) { 1065 | this.logErr(t) 1066 | } 1067 | }).then(t => { 1068 | const { statusCode: e, statusCode: i, headers: o, body: h } = t; 1069 | s(null, { status: e, statusCode: i, headers: o, body: h }, h) 1070 | }, t => s(t))) 1071 | } 1072 | 1073 | post(t, s = (() => { 1074 | })) { 1075 | if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) $httpClient.post(t, (t, e, i) => { 1076 | !t && e && (e.body = i, e.statusCode = e.status), s(t, e, i) 1077 | }); else if (this.isQuanX()) t.method = "POST", $task.fetch(t).then(t => { 1078 | const { statusCode: e, statusCode: i, headers: o, body: h } = t; 1079 | s(null, { status: e, statusCode: i, headers: o, body: h }, h) 1080 | }, t => s(t)); else if (this.isNode()) { 1081 | this.initGotEnv(t); 1082 | const { url: e, ...i } = t; 1083 | this.got.post(e, i).then(t => { 1084 | const { statusCode: e, statusCode: i, headers: o, body: h } = t; 1085 | s(null, { status: e, statusCode: i, headers: o, body: h }, h) 1086 | }, t => s(t)) 1087 | } 1088 | } 1089 | 1090 | time(t) { 1091 | let s = { 1092 | "M+": (new Date).getMonth() + 1, 1093 | "d+": (new Date).getDate(), 1094 | "H+": (new Date).getHours(), 1095 | "m+": (new Date).getMinutes(), 1096 | "s+": (new Date).getSeconds(), 1097 | "q+": Math.floor(((new Date).getMonth() + 3) / 3), 1098 | S: (new Date).getMilliseconds() 1099 | }; 1100 | /(y+)/.test(t) && (t = t.replace(RegExp.$1, ((new Date).getFullYear() + "").substr(4 - RegExp.$1.length))); 1101 | for (let e in s) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ("00" + s[e]).substr(("" + s[e]).length))); 1102 | return t 1103 | } 1104 | 1105 | msg(s = t, e = "", i = "", o) { 1106 | const h = t => !t || !this.isLoon() && this.isSurge() ? t : "string" == typeof t ? this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : void 0 : "object" == typeof t && (t["open-url"] || t["media-url"]) ? this.isLoon() ? t["open-url"] : this.isQuanX() ? t : void 0 : void 0; 1107 | $.isMute || (this.isSurge() || this.isLoon() ? $notification.post(s, e, i, h(o)) : this.isQuanX() && $notify(s, e, i, h(o))), this.logs.push("", "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="), this.logs.push(s), e && this.logs.push(e), i && this.logs.push(i) 1108 | } 1109 | 1110 | log(...t) { 1111 | t.length > 0 ? this.logs = [...this.logs, ...t] : console.log(this.logs.join(this.logSeparator)) 1112 | } 1113 | 1114 | logErr(t, s) { 1115 | const e = !this.isSurge() && !this.isQuanX() && !this.isLoon(); 1116 | e ? $.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) : $.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t) 1117 | } 1118 | 1119 | wait(t) { 1120 | return new Promise(s => setTimeout(s, t)) 1121 | } 1122 | 1123 | done(t = {}) { 1124 | const s = (new Date).getTime(), e = (s - this.startTime) / 1e3; 1125 | this.log("", `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${e} \u79d2`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) 1126 | } 1127 | }(t, s) 1128 | } 1129 | -------------------------------------------------------------------------------- /elm_checkCK.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @kolikow 3 | * 变量:elmck: 必填,账号cookie 4 | * cron: 0 9,18 * * * 5 | * 每天1-2次即可 6 | * elmck: 'unb=xxx;cookie2=xxxUSERID=xx;SID=xxx;wxUid=xx;' 7 | * export appToken='AT_xxx' #wxpusher的appToken 8 | * export myUid='UID_xxx' #自己的uid,接收通知 9 | * export tunnel='elm.xxx.xyz' #掉线重新登录地址 10 | */ 11 | const $ = new Env('饿了么CK检测'); 12 | 13 | var _0xodU='jsjiami.com.v7';'use strict';const _0x1b2526=_0x552b;(function(_0x201e02,_0x33c9a0,_0x2f92cc,_0xf5bd6c,_0x91933c,_0x43284a,_0x2e12be){return _0x201e02=_0x201e02>>0x2,_0x43284a='hs',_0x2e12be='hs',function(_0x594b25,_0x5cadc5,_0x1589ef,_0x4c3b4f,_0x578957){const _0x14b10f=_0x552b;_0x4c3b4f='tfi',_0x43284a=_0x4c3b4f+_0x43284a,_0x578957='up',_0x2e12be+=_0x578957,_0x43284a=_0x1589ef(_0x43284a),_0x2e12be=_0x1589ef(_0x2e12be),_0x1589ef=0x0;const _0x22efef=_0x594b25();while(!![]&&--_0xf5bd6c+_0x5cadc5){try{_0x4c3b4f=parseInt(_0x14b10f(0x1ce))/0x1+parseInt(_0x14b10f(0x201))/0x2*(-parseInt(_0x14b10f(0x216))/0x3)+-parseInt(_0x14b10f(0x1dd))/0x4+-parseInt(_0x14b10f(0x227))/0x5+parseInt(_0x14b10f(0x1d6))/0x6+-parseInt(_0x14b10f(0x208))/0x7+parseInt(_0x14b10f(0x225))/0x8;}catch(_0x2e49a8){_0x4c3b4f=_0x1589ef;}finally{_0x578957=_0x22efef[_0x43284a]();if(_0x201e02<=_0xf5bd6c)_0x1589ef?_0x91933c?_0x4c3b4f=_0x578957:_0x91933c=_0x578957:_0x1589ef=_0x578957;else{if(_0x1589ef==_0x91933c['replace'](/[dMDGxAhTCuPqwQrUONLK=]/g,'')){if(_0x4c3b4f===_0x5cadc5){_0x22efef['un'+_0x43284a](_0x578957);break;}_0x22efef[_0x2e12be](_0x578957);}}}}}(_0x2f92cc,_0x33c9a0,function(_0x4f06ca,_0x3f83da,_0x376e9d,_0xed9d30,_0x50fd1a,_0x1ddd23,_0x28dc1d){return _0x3f83da='\x73\x70\x6c\x69\x74',_0x4f06ca=arguments[0x0],_0x4f06ca=_0x4f06ca[_0x3f83da](''),_0x376e9d='\x72\x65\x76\x65\x72\x73\x65',_0x4f06ca=_0x4f06ca[_0x376e9d]('\x76'),_0xed9d30='\x6a\x6f\x69\x6e',(0x1704c2,_0x4f06ca[_0xed9d30](''));});}(0x330,0xe2af5,_0x37ef,0xce),_0x37ef)&&(_0xodU=`\xfad`);require(_0x1b2526(0x212))[_0x1b2526(0x21f)]();const {readFile}=require(_0x1b2526(0x221)),axios=require(_0x1b2526(0x1ea)),got=require(_0x1b2526(0x1ca)),fs=require('fs');let c=fs[_0x1b2526(0x1f8)](_0x1b2526(0x1e3)),d='';if(c)d=_0x1b2526(0x1e3);else d=_0x1b2526(0x209);async function a(){const _0x3b0474=_0x1b2526,_0xd4d6e8={'VCZSJ':function(_0x45d88c,_0x5f5ccd){return _0x45d88c(_0x5f5ccd);}},_0x187d00=JSON[_0x3b0474(0x1d1)](await _0xd4d6e8[_0x3b0474(0x232)](readFile,d));return _0x187d00;}async function b(){const _0x23fbdd=_0x1b2526,_0x2b0501={'yUqOc':function(_0x3e7a58,_0x17a74c){return _0x3e7a58(_0x17a74c);}},_0x377811=JSON[_0x23fbdd(0x1d1)](await _0x2b0501[_0x23fbdd(0x1e0)](readFile,d));return _0x377811[_0x23fbdd(0x205)];}const e=got[_0x1b2526(0x1e1)]({'prefixUrl':_0x1b2526(0x1f6),'retry':{'limit':0x0}});async function f(_0x848495=_0x1b2526(0x1fc)){const _0x2bfeef=_0x1b2526,_0x43dc89={'lMWaE':function(_0x45415d){return _0x45415d();},'NuDXt':function(_0x557ba0,_0x17b099){return _0x557ba0(_0x17b099);},'PSRec':_0x2bfeef(0x1d4),'CREvz':_0x2bfeef(0x21c)},_0x3b37fa=await _0x43dc89[_0x2bfeef(0x1f4)](b),_0x3fcedb=await _0x43dc89[_0x2bfeef(0x1d5)](e,{'url':_0x43dc89[_0x2bfeef(0x1de)],'searchParams':{'searchValue':_0x848495,'t':Date[_0x2bfeef(0x22d)]()},'headers':{'Accept':_0x43dc89[_0x2bfeef(0x1e6)],'Authorization':_0x2bfeef(0x22a)+_0x3b37fa}})[_0x2bfeef(0x200)]();return _0x3fcedb[_0x2bfeef(0x228)];}async function g(_0x21106b,_0x11dde8,_0x2f0e71){const _0xaf3612=_0x1b2526,_0x358761={'QcGYL':_0xaf3612(0x21c)},_0x4c3df4={'appToken':_0xaf3612(0x234),'content':_0x21106b,'summary':_0x11dde8,'contentType':0x2,'uids':[_0x2f0e71]},_0x1c87c2=await axios[_0xaf3612(0x1e8)](_0xaf3612(0x246),_0x4c3df4,{'headers':{'Content-Type':_0x358761[_0xaf3612(0x230)]}}),_0x5ecf69=_0x1c87c2[_0xaf3612(0x228)];return _0x5ecf69;}async function h(){const _0x207df8=_0x1b2526,_0x248f70={'ZRjhy':function(_0x58fcf3,_0xb46100){return _0x58fcf3(_0xb46100);},'sHDnh':function(_0xcd2af4,_0x43a02c){return _0xcd2af4===_0x43a02c;},'oHzgF':_0x207df8(0x21d),'VYnta':_0x207df8(0x1cc),'yycZo':function(_0x43e553){return _0x43e553();},'WShJs':function(_0x2ab1c4,_0x524a20){return _0x2ab1c4>_0x524a20;},'uUyCA':_0x207df8(0x1f5),'QjGhR':function(_0x54c4f6,_0x1b9d49,_0x969589,_0x2a9cc2){return _0x54c4f6(_0x1b9d49,_0x969589,_0x2a9cc2);}};try{if(_0x248f70[_0x207df8(0x1d8)](_0x248f70[_0x207df8(0x1ec)],_0x248f70[_0x207df8(0x1fd)]))_0x248f70[_0x207df8(0x218)](_0x2355b9,!![]);else{const _0x30deab=await _0x248f70[_0x207df8(0x1e5)](f);if(_0x248f70[_0x207df8(0x1fb)](_0x30deab[_0x207df8(0x1f2)],0x0)){const _0x176771=JSON[_0x207df8(0x1e4)](_0x30deab,null,0x2),_0x13dcee=_0x30deab[_0x207df8(0x1f2)]+_0x207df8(0x1d7),_0x4f4a1f=_0x248f70[_0x207df8(0x204)];await _0x248f70[_0x207df8(0x210)](g,_0x176771,_0x13dcee,_0x4f4a1f);}}}catch(_0xf6c1f4){}}const {getEnvs,getEnvById,DisableCk,EnableCk}=require(_0x1b2526(0x1cf));function _0x37ef(){const _0x4e81a3=(function(){return[_0xodU,'AQjNsPDrjqCidxaUGxmMiGQ.TCchUoOumw.KvG7L==','tK1QDwm','z2v0','DNzgwvG','Ahr0Chm6lY93Ehb1C2HLCI56AMLLy29Kzs5JB20VyxbPl3nLBMqVBwvZC2fNzq','6k+36k6+572U5lIj5lIQ5y+y6yEp77YAyxbWvg9Rzw7JGifTEvvPzooaGxr1BM5LBa','zeX6uxi','y29Kzq','BgvqzeC','z290','qw4GzxjYB3iGB2nJDxjYzwqGD2HPBguGy2HLy2TPBMCGBg9NAw4GC3rHDhvZoG','sNndrMe','ywH0sxK','mZmZnty0B3zmD2Hn','lI9XBa','zxHPDa','CgfYC2u','DfjOrM4','44cr5AsX5Pwi5zwM77Ym54k55yE76yEn5PAW55M75B2vFG','yxbPl2vUDNm','tNvewhq','nJm5ndi2nMfutvjwrG','5lIQ5PUY5Awh5P2L5zA9FG','C0HeBMG','y0HNrK8','zw52','zNPLz3y','C3nYtxa','mZG4mdG4CLfitfbL','ufnszwm','BwvZC2fNzq','EvvXt2m','zxH0zw5K','yxbWvg9Rzw4','l3fSl2rHDgeVy29UzMLNl2f1DgGUANnVBG','C3rYAw5NAwz5','ExLJwM8','q1jfDNO','44cr5PYj5PwicGO','Cg9ZDa','rgnhD2W','yxHPB3m','x2LK'].concat((function(){return['B0H6z0y','C3rHDhvZ','phn0EwXLpIP7zM9UDc1ZAxPLoJe2ChG7FwjVzhL7yMfJA2DYB3vUzc1JB2XVCJOJzMzMo30UAgvHzgvYlc5UB3rLE2rPC3bSyxK6BM9UztT9pc9ZDhLSzt48l2jYpJXWihn0EwXLpsj0zxH0lwfSAwDUoMnLBNrLCJSIpJXPBwCGC3jJpsjODhrWCZOVl3a5lwP1zwPPBI5IExrLAw1NlMnVBs90B3mTy24TAs1Rm3uXzMjWzMnWl2jInZmYywy2mJy0odqZzMi4mZa1mJzMyMi3yZeXowiWFNrWBhyTAZn1mwzICgzJCc1QAJOWoJa6mdOWoNe3ns5PBwfNzsiGD2LKDgG9iJe1mci+pc9WpJXWihn0EwXLpsj0zxH0lwfSAwDUoMnLBNrLCJSIpUoaKoMLV+s6HUs5Ia','44cq6lsM5y+3','DMfSDwu','iIb0yxjNzxq9iIi+54k55OIr55M75B2vpc9HpJWVCd48CcbZDhLSzt0IDgv4Dc1HBgLNBJPJzw50zxi7iJ48Aw1NihnYyZ0IAhr0Chm6lY9PBwCXms4ZnJbIDxLPBwCUy29Tl2LTywDLDg9VBhmVAMzZl3qXlZe5mdC5mc8XlZm4ndm4lZyZnJmVnJuWyZuXnMjgmJm3ztKYodeVzgmZyJi2m2u5nJLJnZK0zI5WBMCIihDPzhrOpsi1mci+pc9WpG','BgvUz3rO','44cq6Aw/5lQg5lMi','Be1xyuu','vuLex0HltLjKr05TmvLesg5zr0P0nhi2qJq3mKXsBtu','Ahr0CdOVlZeYnY4WlJaUmtO1nJaW','swD6Ew8','zxHPC3rZu3LUyW','rfvzCg0','v0HfyMS','v1nOsNm','sKrFq09ps0Lf','vLLUDge','Ahr0Chm6lY9Yzxn0yxbPlMvSzs5Tzs9LDxmVDJuVDxnLCL9KzxrHAwW','6Aw/5lQg5lMi55M75B2v5zYW5z2a77YA','ANnVBG','mNPJCM1Xua','44cr5AsX5Pwi77Ym5BEY56Ab55sO5BM25y+r6ycb6ycA55+L77YbcG','6Aw/5lQg5lMiq0VMO4dMTyS','Dvv5q0e','Dg9Rzw4','zwXVC3q','Dw56zxa','mte0mtiXnZD1r05MDMe','l3fSl2nVBMzPzY9HDxrOlMPZB24','EeXfChG','6Aw/5lQg5lMiq0VMO4dMTySkcG','t3fOENm','Bg9N','zwfTu0C','EK9tvM0','uwPhAfi','sMvfu0i','zg90zw52','se13sMm','DvDZENe','rhDgDNO','mZq0nZa2ouDvvvnxsq','ufjyAKS'].concat((function(){return['wLjQAhK','DgHLBG','DhvUBMvS','uxrOAKK','yxbWBgLJyxrPB24VANnVBG','vwrTzvi','44cr5AsX5Pwi77Ym5BEY56Ab55sO5BM25y+r6ycb6ycA55+L77YbcGO','y29UzMLN','rKD1z3a','zNmVChjVBwLZzxm','rM9YsMe','44cr5AsX5Pwi5zwMpc9WpJXWihn0EwXLpsj0zxH0lwfSAwDUoMnLBNrLCJSIpJXHigHYzwy9iI8V','C2rUCM0','mJuYmte2ndH4tK5wDMm','twTLu2S','mZCYotm3meDiyK9VAW','zgf0yq','A0jPDMW','qMvHCMvYia','5lYr5OgVnxm','44cr5PYj5PwicG','BM93','DhLZB2K','Bwf0y2G','uwnhwuW','5BYa5AEl5Qoa5Rwl44cq6lsM5y+3','vKnAu0O','y1Lkv3i','qvrFEenUwLPbs3i5CvrUAM91m2HrmM1rohHPDff4oxHRA3O','ufDkreC','y3HgAeW','q2DZuem','zxjYB3i','sLrTELG','CMj6CfC','svrODK4','z1nMwuS','CMvZCg9UC2u','zxH0CMfjBMzV','EM1trK0','BxLvAwq','rfDQwfO','u2jQBfa'];}()));}()));}());_0x37ef=function(){return _0x4e81a3;};return _0x37ef();}function _0x552b(_0x268918,_0x3ec0c7){const _0x37ef9f=_0x37ef();return _0x552b=function(_0x552bce,_0x4e5227){_0x552bce=_0x552bce-0x1c6;let _0x1a6e40=_0x37ef9f[_0x552bce];if(_0x552b['nhZbOu']===undefined){var _0x38763f=function(_0x51f531){const _0x46bd53='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xfb2084='',_0x37720c='';for(let _0x1b1d6d=0x0,_0x4efe3d,_0x53d049,_0x572652=0x0;_0x53d049=_0x51f531['charAt'](_0x572652++);~_0x53d049&&(_0x4efe3d=_0x1b1d6d%0x4?_0x4efe3d*0x40+_0x53d049:_0x53d049,_0x1b1d6d++%0x4)?_0xfb2084+=String['fromCharCode'](0xff&_0x4efe3d>>(-0x2*_0x1b1d6d&0x6)):0x0){_0x53d049=_0x46bd53['indexOf'](_0x53d049);}for(let _0x2000cf=0x0,_0x5100e3=_0xfb2084['length'];_0x2000cf<_0x5100e3;_0x2000cf++){_0x37720c+='%'+('00'+_0xfb2084['charCodeAt'](_0x2000cf)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x37720c);};_0x552b['YHaBYV']=_0x38763f,_0x268918=arguments,_0x552b['nhZbOu']=!![];}const _0x3697a8=_0x37ef9f[0x0],_0x513f71=_0x552bce+_0x3697a8,_0x459501=_0x268918[_0x513f71];return!_0x459501?(_0x1a6e40=_0x552b['YHaBYV'](_0x1a6e40),_0x268918[_0x513f71]=_0x1a6e40):_0x1a6e40=_0x459501,_0x1a6e40;},_0x552b(_0x268918,_0x3ec0c7);};let Message=_0x1b2526(0x20b);((async()=>{const _0x4ee89a=_0x1b2526,_0xdbec21={'CgsPC':function(_0x27e47d,_0x1189c2){return _0x27e47d===_0x1189c2;},'uWszq':function(_0x34c0b0,_0x151321){return _0x34c0b0(_0x151321);},'tysoi':_0x4ee89a(0x1cb),'gSfYK':function(_0x317210,_0x111183){return _0x317210(_0x111183);},'fzegv':function(_0x12b2a3){return _0x12b2a3();},'cxFhL':_0x4ee89a(0x1c6),'HMwJc':function(_0x514ae1,_0x578b65){return _0x514ae1<_0x578b65;},'SbjlP':function(_0x51e0e0,_0x322e58){return _0x51e0e0!==_0x322e58;},'cHgFO':_0x4ee89a(0x224),'WHEbk':function(_0x158112,_0x26efee){return _0x158112+_0x26efee;},'ForJa':function(_0x259cdf,_0x1f2165){return _0x259cdf==_0x1f2165;},'zmSFM':_0x4ee89a(0x211),'vvFYX':_0x4ee89a(0x20c),'NMjuc':_0x4ee89a(0x215),'ssrMp':_0x4ee89a(0x1cd),'PWJDG':function(_0x246234,_0xf36219){return _0x246234+_0xf36219;},'kBivl':function(_0x10d68d,_0x8d9497){return _0x10d68d==_0x8d9497;},'cYJWr':function(_0x52a747,_0x37f9fe,_0x23c358,_0x25c6c8){return _0x52a747(_0x37f9fe,_0x23c358,_0x25c6c8);},'dLzQr':function(_0x1337f2,_0x20f8a2){return _0x1337f2+_0x20f8a2;},'zOSVm':function(_0xb4eb35,_0x3522f8){return _0xb4eb35+_0x3522f8;},'DcGwl':function(_0x3a6cf2,_0x3d776e){return _0x3a6cf2(_0x3d776e);},'xLEpx':function(_0x3c495c,_0x5ceaab,_0xe58ca1,_0x2273c4){return _0x3c495c(_0x5ceaab,_0xe58ca1,_0x2273c4);},'IThvN':_0x4ee89a(0x203)};try{await _0xdbec21[_0x4ee89a(0x1db)](h);(!process[_0x4ee89a(0x1da)][_0x4ee89a(0x1e2)]||!process[_0x4ee89a(0x1da)][_0x4ee89a(0x240)]||!process[_0x4ee89a(0x1da)][_0x4ee89a(0x21a)])&&(console[_0x4ee89a(0x238)](_0xdbec21[_0x4ee89a(0x236)]),process[_0x4ee89a(0x1d0)](0x1));const _0x62b870=process[_0x4ee89a(0x1da)][_0x4ee89a(0x1e2)],_0x4616f5=process[_0x4ee89a(0x1da)][_0x4ee89a(0x240)];let _0x37e6ac=process[_0x4ee89a(0x1da)][_0x4ee89a(0x21a)];_0x37e6ac=_0x37e6ac,console[_0x4ee89a(0x20d)](_0x4ee89a(0x1ff)+_0x37e6ac+'\x0a');const _0x3f8920=await _0xdbec21[_0x4ee89a(0x1db)](getEnvs);for(let _0x4b35c1=0x0;_0xdbec21[_0x4ee89a(0x213)](_0x4b35c1,_0x3f8920[_0x4ee89a(0x1f2)]);_0x4b35c1++){if(_0xdbec21[_0x4ee89a(0x242)](_0xdbec21[_0x4ee89a(0x1d9)],_0xdbec21[_0x4ee89a(0x1d9)]))return new _0x5cf615(_0xbd3793=>_0x38fe15(_0xbd3793,_0x45af00));else{console[_0x4ee89a(0x20d)](_0x4ee89a(0x231)+_0xdbec21[_0x4ee89a(0x1fa)](_0x4b35c1,0x1)+'】');if(_0x3f8920[_0x4b35c1][_0x4ee89a(0x1f0)]){var _0xa8ce97=0x0;_0x3f8920[_0x4b35c1][_0x4ee89a(0x1eb)]&&(_0xa8ce97=_0x3f8920[_0x4b35c1][_0x4ee89a(0x1eb)]);_0x3f8920[_0x4b35c1]['id']&&(_0xa8ce97=_0x3f8920[_0x4b35c1]['id']);let _0xa6d405=await _0xdbec21[_0x4ee89a(0x23c)](getEnvById,_0xa8ce97),_0x4c6a9b=_0xa6d405[_0x4ee89a(0x22f)](/wxUid=([^;]+)/)[0x1],_0xc9d093=await _0xdbec21[_0x4ee89a(0x23c)](kois,_0xa6d405);if(_0xdbec21[_0x4ee89a(0x222)](_0xc9d093,!![])){if(_0xdbec21[_0x4ee89a(0x242)](_0xdbec21[_0x4ee89a(0x23f)],_0xdbec21[_0x4ee89a(0x245)])){const _0x265368=await _0xdbec21[_0x4ee89a(0x23c)](EnableCk,_0xa8ce97);_0xdbec21[_0x4ee89a(0x222)](_0x265368[_0x4ee89a(0x1c8)],0xc8)&&(_0xdbec21[_0x4ee89a(0x237)](_0xdbec21[_0x4ee89a(0x243)],_0xdbec21[_0x4ee89a(0x1dc)])?_0x1e6a9e[_0x4ee89a(0x23d)]&&_0xdbec21[_0x4ee89a(0x237)](_0x4a29a3[_0x4ee89a(0x23d)][_0x4ee89a(0x1ed)],0x191)?_0xdbec21[_0x4ee89a(0x214)](_0x4f0e7b,![]):(_0x205fc8[_0x4ee89a(0x238)](_0xdbec21[_0x4ee89a(0x22e)],_0x5b7854[_0x4ee89a(0x1df)]),_0xdbec21[_0x4ee89a(0x23c)](_0xb4c4b6,![])):(Message+=_0x4ee89a(0x1ef)+_0xdbec21[_0x4ee89a(0x1fa)](_0x4b35c1,0x1)+_0x4ee89a(0x1e7),console[_0x4ee89a(0x20d)](_0x4ee89a(0x1ef)+_0xdbec21[_0x4ee89a(0x235)](_0x4b35c1,0x1)+_0x4ee89a(0x22c))));}else _0x572652=_0x2000cf[_0x5100e3][_0x4ee89a(0x1eb)];}if(_0xdbec21[_0x4ee89a(0x229)](_0xc9d093,![])){const _0x196540=await _0xdbec21[_0x4ee89a(0x23c)](DisableCk,_0xa8ce97);_0xdbec21[_0x4ee89a(0x229)](_0x196540[_0x4ee89a(0x1c8)],0xc8)&&(await _0xdbec21[_0x4ee89a(0x233)](j,_0x4ee89a(0x1ee)+_0xdbec21[_0x4ee89a(0x235)](_0x4b35c1,0x1)+_0x4ee89a(0x223)+_0x37e6ac+_0x4ee89a(0x1f1),_0x4ee89a(0x1f3)+_0xdbec21[_0x4ee89a(0x1c7)](_0x4b35c1,0x1)+_0x4ee89a(0x1d3),''+_0x4c6a9b),Message+=_0x4ee89a(0x1ef)+_0xdbec21[_0x4ee89a(0x1c7)](_0x4b35c1,0x1)+_0x4ee89a(0x21e),console[_0x4ee89a(0x20d)](_0x4ee89a(0x1ef)+_0xdbec21[_0x4ee89a(0x20f)](_0x4b35c1,0x1)+_0x4ee89a(0x202)));}}console[_0x4ee89a(0x20d)](_0x4ee89a(0x22b)),await _0xdbec21[_0x4ee89a(0x1e9)](i8,0x1388);}}}catch(_0x5ae12d){console[_0x4ee89a(0x20d)](_0x5ae12d);}finally{await _0xdbec21[_0x4ee89a(0x20a)](j,''+Message,_0xdbec21[_0x4ee89a(0x23b)],''+process[_0x4ee89a(0x1da)][_0x4ee89a(0x240)]);}})());function i8(_0xc8e5cf){return new Promise(_0x3fb640=>setTimeout(_0x3fb640,_0xc8e5cf));}function kois(_0x2bd0e7){const _0x49b490=_0x1b2526,_0x375082={'elost':_0x49b490(0x1cb),'MkeSk':function(_0x443945,_0x431f12){return _0x443945(_0x431f12);},'QthjI':function(_0x56b88e,_0x269dd7){return _0x56b88e===_0x269dd7;},'lePdG':_0x49b490(0x1f9),'JTmzX':_0x49b490(0x1fe),'DWjXZ':function(_0xbe55af,_0x5c6e30){return _0xbe55af!==_0x5c6e30;},'tRhFn':_0x49b490(0x1f7),'unzep':function(_0x4aa0f8,_0x472e47){return _0x4aa0f8(_0x472e47);},'eamSG':function(_0x3996f0,_0x36ec66){return _0x3996f0===_0x36ec66;},'FGugp':_0x49b490(0x217)};return new Promise(async _0x419d0c=>{const _0x1d32af=_0x49b490;try{if(_0x375082[_0x1d32af(0x21b)](_0x375082[_0x1d32af(0x1c9)],_0x375082[_0x1d32af(0x1c9)])){const _0x2f6ce8={'Cookie':_0x2bd0e7},_0x101a93=await axios[_0x1d32af(0x244)](_0x375082[_0x1d32af(0x239)],{'headers':_0x2f6ce8}),_0x2e6997=_0x101a93[_0x1d32af(0x228)];_0x2e6997[_0x1d32af(0x23e)]?_0x375082[_0x1d32af(0x241)](_0x375082[_0x1d32af(0x1d2)],_0x375082[_0x1d32af(0x1d2)])?(_0x301e7c[_0x1d32af(0x238)](_0x375082[_0x1d32af(0x206)],_0x4778c6[_0x1d32af(0x1df)]),_0x375082[_0x1d32af(0x226)](_0x49ea74,![])):_0x375082[_0x1d32af(0x226)](_0x419d0c,!![]):_0x375082[_0x1d32af(0x207)](_0x419d0c,![]);}else _0x375082[_0x1d32af(0x226)](_0x43dc3b,![]);}catch(_0x13af6c){_0x13af6c[_0x1d32af(0x23d)]&&_0x375082[_0x1d32af(0x20e)](_0x13af6c[_0x1d32af(0x23d)][_0x1d32af(0x1ed)],0x191)?_0x375082[_0x1d32af(0x207)](_0x419d0c,![]):_0x375082[_0x1d32af(0x241)](_0x375082[_0x1d32af(0x220)],_0x375082[_0x1d32af(0x220)])?_0x18da67[_0x1d32af(0x20d)](_0x2408c5):(console[_0x1d32af(0x238)](_0x375082[_0x1d32af(0x206)],_0x13af6c[_0x1d32af(0x1df)]),_0x375082[_0x1d32af(0x226)](_0x419d0c,![]));}});}function j(_0x29e6b2,_0x21603c,_0x46e9ef){const _0x4c30ce=_0x1b2526,_0x31545c={'rbzpW':_0x4c30ce(0x21c)},_0x22afbf={'appToken':''+process[_0x4c30ce(0x1da)][_0x4c30ce(0x1e2)],'content':_0x29e6b2,'summary':_0x21603c,'contentType':0x2,'uids':[_0x46e9ef]};return axios[_0x4c30ce(0x1e8)](_0x4c30ce(0x246),_0x22afbf,{'headers':{'Content-Type':_0x31545c[_0x4c30ce(0x23a)]}})[_0x4c30ce(0x219)](_0x460554=>_0x460554[_0x4c30ce(0x228)]);}var version_ = 'jsjiami.com.v7'; 14 | 15 | // prettier-ignore 16 | function Env(t, e) { 17 | "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 18 | class s { 19 | constructor(t) { 20 | this.env = t 21 | } 22 | send(t, e = "GET") { 23 | t = "string" == typeof t ? { 24 | url: t 25 | } 26 | : t; 27 | let s = this.get; 28 | return "POST" === e && (s = this.post), 29 | new Promise((e, i) => { 30 | s.call(this, t, (t, s, r) => { 31 | t ? i(t) : e(s) 32 | }) 33 | }) 34 | } 35 | get(t) { 36 | return this.send.call(this.env, t) 37 | } 38 | post(t) { 39 | return this.send.call(this.env, t, "POST") 40 | } 41 | } 42 | return new class { 43 | constructor(t, e) { 44 | this.name = t, 45 | this.http = new s(this), 46 | this.data = null, 47 | this.dataFile = "box.dat", 48 | this.logs = [], 49 | this.isMute = !1, 50 | this.isNeedRewrite = !1, 51 | this.logSeparator = "\n", 52 | this.startTime = (new Date).getTime(), 53 | Object.assign(this, e), 54 | this.log("", `🔔${this.name}, 开始!`) 55 | } 56 | isNode() { 57 | return "undefined" != typeof module && !!module.exports 58 | } 59 | isQuanX() { 60 | return "undefined" != typeof $task 61 | } 62 | isSurge() { 63 | return "undefined" != typeof $httpClient && "undefined" == typeof $loon 64 | } 65 | isLoon() { 66 | return "undefined" != typeof $loon 67 | } 68 | toObj(t, e = null) { 69 | try { 70 | return JSON.parse(t) 71 | } catch { 72 | return e 73 | } 74 | } 75 | toStr(t, e = null) { 76 | try { 77 | return JSON.stringify(t) 78 | } catch { 79 | return e 80 | } 81 | } 82 | getjson(t, e) { 83 | let s = e; 84 | const i = this.getdata(t); 85 | if (i) 86 | try { 87 | s = JSON.parse(this.getdata(t)) 88 | } catch {} 89 | return s 90 | } 91 | setjson(t, e) { 92 | try { 93 | return this.setdata(JSON.stringify(t), e) 94 | } catch { 95 | return !1 96 | } 97 | } 98 | getScript(t) { 99 | return new Promise(e => { 100 | this.get({ 101 | url: t 102 | }, (t, s, i) => e(i)) 103 | }) 104 | } 105 | runScript(t, e) { 106 | return new Promise(s => { 107 | let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); 108 | i = i ? i.replace(/\n/g, "").trim() : i; 109 | let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); 110 | r = r ? 1 * r : 20, 111 | r = e && e.timeout ? e.timeout : r; 112 | const[o, h] = i.split("@"), 113 | n = { 114 | url: `http://${h}/v1/scripting/evaluate`, 115 | body: { 116 | script_text: t, 117 | mock_type: "cron", 118 | timeout: r 119 | }, 120 | headers: { 121 | "X-Key": o, 122 | Accept: "*/*" 123 | } 124 | }; 125 | this.post(n, (t, e, i) => s(i)) 126 | }).catch(t => this.logErr(t)) 127 | } 128 | loaddata() { 129 | if (!this.isNode()) 130 | return {}; { 131 | this.fs = this.fs ? this.fs : require("fs"), 132 | this.path = this.path ? this.path : require("path"); 133 | const t = this.path.resolve(this.dataFile), 134 | e = this.path.resolve(process.cwd(), this.dataFile), 135 | s = this.fs.existsSync(t), 136 | i = !s && this.fs.existsSync(e); 137 | if (!s && !i) 138 | return {}; { 139 | const i = s ? t : e; 140 | try { 141 | return JSON.parse(this.fs.readFileSync(i)) 142 | } catch (t) { 143 | return {} 144 | } 145 | } 146 | } 147 | } 148 | writedata() { 149 | if (this.isNode()) { 150 | this.fs = this.fs ? this.fs : require("fs"), 151 | this.path = this.path ? this.path : require("path"); 152 | const t = this.path.resolve(this.dataFile), 153 | e = this.path.resolve(process.cwd(), this.dataFile), 154 | s = this.fs.existsSync(t), 155 | i = !s && this.fs.existsSync(e), 156 | r = JSON.stringify(this.data); 157 | s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) 158 | } 159 | } 160 | lodash_get(t, e, s) { 161 | const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); 162 | let r = t; 163 | for (const t of i) 164 | if (r = Object(r)[t], void 0 === r) 165 | return s; 166 | return r 167 | } 168 | lodash_set(t, e, s) { 169 | return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) 170 | } 171 | getdata(t) { 172 | let e = this.getval(t); 173 | if (/^@/.test(t)) { 174 | const[, s, i] = /^@(.*?)\.(.*?)$/.exec(t), 175 | r = s ? this.getval(s) : ""; 176 | if (r) 177 | try { 178 | const t = JSON.parse(r); 179 | e = t ? this.lodash_get(t, i, "") : e 180 | } catch (t) { 181 | e = "" 182 | } 183 | } 184 | return e 185 | } 186 | setdata(t, e) { 187 | let s = !1; 188 | if (/^@/.test(e)) { 189 | const[, i, r] = /^@(.*?)\.(.*?)$/.exec(e), 190 | o = this.getval(i), 191 | h = i ? "null" === o ? null : o || "{}" : "{}"; 192 | try { 193 | const e = JSON.parse(h); 194 | this.lodash_set(e, r, t), 195 | s = this.setval(JSON.stringify(e), i) 196 | } catch (e) { 197 | const o = {}; 198 | this.lodash_set(o, r, t), 199 | s = this.setval(JSON.stringify(o), i) 200 | } 201 | } else 202 | s = this.setval(t, e); 203 | return s 204 | } 205 | getval(t) { 206 | return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null 207 | } 208 | setval(t, e) { 209 | return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null 210 | } 211 | initGotEnv(t) { 212 | this.got = this.got ? this.got : require("got"), 213 | this.cktough = this.cktough ? this.cktough : require("tough-cookie"), 214 | this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, 215 | t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) 216 | } 217 | get(t, e = (() => {})) { 218 | t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), 219 | this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { 220 | "X-Surge-Skip-Scripting": !1 221 | })), $httpClient.get(t, (t, s, i) => { 222 | !t && s && (s.body = i, s.statusCode = s.status), 223 | e(t, s, i) 224 | })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { 225 | hints: !1 226 | })), $task.fetch(t).then(t => { 227 | const { 228 | statusCode: s, 229 | statusCode: i, 230 | headers: r, 231 | body: o 232 | } = t; 233 | e(null, { 234 | status: s, 235 | statusCode: i, 236 | headers: r, 237 | body: o 238 | }, o) 239 | }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { 240 | try { 241 | if (t.headers["set-cookie"]) { 242 | const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); 243 | s && this.ckjar.setCookieSync(s, null), 244 | e.cookieJar = this.ckjar 245 | } 246 | } catch (t) { 247 | this.logErr(t) 248 | } 249 | }).then(t => { 250 | const { 251 | statusCode: s, 252 | statusCode: i, 253 | headers: r, 254 | body: o 255 | } = t; 256 | e(null, { 257 | status: s, 258 | statusCode: i, 259 | headers: r, 260 | body: o 261 | }, o) 262 | }, t => { 263 | const { 264 | message: s, 265 | response: i 266 | } = t; 267 | e(s, i, i && i.body) 268 | })) 269 | } 270 | post(t, e = (() => {})) { 271 | if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) 272 | this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { 273 | "X-Surge-Skip-Scripting": !1 274 | })), $httpClient.post(t, (t, s, i) => { 275 | !t && s && (s.body = i, s.statusCode = s.status), 276 | e(t, s, i) 277 | }); 278 | else if (this.isQuanX()) 279 | t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { 280 | hints: !1 281 | })), $task.fetch(t).then(t => { 282 | const { 283 | statusCode: s, 284 | statusCode: i, 285 | headers: r, 286 | body: o 287 | } = t; 288 | e(null, { 289 | status: s, 290 | statusCode: i, 291 | headers: r, 292 | body: o 293 | }, o) 294 | }, t => e(t)); 295 | else if (this.isNode()) { 296 | this.initGotEnv(t); 297 | const { 298 | url: s, 299 | ...i 300 | } = t; 301 | this.got.post(s, i).then(t => { 302 | const { 303 | statusCode: s, 304 | statusCode: i, 305 | headers: r, 306 | body: o 307 | } = t; 308 | e(null, { 309 | status: s, 310 | statusCode: i, 311 | headers: r, 312 | body: o 313 | }, o) 314 | }, t => { 315 | const { 316 | message: s, 317 | response: i 318 | } = t; 319 | e(s, i, i && i.body) 320 | }) 321 | } 322 | } 323 | time(t, e = null) { 324 | const s = e ? new Date(e) : new Date; 325 | let i = { 326 | "M+": s.getMonth() + 1, 327 | "d+": s.getDate(), 328 | "H+": s.getHours(), 329 | "m+": s.getMinutes(), 330 | "s+": s.getSeconds(), 331 | "q+": Math.floor((s.getMonth() + 3) / 3), 332 | S: s.getMilliseconds() 333 | }; 334 | /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); 335 | for (let e in i) 336 | new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); 337 | return t 338 | } 339 | msg(e = t, s = "", i = "", r) { 340 | const o = t => { 341 | if (!t) 342 | return t; 343 | if ("string" == typeof t) 344 | return this.isLoon() ? t : this.isQuanX() ? { 345 | "open-url": t 346 | } 347 | : this.isSurge() ? { 348 | url: t 349 | } 350 | : void 0; 351 | if ("object" == typeof t) { 352 | if (this.isLoon()) { 353 | let e = t.openUrl || t.url || t["open-url"], 354 | s = t.mediaUrl || t["media-url"]; 355 | return { 356 | openUrl: e, 357 | mediaUrl: s 358 | } 359 | } 360 | if (this.isQuanX()) { 361 | let e = t["open-url"] || t.url || t.openUrl, 362 | s = t["media-url"] || t.mediaUrl; 363 | return { 364 | "open-url": e, 365 | "media-url": s 366 | } 367 | } 368 | if (this.isSurge()) { 369 | let e = t.url || t.openUrl || t["open-url"]; 370 | return { 371 | url: e 372 | } 373 | } 374 | } 375 | }; 376 | if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { 377 | let t = ["", "==============📣系统通知📣=============="]; 378 | t.push(e), 379 | s && t.push(s), 380 | i && t.push(i), 381 | console.log(t.join("\n")), 382 | this.logs = this.logs.concat(t) 383 | } 384 | } 385 | log(...t) { 386 | t.length > 0 && (this.logs = [...this.logs, ...t]), 387 | console.log(t.join(this.logSeparator)) 388 | } 389 | logErr(t, e) { 390 | const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); 391 | s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) 392 | } 393 | wait(t) { 394 | return new Promise(e => setTimeout(e, t)) 395 | } 396 | done(t = {}) { 397 | const e = (new Date).getTime(), 398 | s = (e - this.startTime) / 1e3; 399 | this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), 400 | this.log(), 401 | (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) 402 | } 403 | } 404 | (t, e) 405 | } 406 | -------------------------------------------------------------------------------- /elm_lyb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @kolikow 3 | * 变量:elmck: 必填,账号cookie 4 | * cron: 47 0,8,10,14,18,22 * * * 5 | */ 6 | 7 | const { 8 | sign, 9 | getToken, 10 | checkCk, 11 | getCookies, 12 | getUserInfo, 13 | validateCarmeWithType, 14 | checkCarmeCount, 15 | tryCatchPromise 16 | } = require("./common.js"), 17 | request = require("request"), 18 | { 19 | wait 20 | } = require("./common"), 21 | GAME_TYEP = 6, 22 | kami = process.env.ELE_CARME; 23 | function isEmpty(_0x382618) { 24 | return Object.values(_0x382618).length === 0; 25 | } 26 | async function lottery(_0x441cb5) { 27 | const _0x25e489 = { 28 | "authority": "shopping.ele.me", 29 | "accept": "application/json", 30 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 31 | "cache-control": "no-cache", 32 | "content-type": "application/x-www-form-urlencoded", 33 | "origin": "https://r.ele.me", 34 | "pragma": "no-cache", 35 | "referer": "https://r.ele.me/linkgame/index.html?navType=3&spm-pre=a2ogi.13162730.zebra-ele-login-module-9089118186&spm=a13.b_activity_kb_m71293.0.0", 36 | "cookie": _0x441cb5, 37 | "x-ele-ua": "RenderWay/H5 AppName/wap Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36", 38 | "user-agent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36" 39 | }, 40 | _0x1cf85f = { 41 | "actId": "20221207144029906162546384", 42 | "collectionId": "20230224114656384938530468", 43 | "componentId": "20230224114825216373367998", 44 | "bizScene": "game_center", 45 | "bizCode": "LOTTERY", 46 | "longitude": "120.21993197500706", 47 | "latitude": "30.178378857672215", 48 | "asac": "2A232091VOX6SPEQYH6RG4", 49 | "extParams": "{\"bizType\":\"LOTTERY\"}", 50 | "ua": "140#CK1oj11hzzW9Szo2K52s+pN8s77HHUFmuM/UtDDs0Qi3WsJVBjgCRSpLBmwg1t45dolchfqRmKl1bALrrsgqlbzxhMT65/VGzzcSb1NVl3MzzPzbVXlqlYfWGwrfAdGuzF4SLIuKlpODzPzYVXEul+Fx3DH3uJBlzFzb2mD5lp1bojnSONdOHaU+WFtTI267wOPmhF8Lb1t1AGAMJzaUhlSZ37eoVlUxdJDMRuBaLMfDybLO0h1eFD9Bu8b+DVPhp0zq91yfNSAXB7K0jltKROauR0mY6uMsohEuI04aSewXLPQudoCKe4KTqOdcfQxcM7naN0frsSX8GkmfK7MJZvMjY1U5qUZ8S6B6etbmdFpXI71kiclSbDtLx68pvrlX+Fc4UR+S3Pe1djdcWkhUqAOMMF1UoPppTe48HVaz+8QLqCm5C+vFVcG/nR4fp/Nqr9zxZZ1BEF2cqauKj9rwh1wg0ciKSZHr7d7+iqSugixQcmeWHucfFqAnDSqbHS8s0IlgXzfyfX4mbjfwsHaceDK5eauu/HlurzK0IpFhTLNn95u4XaF2p+Vx7/iLXMyEDky/HPCNi8XALSXJrmIz7wz6xcq2coakOoMyCQhrEhtsCgKAdzI0tjMldN3kNPusrd2JYaqKN6tK0a3ntrBfPvKjkXqX7p9CYI7DIp40BjnHwQCDKd3fZl6Fu4aOYZlfXnVkuSnuL0gkYtscTU4hIBmZsaKOKXSJdWYdynhh29HJVvpLAptEkD8Lnvm9nXnk7GorF+NPoY/dpJ+S2eh8/XksaIyRH3zWcpW5Ua30Hn94YEcqMFI/gQVjPHTdGkzBbjU8oTiLJ5Y5qSIY5eDM6T7XYoSwhGbyAL+=", 51 | "umidtoken": "T2gA__C3-r3sSTF7ZzBUS-C0RcKNSn8q17hKFBPM5pcplOQGdIK15W9ScohgOWU8PE0=" 52 | }, 53 | _0x41dbe8 = new Date().getTime(), 54 | _0x190eeb = 12574478; 55 | var _0x43aab7 = "data=" + encodeURIComponent(JSON.stringify(_0x1cf85f)); 56 | const _0x4e1126 = getToken(_0x441cb5), 57 | _0x396029 = _0x4e1126.split("_")[0], 58 | _0x325758 = await sign(_0x396029 + "&" + _0x41dbe8 + "&" + _0x190eeb + "&" + JSON.stringify(_0x1cf85f), kami), 59 | _0x5adac6 = { 60 | "url": "https://guide-acs.m.taobao.com/h5/mtop.koubei.interactioncenter.platform.right.lottery/1.0/?jsv=2.6.1&appKey=12574478&t=" + _0x41dbe8 + "&sign=" + _0x325758 + "&api=mtop.koubei.interactioncenter.platform.right.lottery&v=1.0&type=originaljson&dataType=json", 61 | "method": "POST", 62 | "headers": _0x25e489, 63 | "body": _0x43aab7 64 | }; 65 | return tryCatchPromise(_0x5d4a35 => { 66 | request(_0x5adac6, async (_0x253d91, _0x3b3869, _0x4b2646) => { 67 | if (!_0x253d91 && _0x3b3869.statusCode === 200) { 68 | try { 69 | const _0x8a8fd5 = JSON.parse(_0x4b2646); 70 | if (isEmpty(_0x8a8fd5.data.data)) console.log(_0x8a8fd5.ret[0]), _0x5d4a35(false);else { 71 | if (_0x8a8fd5.data.data.errorMsg) console.log(_0x8a8fd5.data.data.errorMsg);else { 72 | let _0x373ece = _0x8a8fd5.data.data.sendRightList[0]; 73 | const _0x559bcb = _0x373ece.materialInfo.description + _0x373ece.materialInfo.title; 74 | console.log(_0x559bcb); 75 | } 76 | _0x5d4a35(_0x8a8fd5); 77 | } 78 | } catch (_0x8f1071) { 79 | _0x5d4a35(false); 80 | } 81 | } else _0x5d4a35(false); 82 | }); 83 | }); 84 | } 85 | async function lyb_sign(_0x305fd4) { 86 | const _0x2fce18 = await checkCk(_0x305fd4), 87 | _0x5bce9d = { 88 | "authority": "mtop.ele.me", 89 | "accept": "application/json", 90 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 91 | "asac": "2A21607NIIT1ND5C4YXJ6C", 92 | "cache-control": "no-cache", 93 | "content-type": "application/x-www-form-urlencoded", 94 | "origin": "https://tb.ele.me", 95 | "pragma": "no-cache", 96 | "referer": "https://tb.ele.me/wow/alsc/mod/b9ee9e6451bc8eda7a6afcbb?spm=a2ogi.13162730.zebra-ele-login-module-9089118186&spm=a2ogi.13162730.zebra-ele-login-module-9089118186&spm-pre=a13.b_activity_kb_m71293.ebridge.login", 97 | "cookie": _0x2fce18, 98 | "user-agent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36" 99 | }, 100 | _0x15538e = new Date().getTime(), 101 | _0x22b3f9 = 12574478, 102 | _0x1e25c6 = { 103 | "bizScene": "game_center", 104 | "asac": "2A21607NIIT1ND5C4YXJ6C", 105 | "umidtoken": "defaultToken2_load_failed with timeout@@https://tb.ele.me/wow/alsc/mod/b9ee9e6451bc8eda7a6afcbb@@" + _0x15538e 106 | }; 107 | var _0x46a7a9 = "data=" + encodeURIComponent(JSON.stringify(_0x1e25c6)); 108 | const _0xe8ad83 = getToken(_0x2fce18), 109 | _0x40ec19 = _0xe8ad83.split("_")[0], 110 | _0x4cd30d = await sign(_0x40ec19 + "&" + _0x15538e + "&" + _0x22b3f9 + "&" + JSON.stringify(_0x1e25c6), kami), 111 | _0x2dc385 = { 112 | "url": "https://mtop.ele.me/h5/mtop.koubei.interactioncenter.sign.component.recordsignin/1.0/5.0/?jsv=2.7.1&appKey=" + _0x22b3f9 + "&t=" + _0x15538e + "&sign=" + _0x4cd30d + "&api=mtop.koubei.interactioncenter.sign.component.recordsignin&v=1.0&ecode=1&type=json&valueType=string&needLogin=true&LoginRequest=true&dataType=jsonp&SV=5.0&asac=2A21607NIIT1ND5C4YXJ6C§tid=h5%40android_chrome_87.0.4280.141", 113 | "method": "POST", 114 | "headers": _0x5bce9d, 115 | "body": _0x46a7a9 116 | }; 117 | return tryCatchPromise(_0x45bc29 => { 118 | request(_0x2dc385, async (_0x57cc5e, _0x1bd0c9, _0x3271dd) => { 119 | if (!_0x57cc5e && _0x1bd0c9.statusCode == 200) { 120 | const _0x423af2 = JSON.parse(_0x3271dd); 121 | _0x423af2.data.errorMsg ? console.log(_0x423af2.data.errorMsg) : console.log("签到成功"); 122 | _0x45bc29(_0x423af2); 123 | } else _0x45bc29(null); 124 | }); 125 | }); 126 | } 127 | async function lyb_llk_token(_0x2ef95e) { 128 | const _0x4de1d6 = { 129 | "bizScene": "LIANLIANKAN", 130 | "bizMethod": "login", 131 | "bizParam": "{\"inviterId\":null,\"gameId\":null,\"token\":\"token\"}", 132 | "longitude": 108.20482212920351, 133 | "latitude": 22.678892108345325 134 | }, 135 | _0x4069f9 = await gameRequest(_0x2ef95e, _0x4de1d6); 136 | return _0x4069f9.data.token; 137 | } 138 | async function lyb_llk_gamecode(_0x573d6d, _0x79d754) { 139 | const _0x21aca0 = { 140 | "bizScene": "LIANLIANKAN", 141 | "bizMethod": "startGameV2", 142 | "bizParam": "{\"gameId\":null,\"token\":\"" + _0x79d754 + "\"}", 143 | "longitude": 108.20482212920351, 144 | "latitude": 22.678892108345325 145 | }, 146 | _0x45c164 = await gameRequest(_0x573d6d, _0x21aca0); 147 | if (_0x45c164.bizErrorMsg != "success") return console.log(_0x45c164.bizErrorMsg), null; 148 | return _0x45c164.data.gameCode; 149 | } 150 | async function lyb_llk_passgame(_0x446a8d, _0x3b9f30, _0x3cc91c) { 151 | const _0x323574 = { 152 | "bizScene": "LIANLIANKAN", 153 | "bizMethod": "settlement", 154 | "bizParam": "{\"gameCode\":\"" + _0x3b9f30 + "\",\"passLevelTime\":40351,\"gameId\":null,\"token\":\"" + _0x3cc91c + "\"}" 155 | }, 156 | _0x55a1fb = await gameRequest(_0x446a8d, _0x323574); 157 | if (_0x55a1fb.bizErrorMsg != "success") { 158 | return console.log(_0x55a1fb.bizErrorMsg), null; 159 | } 160 | return _0x55a1fb.data.lastLevelId; 161 | } 162 | async function gameRequest(_0x297e49, _0x2ae1e5) { 163 | const _0x1d72ff = { 164 | "authority": "shopping.ele.me", 165 | "accept": "application/json", 166 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 167 | "cache-control": "no-cache", 168 | "content-type": "application/x-www-form-urlencoded", 169 | "origin": "https://r.ele.me", 170 | "pragma": "no-cache", 171 | "referer": "https://r.ele.me/linkgame/index.html?navType=3&spm-pre=a2ogi.13162730.zebra-ele-login-module-9089118186&spm=a13.b_activity_kb_m71293.0.0", 172 | "cookie": _0x297e49, 173 | "x-ele-ua": "RenderWay/H5 AppName/wap Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36", 174 | "user-agent": "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36" 175 | }, 176 | _0x49236a = new Date().getTime(), 177 | _0x3db99b = 12574478; 178 | var _0x48c4ab = "data=" + encodeURIComponent(JSON.stringify(_0x2ae1e5)); 179 | const _0x3c7921 = getToken(_0x297e49), 180 | _0x29017c = _0x3c7921.split("_")[0], 181 | _0x25d63f = await sign(_0x29017c + "&" + _0x49236a + "&" + _0x3db99b + "&" + JSON.stringify(_0x2ae1e5), kami), 182 | _0x1db91b = { 183 | "url": "https://shopping.ele.me/h5/mtop.alsc.playgame.mini.game.dispatch/1.0/?jsv=2.6.1&appKey=12574478&t=" + _0x49236a + "&sign=" + _0x25d63f + "&api=mtop.alsc.playgame.mini.game.dispatch&v=1.0&type=originaljson&dataType=json&timeout=5000&subDomain=shopping&mainDomain=ele.me&H5Request=true&pageDomain=ele.me&ttid=h5%40chrome_android_87.0.4280.141&SV=5.0", 184 | "method": "POST", 185 | "headers": _0x1d72ff, 186 | "body": _0x48c4ab 187 | }; 188 | return tryCatchPromise(_0x9faa2b => { 189 | request(_0x1db91b, async (_0x4f87cc, _0x2c6269, _0x101caa) => { 190 | if (!_0x4f87cc && _0x2c6269.statusCode == 200) { 191 | try { 192 | const _0x1652a3 = JSON.parse(_0x101caa), 193 | _0x25dc12 = JSON.parse(_0x1652a3.data.data); 194 | _0x9faa2b(_0x25dc12); 195 | } catch (_0x429949) { 196 | console.log(_0x101caa); 197 | _0x9faa2b(null); 198 | } 199 | } else { 200 | _0x9faa2b(null); 201 | } 202 | }); 203 | }); 204 | } 205 | async function llk_game(_0x381403, _0x612bc4) { 206 | const _0x13c747 = await lyb_llk_gamecode(_0x381403, _0x612bc4); 207 | if (_0x13c747) { 208 | const _0x10e546 = await lyb_llk_passgame(_0x381403, _0x13c747, _0x612bc4); 209 | _0x10e546 != 3 && (await llk_game(_0x381403, _0x612bc4)); 210 | } 211 | return; 212 | } 213 | async function water_login(_0x214240) { 214 | const _0x5057ba = { 215 | "bizScene": "WATER_SORT", 216 | "bizParam": "{\"type\":\"login\"}", 217 | "bizMethod": "login" 218 | }, 219 | _0x1b85d6 = await gameRequest(_0x214240, _0x5057ba); 220 | return _0x1b85d6; 221 | } 222 | async function water_game_success(_0x10ac67) { 223 | const _0x54cee7 = { 224 | "bizScene": "WATER_SORT", 225 | "bizParam": "{\"type\":\"gameSuccess\"}", 226 | "bizMethod": "gameSuccess" 227 | }, 228 | _0x42623f = await gameRequest(_0x10ac67, _0x54cee7); 229 | return _0x42623f; 230 | } 231 | async function water_reward(_0x134550, _0x3d1051) { 232 | const _0xc51e55 = { 233 | "bizScene": "WATER_SORT", 234 | "bizParam": "{\"type\":\"getPassPrize\",\"data\":{\"addNum\":\"" + _0x3d1051 + "\",\"type\":1}}", 235 | "bizMethod": "getPassPrize" 236 | }, 237 | _0x4a4fa2 = await gameRequest(_0x134550, _0xc51e55); 238 | return _0x4a4fa2; 239 | } 240 | async function water_game(_0x2f8419) { 241 | const _0x3a526e = await water_login(_0x2f8419), 242 | _0x531a74 = _0x3a526e.passConf, 243 | _0x5bcad0 = []; 244 | for (let _0x230f41 of Object.values(_0x531a74)) { 245 | _0x5bcad0.push(_0x230f41.passNum); 246 | } 247 | var _0x57a513 = await water_game_success(_0x2f8419), 248 | _0x3d1956 = _0x57a513.info.todayPass, 249 | _0x2d2053 = 0; 250 | while (_0x3d1956 <= _0x5bcad0[_0x5bcad0.length - 1]) { 251 | _0x57a513 = await water_game_success(_0x2f8419); 252 | _0x3d1956 = _0x57a513.info.todayPass; 253 | console.log("欢乐倒水第" + _0x3d1956 + "关闯关成功"); 254 | if (_0x5bcad0.includes(_0x3d1956)) { 255 | _0x2d2053 = _0x5bcad0.indexOf(_0x3d1956) + 1; 256 | const _0xefbff0 = await water_reward(_0x2f8419, _0x2d2053); 257 | console.log("获得:" + _0xefbff0.goldnum + "乐园币"); 258 | } 259 | } 260 | console.log("快乐倒水闯关完成"); 261 | } 262 | async function start() { 263 | await validateCarmeWithType(kami, 1); 264 | const _0x38e8d8 = getCookies(); 265 | 266 | for (let _0x4dde97 = 0; _0x4dde97 < _0x38e8d8.length; _0x4dde97++) { 267 | const _0x2a66d2 = _0x38e8d8[_0x4dde97]; 268 | if (!_0x2a66d2) console.log(" ❌无效用户信息, 请重新获取ck");else try { 269 | let _0x267afc = await checkCk(_0x2a66d2, _0x4dde97); 270 | if (!_0x267afc) continue; 271 | let _0x26d709 = await getUserInfo(_0x267afc); 272 | if (!_0x26d709.username) { 273 | console.log("第", _0x4dde97 + 1, "账号失效!请重新登录!!!😭"); 274 | continue; 275 | } 276 | const _0x141662 = _0x26d709.user_id; 277 | await checkCarmeCount(kami, _0x141662, GAME_TYEP); 278 | console.log("******开始【饿了么账号", _0x4dde97 + 1, "】", _0x26d709.username, "*********"); 279 | await lyb_sign(_0x267afc); 280 | await lottery(_0x267afc); 281 | const _0x57279d = await lyb_llk_token(_0x267afc); 282 | await llk_game(_0x267afc, _0x57279d); 283 | await water_game(_0x267afc); 284 | console.log("防止黑号延时20-30秒"); 285 | await wait(getRandom(20, 30)); 286 | } catch (_0x5974bf) { 287 | console.log(_0x5974bf); 288 | } 289 | } 290 | process.exit(0); 291 | } 292 | start(); 293 | function getRandom(_0x39379b, _0x3c6083) { 294 | return Math.floor(Math.random() * (_0x3c6083 - _0x39379b + 1) + _0x39379b); 295 | } 296 | function Env(_0x4e7acc, _0x4ece95) { 297 | "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); 298 | class _0x4a95de { 299 | constructor(_0x6997a9) { 300 | this.env = _0x6997a9; 301 | } 302 | ["send"](_0x3d577b, _0x47a142 = "GET") { 303 | _0x3d577b = "string" == typeof _0x3d577b ? { 304 | "url": _0x3d577b 305 | } : _0x3d577b; 306 | let _0x497cde = this.get; 307 | return "POST" === _0x47a142 && (_0x497cde = this.post), new Promise((_0x188685, _0x21cdd5) => { 308 | _0x497cde.call(this, _0x3d577b, (_0x32a6ac, _0x35172f, _0x1cabfc) => { 309 | _0x32a6ac ? _0x21cdd5(_0x32a6ac) : _0x188685(_0x35172f); 310 | }); 311 | }); 312 | } 313 | ["get"](_0x48e91e) { 314 | return this.send.call(this.env, _0x48e91e); 315 | } 316 | ["post"](_0x54298c) { 317 | return this.send.call(this.env, _0x54298c, "POST"); 318 | } 319 | } 320 | return new class { 321 | constructor(_0x556bac, _0x1a2cea) { 322 | this.name = _0x556bac; 323 | this.http = new _0x4a95de(this); 324 | this.data = null; 325 | this.dataFile = "box.dat"; 326 | this.logs = []; 327 | this.isMute = !1; 328 | this.isNeedRewrite = !1; 329 | this.logSeparator = "\n"; 330 | this.startTime = new Date().getTime(); 331 | Object.assign(this, _0x1a2cea); 332 | this.log("", "🔔" + this.name + ", 开始!"); 333 | } 334 | ["isNode"]() { 335 | return "undefined" != typeof module && !!module.exports; 336 | } 337 | ["isQuanX"]() { 338 | return "undefined" != typeof $task; 339 | } 340 | ["isSurge"]() { 341 | return "undefined" != typeof $httpClient && "undefined" == typeof $loon; 342 | } 343 | ["isLoon"]() { 344 | return "undefined" != typeof $loon; 345 | } 346 | ["toObj"](_0x3cff15, _0x1f3c3b = null) { 347 | try { 348 | return JSON.parse(_0x3cff15); 349 | } catch { 350 | return _0x1f3c3b; 351 | } 352 | } 353 | ["toStr"](_0x5a7e31, _0x3a5148 = null) { 354 | try { 355 | return JSON.stringify(_0x5a7e31); 356 | } catch { 357 | return _0x3a5148; 358 | } 359 | } 360 | ["getjson"](_0x4868b4, _0x5c4cbf) { 361 | let _0x45bfbf = _0x5c4cbf; 362 | const _0x59389a = this.getdata(_0x4868b4); 363 | if (_0x59389a) try { 364 | _0x45bfbf = JSON.parse(this.getdata(_0x4868b4)); 365 | } catch {} 366 | return _0x45bfbf; 367 | } 368 | ["setjson"](_0x1de8ba, _0x466dfb) { 369 | try { 370 | return this.setdata(JSON.stringify(_0x1de8ba), _0x466dfb); 371 | } catch { 372 | return !1; 373 | } 374 | } 375 | ["getScript"](_0x4f6b6e) { 376 | return new Promise(_0x455825 => { 377 | this.get({ 378 | "url": _0x4f6b6e 379 | }, (_0x3313cd, _0x45e310, _0x114fd8) => _0x455825(_0x114fd8)); 380 | }); 381 | } 382 | ["runScript"](_0x506b8c, _0x4bc570) { 383 | return new Promise(_0x2476f6 => { 384 | let _0x192b9a = this.getdata("@chavy_boxjs_userCfgs.httpapi"); 385 | _0x192b9a = _0x192b9a ? _0x192b9a.replace(/\n/g, "").trim() : _0x192b9a; 386 | let _0x74dce7 = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); 387 | _0x74dce7 = _0x74dce7 ? 1 * _0x74dce7 : 20; 388 | _0x74dce7 = _0x4bc570 && _0x4bc570.timeout ? _0x4bc570.timeout : _0x74dce7; 389 | const [_0x55529c, _0x24c45d] = _0x192b9a.split("@"), 390 | _0x31b9df = { 391 | "url": "http://" + _0x24c45d + "/v1/scripting/evaluate", 392 | "body": { 393 | "script_text": _0x506b8c, 394 | "mock_type": "cron", 395 | "timeout": _0x74dce7 396 | }, 397 | "headers": { 398 | "X-Key": _0x55529c, 399 | "Accept": "*/*" 400 | } 401 | }; 402 | this.post(_0x31b9df, (_0x2d2751, _0x5a10eb, _0x5a9e15) => _0x2476f6(_0x5a9e15)); 403 | }).catch(_0x830f29 => this.logErr(_0x830f29)); 404 | } 405 | ["loaddata"]() { 406 | if (!this.isNode()) return {}; 407 | { 408 | this.fs = this.fs ? this.fs : require("fs"); 409 | this.path = this.path ? this.path : require("path"); 410 | const _0x7fbf9d = this.path.resolve(this.dataFile), 411 | _0x645738 = this.path.resolve(process.cwd(), this.dataFile), 412 | _0x345226 = this.fs.existsSync(_0x7fbf9d), 413 | _0x85dd1a = !_0x345226 && this.fs.existsSync(_0x645738); 414 | if (!_0x345226 && !_0x85dd1a) return {}; 415 | { 416 | const _0x57ac7b = _0x345226 ? _0x7fbf9d : _0x645738; 417 | try { 418 | return JSON.parse(this.fs.readFileSync(_0x57ac7b)); 419 | } catch (_0x5bec7e) { 420 | return {}; 421 | } 422 | } 423 | } 424 | } 425 | ["writedata"]() { 426 | if (this.isNode()) { 427 | this.fs = this.fs ? this.fs : require("fs"); 428 | this.path = this.path ? this.path : require("path"); 429 | const _0x551cac = this.path.resolve(this.dataFile), 430 | _0x33b4fe = this.path.resolve(process.cwd(), this.dataFile), 431 | _0x440a02 = this.fs.existsSync(_0x551cac), 432 | _0x3eebc8 = !_0x440a02 && this.fs.existsSync(_0x33b4fe), 433 | _0x5a0c23 = JSON.stringify(this.data); 434 | _0x440a02 ? this.fs.writeFileSync(_0x551cac, _0x5a0c23) : _0x3eebc8 ? this.fs.writeFileSync(_0x33b4fe, _0x5a0c23) : this.fs.writeFileSync(_0x551cac, _0x5a0c23); 435 | } 436 | } 437 | ["lodash_get"](_0x15acb1, _0x54a032, _0x6d6933) { 438 | const _0x8fa81 = _0x54a032.replace(/\[(\d+)\]/g, ".$1").split("."); 439 | let _0x13dd5d = _0x15acb1; 440 | for (const _0x3004c1 of _0x8fa81) if (_0x13dd5d = Object(_0x13dd5d)[_0x3004c1], void 0 === _0x13dd5d) return _0x6d6933; 441 | return _0x13dd5d; 442 | } 443 | ["lodash_set"](_0x584125, _0x319199, _0x4ade7c) { 444 | return Object(_0x584125) !== _0x584125 ? _0x584125 : (Array.isArray(_0x319199) || (_0x319199 = _0x319199.toString().match(/[^.[\]]+/g) || []), _0x319199.slice(0, -1).reduce((_0x6a49ac, _0x55a543, _0x5371fa) => Object(_0x6a49ac[_0x55a543]) === _0x6a49ac[_0x55a543] ? _0x6a49ac[_0x55a543] : _0x6a49ac[_0x55a543] = Math.abs(_0x319199[_0x5371fa + 1]) >> 0 == +_0x319199[_0x5371fa + 1] ? [] : {}, _0x584125)[_0x319199[_0x319199.length - 1]] = _0x4ade7c, _0x584125); 445 | } 446 | ["getdata"](_0x399f10) { 447 | let _0x52f1f7 = this.getval(_0x399f10); 448 | if (/^@/.test(_0x399f10)) { 449 | const [, _0x2391fe, _0x193958] = /^@(.*?)\.(.*?)$/.exec(_0x399f10), 450 | _0x4fb884 = _0x2391fe ? this.getval(_0x2391fe) : ""; 451 | if (_0x4fb884) { 452 | try { 453 | const _0x1c3281 = JSON.parse(_0x4fb884); 454 | _0x52f1f7 = _0x1c3281 ? this.lodash_get(_0x1c3281, _0x193958, "") : _0x52f1f7; 455 | } catch (_0x282396) { 456 | _0x52f1f7 = ""; 457 | } 458 | } 459 | } 460 | return _0x52f1f7; 461 | } 462 | ["setdata"](_0x271277, _0x2aad87) { 463 | let _0x8ba3c0 = false; 464 | if (/^@/.test(_0x2aad87)) { 465 | const [, _0x3d8031, _0xb2259f] = /^@(.*?)\.(.*?)$/.exec(_0x2aad87), 466 | _0x28e3ad = this.getval(_0x3d8031), 467 | _0xde413f = _0x3d8031 ? "null" === _0x28e3ad ? null : _0x28e3ad || "{}" : "{}"; 468 | try { 469 | const _0xec890 = JSON.parse(_0xde413f); 470 | this.lodash_set(_0xec890, _0xb2259f, _0x271277); 471 | _0x8ba3c0 = this.setval(JSON.stringify(_0xec890), _0x3d8031); 472 | } catch (_0xe6d5af) { 473 | const _0x367e33 = {}; 474 | this.lodash_set(_0x367e33, _0xb2259f, _0x271277); 475 | _0x8ba3c0 = this.setval(JSON.stringify(_0x367e33), _0x3d8031); 476 | } 477 | } else _0x8ba3c0 = this.setval(_0x271277, _0x2aad87); 478 | return _0x8ba3c0; 479 | } 480 | ["getval"](_0x26e052) { 481 | return this.isSurge() || this.isLoon() ? $persistentStore.read(_0x26e052) : this.isQuanX() ? $prefs.valueForKey(_0x26e052) : this.isNode() ? (this.data = this.loaddata(), this.data[_0x26e052]) : this.data && this.data[_0x26e052] || null; 482 | } 483 | ["setval"](_0x424ab7, _0x39f57d) { 484 | return this.isSurge() || this.isLoon() ? $persistentStore.write(_0x424ab7, _0x39f57d) : this.isQuanX() ? $prefs.setValueForKey(_0x424ab7, _0x39f57d) : this.isNode() ? (this.data = this.loaddata(), this.data[_0x39f57d] = _0x424ab7, this.writedata(), !0) : this.data && this.data[_0x39f57d] || null; 485 | } 486 | ["initGotEnv"](_0x13e8b0) { 487 | this.got = this.got ? this.got : require("got"); 488 | this.cktough = this.cktough ? this.cktough : require("tough-cookie"); 489 | this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar(); 490 | _0x13e8b0 && (_0x13e8b0.headers = _0x13e8b0.headers ? _0x13e8b0.headers : {}, void 0 === _0x13e8b0.headers.Cookie && void 0 === _0x13e8b0.cookieJar && (_0x13e8b0.cookieJar = this.ckjar)); 491 | } 492 | ["get"](_0x33e617, _0x1b4e79 = () => {}) { 493 | _0x33e617.headers && (delete _0x33e617.headers["Content-Type"], delete _0x33e617.headers["Content-Length"]); 494 | this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (_0x33e617.headers = _0x33e617.headers || {}, Object.assign(_0x33e617.headers, { 495 | "X-Surge-Skip-Scripting": !1 496 | })), $httpClient.get(_0x33e617, (_0x1c8d07, _0x19d8dc, _0x5a0239) => { 497 | !_0x1c8d07 && _0x19d8dc && (_0x19d8dc.body = _0x5a0239, _0x19d8dc.statusCode = _0x19d8dc.status); 498 | _0x1b4e79(_0x1c8d07, _0x19d8dc, _0x5a0239); 499 | })) : this.isQuanX() ? (this.isNeedRewrite && (_0x33e617.opts = _0x33e617.opts || {}, Object.assign(_0x33e617.opts, { 500 | "hints": !1 501 | })), $task.fetch(_0x33e617).then(_0x3b0ec7 => { 502 | const { 503 | statusCode: _0x395f74, 504 | statusCode: _0x217c90, 505 | headers: _0x311792, 506 | body: _0xed4107 507 | } = _0x3b0ec7; 508 | _0x1b4e79(null, { 509 | "status": _0x395f74, 510 | "statusCode": _0x217c90, 511 | "headers": _0x311792, 512 | "body": _0xed4107 513 | }, _0xed4107); 514 | }, _0x5e056f => _0x1b4e79(_0x5e056f))) : this.isNode() && (this.initGotEnv(_0x33e617), this.got(_0x33e617).on("redirect", (_0x32b6be, _0x573bdd) => { 515 | try { 516 | if (_0x32b6be.headers["set-cookie"]) { 517 | const _0x652696 = _0x32b6be.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); 518 | _0x652696 && this.ckjar.setCookieSync(_0x652696, null); 519 | _0x573bdd.cookieJar = this.ckjar; 520 | } 521 | } catch (_0x3090e) { 522 | this.logErr(_0x3090e); 523 | } 524 | }).then(_0x46786d => { 525 | const { 526 | statusCode: _0x5c8ac2, 527 | statusCode: _0x380e08, 528 | headers: _0x3e570a, 529 | body: _0x324a10 530 | } = _0x46786d; 531 | _0x1b4e79(null, { 532 | "status": _0x5c8ac2, 533 | "statusCode": _0x380e08, 534 | "headers": _0x3e570a, 535 | "body": _0x324a10 536 | }, _0x324a10); 537 | }, _0x216cbd => { 538 | const { 539 | message: _0x290614, 540 | response: _0x50393a 541 | } = _0x216cbd; 542 | _0x1b4e79(_0x290614, _0x50393a, _0x50393a && _0x50393a.body); 543 | })); 544 | } 545 | ["post"](_0x177610, _0x448d0a = () => {}) { 546 | if (_0x177610.body && _0x177610.headers && !_0x177610.headers["Content-Type"] && (_0x177610.headers["Content-Type"] = "application/x-www-form-urlencoded"), _0x177610.headers && delete _0x177610.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (_0x177610.headers = _0x177610.headers || {}, Object.assign(_0x177610.headers, { 547 | "X-Surge-Skip-Scripting": !1 548 | })), $httpClient.post(_0x177610, (_0x36f8bd, _0x29502b, _0x35a44f) => { 549 | !_0x36f8bd && _0x29502b && (_0x29502b.body = _0x35a44f, _0x29502b.statusCode = _0x29502b.status); 550 | _0x448d0a(_0x36f8bd, _0x29502b, _0x35a44f); 551 | });else { 552 | if (this.isQuanX()) _0x177610.method = "POST", this.isNeedRewrite && (_0x177610.opts = _0x177610.opts || {}, Object.assign(_0x177610.opts, { 553 | "hints": !1 554 | })), $task.fetch(_0x177610).then(_0x888294 => { 555 | const { 556 | statusCode: _0x1547a9, 557 | statusCode: _0xc9fee8, 558 | headers: _0x2d35cb, 559 | body: _0xa7fc3a 560 | } = _0x888294; 561 | _0x448d0a(null, { 562 | "status": _0x1547a9, 563 | "statusCode": _0xc9fee8, 564 | "headers": _0x2d35cb, 565 | "body": _0xa7fc3a 566 | }, _0xa7fc3a); 567 | }, _0x3d5ae0 => _0x448d0a(_0x3d5ae0));else { 568 | if (this.isNode()) { 569 | this.initGotEnv(_0x177610); 570 | const { 571 | url: _0x469e96, 572 | ..._0x1d0ef0 573 | } = _0x177610; 574 | this.got.post(_0x469e96, _0x1d0ef0).then(_0x340e94 => { 575 | const { 576 | statusCode: _0x5d2205, 577 | statusCode: _0x112690, 578 | headers: _0x5db16d, 579 | body: _0x3b6a2e 580 | } = _0x340e94; 581 | _0x448d0a(null, { 582 | "status": _0x5d2205, 583 | "statusCode": _0x112690, 584 | "headers": _0x5db16d, 585 | "body": _0x3b6a2e 586 | }, _0x3b6a2e); 587 | }, _0x41f9e8 => { 588 | const { 589 | message: _0x578987, 590 | response: _0x512231 591 | } = _0x41f9e8; 592 | _0x448d0a(_0x578987, _0x512231, _0x512231 && _0x512231.body); 593 | }); 594 | } 595 | } 596 | } 597 | } 598 | ["time"](_0x4831bc, _0x5e3526 = null) { 599 | const _0x5d1bc8 = _0x5e3526 ? new Date(_0x5e3526) : new Date(); 600 | let _0x48ec92 = { 601 | "M+": _0x5d1bc8.getMonth() + 1, 602 | "d+": _0x5d1bc8.getDate(), 603 | "H+": _0x5d1bc8.getHours(), 604 | "m+": _0x5d1bc8.getMinutes(), 605 | "s+": _0x5d1bc8.getSeconds(), 606 | "q+": Math.floor((_0x5d1bc8.getMonth() + 3) / 3), 607 | "S": _0x5d1bc8.getMilliseconds() 608 | }; 609 | /(y+)/.test(_0x4831bc) && (_0x4831bc = _0x4831bc.replace(RegExp.$1, (_0x5d1bc8.getFullYear() + "").substr(4 - RegExp.$1.length))); 610 | for (let _0xc8b309 in _0x48ec92) new RegExp("(" + _0xc8b309 + ")").test(_0x4831bc) && (_0x4831bc = _0x4831bc.replace(RegExp.$1, 1 == RegExp.$1.length ? _0x48ec92[_0xc8b309] : ("00" + _0x48ec92[_0xc8b309]).substr(("" + _0x48ec92[_0xc8b309]).length))); 611 | return _0x4831bc; 612 | } 613 | ["msg"](_0x28c9bd = _0x4e7acc, _0x2b6479 = "", _0x5ed616 = "", _0x1a4f3e) { 614 | const _0xf81196 = _0x1f4a44 => { 615 | if (!_0x1f4a44) { 616 | return _0x1f4a44; 617 | } 618 | if ("string" == typeof _0x1f4a44) return this.isLoon() ? _0x1f4a44 : this.isQuanX() ? { 619 | "open-url": _0x1f4a44 620 | } : this.isSurge() ? { 621 | "url": _0x1f4a44 622 | } : void 0; 623 | if ("object" == typeof _0x1f4a44) { 624 | if (this.isLoon()) { 625 | let _0x337882 = _0x1f4a44.openUrl || _0x1f4a44.url || _0x1f4a44["open-url"], 626 | _0x34a658 = _0x1f4a44.mediaUrl || _0x1f4a44["media-url"]; 627 | return { 628 | "openUrl": _0x337882, 629 | "mediaUrl": _0x34a658 630 | }; 631 | } 632 | if (this.isQuanX()) { 633 | let _0x8acda0 = _0x1f4a44["open-url"] || _0x1f4a44.url || _0x1f4a44.openUrl, 634 | _0x4543cd = _0x1f4a44["media-url"] || _0x1f4a44.mediaUrl; 635 | return { 636 | "open-url": _0x8acda0, 637 | "media-url": _0x4543cd 638 | }; 639 | } 640 | if (this.isSurge()) { 641 | let _0x556691 = _0x1f4a44.url || _0x1f4a44.openUrl || _0x1f4a44["open-url"]; 642 | return { 643 | "url": _0x556691 644 | }; 645 | } 646 | } 647 | }; 648 | if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(_0x28c9bd, _0x2b6479, _0x5ed616, _0xf81196(_0x1a4f3e)) : this.isQuanX() && $notify(_0x28c9bd, _0x2b6479, _0x5ed616, _0xf81196(_0x1a4f3e))), !this.isMuteLog) { 649 | let _0xd44020 = ["", "==============📣系统通知📣=============="]; 650 | _0xd44020.push(_0x28c9bd); 651 | _0x2b6479 && _0xd44020.push(_0x2b6479); 652 | _0x5ed616 && _0xd44020.push(_0x5ed616); 653 | console.log(_0xd44020.join("\n")); 654 | this.logs = this.logs.concat(_0xd44020); 655 | } 656 | } 657 | ["log"](..._0x358b6d) { 658 | _0x358b6d.length > 0 && (this.logs = [...this.logs, ..._0x358b6d]); 659 | console.log(_0x358b6d.join(this.logSeparator)); 660 | } 661 | ["logErr"](_0x16f1d2, _0xabf972) { 662 | const _0x51a71c = !this.isSurge() && !this.isQuanX() && !this.isLoon(); 663 | _0x51a71c ? this.log("", "❗️" + this.name + ", 错误!", _0x16f1d2.stack) : this.log("", "❗️" + this.name + ", 错误!", _0x16f1d2); 664 | } 665 | ["wait"](_0x39f9b7) { 666 | return new Promise(_0x57a319 => setTimeout(_0x57a319, _0x39f9b7)); 667 | } 668 | ["done"](_0x3942bc = {}) { 669 | const _0x36cb4f = new Date().getTime(), 670 | _0x48cfca = (_0x36cb4f - this.startTime) / 1000; 671 | this.log("", "🔔" + this.name + ", 结束! 🕛 " + _0x48cfca + " 秒"); 672 | this.log(); 673 | (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(_0x3942bc); 674 | } 675 | }(_0x4e7acc, _0x4ece95); 676 | } const $ = new Env('饿了么乐园币'); 677 | -------------------------------------------------------------------------------- /elm_mhxy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 变量:elmck: 必填,账号cookie 3 | * cron 1 0,6,12,18,21 * * * 4 | * 需要手动玩到四级才能跑 5 | */ 6 | 7 | const $ = new Env('饿了么梦幻小院'); 8 | 9 | const { 10 | "getToken": getToken, 11 | "tryCatchPromise": tryCatchPromise, 12 | "getCookies": getCookies, 13 | "checkCk": checkCk, 14 | "getUserInfo": getUserInfo, 15 | "wait": wait 16 | } = require("./common.js"); 17 | const _0xd960c1 = require("request"); 18 | const md5 = require("md5"); 19 | let _0x244760 = 1; 20 | let _0x22b780; 21 | async function _0x1d5d09(_0x37366f) { 22 | const _0x309187 = { 23 | "bizScene": "ELEME_ELMYLY", 24 | "instance": "INNER" 25 | }; 26 | let _0x495e7d = await _0x768dee("mtop.alsc.playgame.common.real.name.authentication", _0x37366f, _0x309187); 27 | return _0x495e7d["authentication"]; 28 | } 29 | async function _0x2eb09b(_0x4dbdaf) { 30 | const _0x1851a7 = new Date()["getTime"](); 31 | const _0x34e39f = { 32 | "body": "{\"nickname\":\"普通玩家\",\"avatar\":\"998d3ad143b581e8f2a3866c1f8a783cjpeg\",\"inviterId\":\"\",\"inviterType\":0,\"shareTime\":0,\"debug\":null,\"reqIdx\":" + _0x244760 + ",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 33 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 34 | "instance": "INNER", 35 | "method": "POST", 36 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 37 | "path": "/api/role/login", 38 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x1851a7 + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 39 | }; 40 | let _0x4f8b6c = await _0x768dee("mtop.miniapp.cloud.application.request", _0x4dbdaf, _0x34e39f); 41 | if (_0x4f8b6c) { 42 | return _0x4f8b6c["data"]; 43 | } 44 | return null; 45 | } 46 | async function _0xe6e63a(_0x3659dc) { 47 | const _0x239196 = new Date()["getTime"](); 48 | _0x244760++; 49 | const _0x4411d4 = { 50 | "body": "{\"reqIdx\":" + _0x244760 + ",\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 51 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 52 | "instance": "INNER", 53 | "method": "POST", 54 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 55 | "path": "/onlineB/api/game/getAllOpenActivityInfo", 56 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x239196 + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 57 | }; 58 | return await _0x768dee("mtop.miniapp.cloud.application.request", _0x3659dc, _0x4411d4); 59 | } 60 | async function _0x54ec17(_0x27230d, _0x115188, _0x59c4d3, _0x1a1549 = 1014, _0x244913) { 61 | const _0x1b43f3 = new Date()["getTime"](); 62 | _0x244760++; 63 | const _0x5ecf44 = { 64 | "body": "{\"orderQueryId\":\"" + _0x115188 + "\",\"posArray\":" + JSON["stringify"](_0x59c4d3) + ",\"customerId\":\"" + _0x1a1549 + "\",\"type\":" + _0x244913 + ",\"reqIdx\":" + _0x244760 + ",\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 65 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 66 | "instance": "INNER", 67 | "method": "POST", 68 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 69 | "path": "/api/game/completeOrder", 70 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x1b43f3 + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 71 | }; 72 | let _0x3e174f = await _0x768dee("mtop.miniapp.cloud.application.request", _0x27230d, _0x5ecf44); 73 | if (_0x3e174f) { 74 | let _0x9d72de = _0x3e174f["data"]; 75 | if (!_0x9d72de) { 76 | console["log"](_0x3e174f); 77 | return null; 78 | } 79 | let _0x45eb13 = _0x9d72de["updatePieceArray"]; 80 | if (_0x45eb13) { 81 | for (let _0x176335 = 0; _0x176335 < _0x45eb13["length"]; _0x176335++) { 82 | let _0x132eeb = _0x45eb13[_0x176335]; 83 | for (let _0x49433f = 0; _0x49433f < _0xa8f67f["length"]; _0x49433f++) { 84 | let _0x4489d5 = _0xa8f67f[_0x49433f]; 85 | if (_0x132eeb["pieceId"] === _0x4489d5["pieceId"]) { 86 | _0xa8f67f[_0x49433f] = _0x132eeb; 87 | } 88 | } 89 | } 90 | } 91 | let _0x498986 = _0x9d72de["ownCropMap"]; 92 | if (_0x498986) { 93 | _0x22b780 = _0x498986; 94 | } 95 | if (_0x9d72de["orderArray"]) { 96 | _0xb0cda6 = _0x9d72de["orderArray"]; 97 | } 98 | } 99 | return _0x3e174f; 100 | } 101 | async function _0x25c58b(_0x4cc044) { 102 | const _0x15b9ea = new Date()["getTime"](); 103 | _0x244760++; 104 | const _0x4a5bfa = { 105 | "body": "{\"reqIdx\":" + _0x244760 + ",\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 106 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 107 | "instance": "INNER", 108 | "method": "POST", 109 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 110 | "path": "/onlineB/api/task/getTasksList", 111 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x15b9ea + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 112 | }; 113 | let _0xc27a30 = await _0x768dee("mtop.miniapp.cloud.application.request", _0x4cc044, _0x4a5bfa); 114 | let _0x2cf1a5 = _0xc27a30["data"]; 115 | if (_0x2cf1a5) { 116 | try { 117 | let _0x122251 = _0x2cf1a5["taskInfo"]["dailyTasks"]; 118 | if (_0x122251) { 119 | for (const _0x1eea0c of Object["keys"](_0x122251)) { 120 | const _0x282ba3 = _0x122251[_0x1eea0c]; 121 | if (_0x282ba3["type"] === 3 && !_0x282ba3["haveGotReward"]) { 122 | let _0x3b45e1 = await _0x100c7f(_0x4cc044, _0x1eea0c); 123 | if (_0x3b45e1["data"]) { 124 | console["log"]("领取任务奖励完成,当前乐园币", _0x3b45e1["data"]["elemCoin"]); 125 | } else {} 126 | } 127 | } 128 | } 129 | } catch (_0x3dbc0c) {} 130 | } 131 | } 132 | async function _0x100c7f(_0x85b4f3, _0x29751c) { 133 | const _0x461b55 = new Date()["getTime"](); 134 | _0x244760++; 135 | const _0x450a04 = { 136 | "body": "{\"taskId\":" + _0x29751c + ",\"taskType\":0,\"reqIdx\":" + _0x244760 + ",\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 137 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 138 | "instance": "INNER", 139 | "method": "POST", 140 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 141 | "path": "/api/task/getTaskAward", 142 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x461b55 + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 143 | }; 144 | return await _0x768dee("mtop.miniapp.cloud.application.request", _0x85b4f3, _0x450a04); 145 | } 146 | async function _0x4338e2(_0x3470b3, _0xf1a2ea) { 147 | const _0x3bf80f = new Date()["getTime"](); 148 | _0x244760++; 149 | const _0x333999 = { 150 | "body": "{\"pos\":" + JSON["stringify"](_0xf1a2ea) + ",\"reqIdx\":" + _0x244760 + " ,\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 151 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 152 | "instance": "INNER", 153 | "method": "POST", 154 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 155 | "path": "/onlineB/api/game/cropSell", 156 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x3bf80f + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 157 | }; 158 | let _0x13ff62 = await _0x768dee("mtop.miniapp.cloud.application.request", _0x3470b3, _0x333999); 159 | if (_0x13ff62["data"]) { 160 | for (let _0x173e36 = 0; _0x173e36 < _0xa8f67f["length"]; _0x173e36++) { 161 | let _0x4818db = _0xa8f67f[_0x173e36]; 162 | if (_0x13ff62["data"]["piece"]["pieceId"] === _0x4818db["pieceId"]) { 163 | _0xa8f67f[_0x173e36] = _0x13ff62["data"]["piece"]; 164 | } 165 | } 166 | console["log"]("售卖植物,当前金币", _0x13ff62["data"]["coin"]); 167 | } 168 | return _0x13ff62; 169 | } 170 | async function _0x768dee(_0xe42167, _0x846f90, _0x3c14d6) { 171 | const _0x45d61d = { 172 | "accept": "application/json", 173 | "content-type": "application/x-www-form-urlencoded", 174 | "cookie": _0x846f90, 175 | "x-miniapp-id-taobao": "3000000088680964", 176 | "x-miniapp-version": "0.0.19", 177 | "x-mini-appkey": "34351764", 178 | "x-miniapp-env": "{\"nbsn\":\"ONLINE\",\"nbsource\":\"online\"}", 179 | "x-req-appkey": "34351764", 180 | "x-open-biz": "mini-app", 181 | "x-open-biz-data": "%7B%22appId%22%3A%223000000088680964%22%2C%22invokerAppId%22%3A%223000000088680964%22%2C%22viaFusionApp%22%3Atrue%7D", 182 | "x-exttype": "isv_open_api", 183 | "appid": "3000000088680964" 184 | }; 185 | const _0x23aac9 = new Date()["getTime"](); 186 | const _0x11b19f = 34351764; 187 | const _0x43dafe = "data=" + encodeURIComponent(JSON["stringify"](_0x3c14d6)); 188 | const _0x208fa6 = getToken(_0x846f90); 189 | const _0x93d6d4 = _0x208fa6["split"]('_')[0]; 190 | const _0x8540c0 = md5(_0x93d6d4 + '&' + _0x23aac9 + '&' + _0x11b19f + '&' + JSON["stringify"](_0x3c14d6)); 191 | const _0x2ba191 = { 192 | "url": "https://shopping.ele.me/h5/" + _0xe42167 + "/1.0/?jsv=2.6.1&appKey=34351764&t=" + _0x23aac9 + "&sign=" + _0x8540c0 + "&api=" + _0xe42167 + "&v=1.0&type=originaljson&ttid=1608030065155%40eleme_android_11.0.38", 193 | "method": "POST", 194 | "headers": _0x45d61d, 195 | "body": _0x43dafe 196 | }; 197 | return tryCatchPromise(_0x2911df => { 198 | _0xd960c1(_0x2ba191, async (_0x2299f1, _0x1cb3ee, _0x4e0376) => { 199 | if (!_0x2299f1 && _0x1cb3ee["statusCode"] == 200) { 200 | try { 201 | const _0x5a599c = JSON["parse"](_0x4e0376); 202 | _0x2911df(_0x5a599c["data"]["data"]); 203 | } catch (_0x36f649) { 204 | console["log"](_0x4e0376); 205 | _0x2911df(null); 206 | } 207 | } else { 208 | _0x2911df(null); 209 | } 210 | }); 211 | }); 212 | } 213 | let _0x1b7a8d; 214 | let _0x35bf66; 215 | let _0xa8f67f = []; 216 | let _0xb0cda6 = []; 217 | let _0x4399a0 = []; 218 | async function _0x31f56d(_0x438d96, _0x427368) { 219 | await _0xd42e5(_0x427368); 220 | await _0xe6e63a(_0x438d96); 221 | let _0x4942b8 = await _0x30b351(_0x438d96); 222 | while (_0x4942b8 === 0) { 223 | let _0xc5a491 = await _0x2eb09b(_0x438d96); 224 | await _0xd42e5(_0xc5a491); 225 | _0x4942b8 = await _0x30b351(_0x438d96); 226 | } 227 | await _0x25c58b(_0x438d96); 228 | } 229 | async function _0xd42e5(_0x5c2fe9) { 230 | _0x1b7a8d = null; 231 | _0x35bf66 = null; 232 | _0xa8f67f = []; 233 | _0xb0cda6 = []; 234 | _0x4399a0 = []; 235 | _0x1b7a8d = _0x5c2fe9["gameId"]; 236 | _0x35bf66 = _0x5c2fe9["token"]; 237 | _0x22b780 = _0x5c2fe9["cropInfo"]["ownCropMap"]; 238 | let _0x35c178 = _0x5c2fe9["gardenInfo"]["checkerboard"]; 239 | for (let _0x43f0c4 = 0; _0x43f0c4 < _0x35c178["length"]; _0x43f0c4++) { 240 | let _0x20c513 = _0x35c178[_0x43f0c4]; 241 | for (let _0x2ac9ed = 0; _0x2ac9ed < _0x20c513["length"]; _0x2ac9ed++) { 242 | let _0xb962aa = _0x20c513[_0x2ac9ed]; 243 | if (!_0xb962aa["isLock"]) { 244 | _0xa8f67f["push"](_0xb962aa); 245 | } 246 | } 247 | } 248 | Object["keys"](_0x22b780)["forEach"](_0x48b5e7 => { 249 | let _0x1b4b83 = _0x22b780[_0x48b5e7]; 250 | if (_0x1b4b83["seeds"]["length"] > 0) { 251 | let _0x409985 = _0x3f4a47(_0x1b4b83["queryId"]); 252 | if (_0x409985) { 253 | _0x409985["seeds"] = _0x1b4b83["seeds"]; 254 | _0x4399a0["push"](_0x409985); 255 | } 256 | } 257 | }); 258 | _0xb0cda6 = _0x5c2fe9["orderInfo"]["orderArray"]; 259 | } 260 | async function _0x1de15a(_0x313069, _0x1e6599, _0x553533) { 261 | let _0x46ed77 = true; 262 | let _0x4e2c17 = []; 263 | for (let _0x58ff2b = 0; _0x58ff2b < _0x313069["length"]; _0x58ff2b++) { 264 | let _0x253ba8 = _0x313069[_0x58ff2b]; 265 | let _0x6b2252 = _0x1c2c8b(_0x253ba8); 266 | if (!_0x6b2252) { 267 | _0x46ed77 = false; 268 | break; 269 | } else { 270 | _0x4e2c17["push"](_0x6b2252["pos"]); 271 | } 272 | } 273 | if (_0x46ed77) { 274 | let _0x4ed096 = await _0x54ec17(_0x1e6599, _0x553533["queryId"], _0x4e2c17, _0x553533["customerId"], _0x553533["type"]); 275 | if (_0x4ed096) { 276 | console["log"]("完成订单,获得", _0x553533["orderValue"], '金币'); 277 | return 3; 278 | } 279 | } 280 | } 281 | async function _0x3d9d6b(_0x18112d) { 282 | for (let _0x5a94ed = 0; _0x5a94ed < _0x4399a0["length"]; _0x5a94ed++) { 283 | let _0x104134 = _0x4399a0[_0x5a94ed]; 284 | if (!_0x104134) { 285 | console["log"]("需要解锁新母体植物"); 286 | return; 287 | } 288 | let _0x58e621 = []; 289 | for (let _0x103451 = 0; _0x103451 < _0xa8f67f["length"]; _0x103451++) { 290 | let _0x336da4 = _0xa8f67f[_0x103451]; 291 | if (!_0x336da4["cropQueryId"]) { 292 | const _0x3f3134 = { 293 | "producedCrop": {}, 294 | "type": 2, 295 | "pos1": _0x104134["pos"], 296 | "pos2": _0x336da4["pos"], 297 | "timestamp": new Date()["getTime"]() 298 | }; 299 | _0x3f3134["producedCrop"]["queryId"] = _0x1a886c(_0x22b780, 1); 300 | _0x3f3134["producedCrop"]["cropId"] = _0x104134["seeds"][0]; 301 | _0x58e621["push"](_0x3f3134); 302 | } 303 | } 304 | if (_0x58e621["length"] > 0) { 305 | console["log"]("开始种植新的植物"); 306 | let _0x328dd7 = await _0x1024fc(_0x18112d, _0x58e621); 307 | if (_0x328dd7 === -1) { 308 | return -1; 309 | } else if (_0x328dd7 === 1 || _0x328dd7 == null) { 310 | continue; 311 | } 312 | return 0; 313 | } 314 | } 315 | } 316 | async function _0x30b351(_0x3bd27a) { 317 | for (let _0xa8b92d = 0; _0xa8b92d < _0xa8f67f["length"]; _0xa8b92d++) { 318 | let _0x2fb245 = _0xa8f67f[_0xa8b92d]; 319 | if (_0x2fb245["cropQueryId"]) { 320 | if (_0x22b780[_0x2fb245["cropQueryId"]]["type"] === 1) { 321 | await _0x4338e2(_0x3bd27a, _0x2fb245["pos"]); 322 | } 323 | } 324 | } 325 | return await _0x3d9d6b(_0x3bd27a); 326 | } 327 | async function _0x3ed2e4(_0x5eb131) { 328 | const _0x190f14 = new Date()["getTime"](); 329 | _0x244760++; 330 | const _0x35ecd1 = { 331 | "body": "{\"type\":2,\"reqIdx\":" + _0x244760 + ",\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 332 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 333 | "instance": "INNER", 334 | "method": "POST", 335 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 336 | "path": "/onlineB/api/game/refresh", 337 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + _0x190f14 + "\",\"mc-env\":\"online\",\"mc-network\":\"WIFI\"}" 338 | }; 339 | let _0x417f26 = await _0x768dee("mtop.miniapp.cloud.application.request", _0x5eb131, _0x35ecd1); 340 | return _0x417f26; 341 | } 342 | function _0x1c2c8b(_0x46007f) { 343 | for (let _0x11e4f8 = 0; _0x11e4f8 < _0xa8f67f["length"]; _0x11e4f8++) { 344 | let _0x28aa5d = _0xa8f67f[_0x11e4f8]; 345 | let _0x3bb85d = _0x28aa5d["cropQueryId"]; 346 | if (_0x3bb85d) { 347 | let _0x3286eb = _0x22b780[_0x3bb85d]; 348 | if (_0x3286eb) { 349 | if (_0x3286eb['id'] === _0x46007f) { 350 | return _0x28aa5d; 351 | } 352 | } 353 | } 354 | } 355 | return null; 356 | } 357 | function _0x3f4a47(_0x1aea5d) { 358 | for (let _0x2605f4 = 0; _0x2605f4 < _0xa8f67f["length"]; _0x2605f4++) { 359 | let _0x4ed3d8 = _0xa8f67f[_0x2605f4]; 360 | if (_0x4ed3d8["cropQueryId"] === _0x1aea5d) { 361 | return _0x4ed3d8; 362 | } 363 | } 364 | return null; 365 | } 366 | function _0x1a886c(_0x2b3714, _0xecfab1) { 367 | var _0xa54c9c = _0x40dc91(Date["now"](), Math["random"]()); 368 | if (!_0x2b3714 || !_0x2b3714[_0xa54c9c] || !_0xecfab1 || _0xecfab1 <= 0) return _0xa54c9c; 369 | for (var _0x5c252f = 0; _0x5c252f < _0xecfab1; _0x5c252f++) { 370 | if (!_0x2b3714[_0xa54c9c = _0x40dc91(Date["now"](), Math["random"]())]) return _0xa54c9c; 371 | console["error"]("generate id failed, retry:" + (_0x5c252f + 1) + '/' + _0xecfab1); 372 | } 373 | } 374 | function _0x40dc91() { 375 | for (var _0x10372a = [], _0x2c7add = 0; _0x2c7add < arguments["length"]; _0x2c7add++) { 376 | _0x10372a[_0x2c7add] = arguments[_0x2c7add]; 377 | } 378 | return md5(_0x10372a["join"]('+'))["toString"](); 379 | } 380 | async function _0x1024fc(_0x2e65b5, _0x3fff1b) { 381 | await wait(3); 382 | _0x244760++; 383 | let _0x2959d6 = JSON["stringify"](_0x3fff1b); 384 | const _0x2b1d94 = { 385 | "body": "{\"cmds\":" + _0x2959d6 + ",\"reqIdx\":" + _0x244760 + ",\"gameId\":\"" + _0x1b7a8d + "\",\"token\":\"" + _0x35bf66 + "\",\"targetServer\":\"onlineB\",\"clientVersion\":\"v1.5.4\"}", 386 | "headers": "{\"content-type\":\"application/json;charset=UTF-8\"}", 387 | "instance": "INNER", 388 | "method": "POST", 389 | "options": "{\"cloudAppId\":\"47442\",\"timeout\":3000}", 390 | "path": "/onlineB/api/game/cmdExec", 391 | "protocols": "{\"Content-Type\":\"application/json\",\"mc-timestamp\":\"" + Date["now"]() + "\",\"mc-env\":\"online\",\"mc-network\":\"NOTREACHABLE\"}" 392 | }; 393 | let _0x5a38ea = await _0x768dee("mtop.miniapp.cloud.application.request", _0x2e65b5, _0x2b1d94); 394 | if (_0x5a38ea) { 395 | let _0x4691e5 = _0x5a38ea["data"]; 396 | if (!_0x4691e5) { 397 | console["log"](_0x5a38ea); 398 | return null; 399 | } 400 | if (_0x4691e5["dayUsedEnergyNum"]) { 401 | console["log"]("今日消耗的体力为:" + _0x4691e5["dayUsedEnergyNum"]); 402 | if (_0x4691e5["dayUsedEnergyNum"] > 299) { 403 | await _0x25c58b(_0x2e65b5); 404 | console["log"]("今日所有乐园币任务已完成"); 405 | return -1; 406 | } 407 | } 408 | let _0x4af419 = _0x4691e5["changedPieceList"]; 409 | if (_0x4af419["length"] === 0) { 410 | if (_0x4691e5["energy"] === 0) { 411 | console["log"]("体力不足"); 412 | return -1; 413 | } else { 414 | console["log"]("种植失败,稍后重试"); 415 | return 1; 416 | } 417 | } 418 | if (_0x4af419) { 419 | for (let _0x1a25ec = 0; _0x1a25ec < _0x4af419["length"]; _0x1a25ec++) { 420 | let _0x5017fe = _0x4af419[_0x1a25ec]; 421 | for (let _0x55b2f2 = 0; _0x55b2f2 < _0xa8f67f["length"]; _0x55b2f2++) { 422 | let _0xd36e9 = _0xa8f67f[_0x55b2f2]; 423 | if (_0x5017fe["pieceId"] === _0xd36e9["pieceId"]) { 424 | _0xa8f67f[_0x55b2f2] = _0x5017fe; 425 | } 426 | } 427 | } 428 | } 429 | let _0x59adef = _0x4691e5["changedCropMap"]; 430 | if (_0x59adef) { 431 | Object["keys"](_0x59adef)["forEach"](_0x476275 => { 432 | if (_0x22b780[_0x476275]) { 433 | if (_0x59adef[_0x476275]["isDelete"]) { 434 | delete _0x22b780[_0x476275]; 435 | } else { 436 | _0x22b780[_0x476275] = _0x59adef[_0x476275]["cropInfo"]; 437 | } 438 | } else { 439 | _0x22b780[_0x476275] = _0x59adef[_0x476275]["cropInfo"]; 440 | } 441 | }); 442 | } 443 | } 444 | return _0x5a38ea; 445 | } 446 | async function _0x2b4a48() { 447 | const _0x122270 = getCookies(); 448 | for (let _0x58e74c = 0; _0x58e74c < _0x122270["length"]; _0x58e74c++) { 449 | const _0xfb13b1 = _0x122270[_0x58e74c]; 450 | if (!_0xfb13b1) { 451 | console["log"](" ❌无效用户信息, 请重新获取ck"); 452 | } else { 453 | try { 454 | let _0xa95efd = await checkCk(_0xfb13b1, _0x58e74c); 455 | if (!_0xa95efd) { 456 | continue; 457 | } 458 | let _0x2003d5 = await getUserInfo(_0xa95efd); 459 | if (!_0x2003d5["username"]) { 460 | console["log"]('第', _0x58e74c + 1, "账号失效!请重新登录!!!😭"); 461 | continue; 462 | } 463 | const _0x35e63c = _0x2003d5["user_id"]; 464 | console["log"]("******开始【饿了么账号", _0x58e74c + 1, '】', _0x2003d5["username"], "*********"); 465 | let _0x15d4ce = await _0x1d5d09(_0xa95efd); 466 | if (!_0x15d4ce) { 467 | console["log"]("请完成实名认证后再来玩游戏"); 468 | continue; 469 | } 470 | let _0x4c52f9 = await _0x2eb09b(_0xa95efd); 471 | if (_0x4c52f9["gardenInfo"]["level"] < 4) { 472 | console["log"]("请先玩到 4 级再运行脚本"); 473 | continue; 474 | } 475 | await _0x31f56d(_0xa95efd, _0x4c52f9); 476 | } catch (_0x4236b6) { 477 | console["log"](_0x4236b6); 478 | } 479 | } 480 | } 481 | process["exit"](0); 482 | } 483 | _0x2b4a48(); 484 | 485 | // prettier-ignore 486 | function Env(t, e) { "undefined" != typeof process && JSON.stringify(process.env).indexOf("GITHUB") > -1 && process.exit(0); class s { constructor(t) { this.env = t } send(t, e = "GET") { t = "string" == typeof t ? { url: t } : t; let s = this.get; return "POST" === e && (s = this.post), new Promise((e, i) => { s.call(this, t, (t, s, r) => { t ? i(t) : e(s) }) }) } get(t) { return this.send.call(this.env, t) } post(t) { return this.send.call(this.env, t, "POST") } } return new class { constructor(t, e) { this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `🔔${this.name}, 开始!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } isSurge() { return "undefined" != typeof $httpClient && "undefined" == typeof $loon } isLoon() { return "undefined" != typeof $loon } toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } getjson(t, e) { let s = e; const i = this.getdata(t); if (i) try { s = JSON.parse(this.getdata(t)) } catch { } return s } setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, i) => e(i)) }) } runScript(t, e) { return new Promise(s => { let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); i = i ? i.replace(/\n/g, "").trim() : i; let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; const [o, h] = i.split("@"), n = { url: `http://${h}/v1/scripting/evaluate`, body: { script_text: t, mock_type: "cron", timeout: r }, headers: { "X-Key": o, Accept: "*/*" } }; this.post(n, (t, e, i) => s(i)) }).catch(t => this.logErr(t)) } loaddata() { if (!this.isNode()) return {}; { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e); if (!s && !i) return {}; { const i = s ? t : e; try { return JSON.parse(this.fs.readFileSync(i)) } catch (t) { return {} } } } } writedata() { if (this.isNode()) { this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), s = this.fs.existsSync(t), i = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) } } lodash_get(t, e, s) { const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); let r = t; for (const t of i) if (r = Object(r)[t], void 0 === r) return s; return r } lodash_set(t, e, s) { return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, i) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[i + 1]) >> 0 == +e[i + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) } getdata(t) { let e = this.getval(t); if (/^@/.test(t)) { const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; if (r) try { const t = JSON.parse(r); e = t ? this.lodash_get(t, i, "") : e } catch (t) { e = "" } } return e } setdata(t, e) { let s = !1; if (/^@/.test(e)) { const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; try { const e = JSON.parse(h); this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) } catch (e) { const o = {}; this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) } } else s = this.setval(t, e); return s } getval(t) { return this.isSurge() || this.isLoon() ? $persistentStore.read(t) : this.isQuanX() ? $prefs.valueForKey(t) : this.isNode() ? (this.data = this.loaddata(), this.data[t]) : this.data && this.data[t] || null } setval(t, e) { return this.isSurge() || this.isLoon() ? $persistentStore.write(t, e) : this.isQuanX() ? $prefs.setValueForKey(t, e) : this.isNode() ? (this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0) : this.data && this.data[e] || null } initGotEnv(t) { this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) } get(t, e = (() => { })) { t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"]), this.isSurge() || this.isLoon() ? (this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.get(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { try { if (t.headers["set-cookie"]) { const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar } } catch (t) { this.logErr(t) } }).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) })) } post(t, e = (() => { })) { if (t.body && t.headers && !t.headers["Content-Type"] && (t.headers["Content-Type"] = "application/x-www-form-urlencoded"), t.headers && delete t.headers["Content-Length"], this.isSurge() || this.isLoon()) this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), $httpClient.post(t, (t, s, i) => { !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) }); else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), $task.fetch(t).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => e(t)); else if (this.isNode()) { this.initGotEnv(t); const { url: s, ...i } = t; this.got.post(s, i).then(t => { const { statusCode: s, statusCode: i, headers: r, body: o } = t; e(null, { status: s, statusCode: i, headers: r, body: o }, o) }, t => { const { message: s, response: i } = t; e(s, i, i && i.body) }) } } time(t, e = null) { const s = e ? new Date(e) : new Date; let i = { "M+": s.getMonth() + 1, "d+": s.getDate(), "H+": s.getHours(), "m+": s.getMinutes(), "s+": s.getSeconds(), "q+": Math.floor((s.getMonth() + 3) / 3), S: s.getMilliseconds() }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); return t } msg(e = t, s = "", i = "", r) { const o = t => { if (!t) return t; if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { "open-url": t } : this.isSurge() ? { url: t } : void 0; if ("object" == typeof t) { if (this.isLoon()) { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } if (this.isQuanX()) { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl; return { "open-url": e, "media-url": s } } if (this.isSurge()) { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } } }; if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { let t = ["", "==============📣系统通知📣=============="]; t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) } } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, e) { const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) } wait(t) { return new Promise(e => setTimeout(e, t)) } done(t = {}) { const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) } }(t, e) } 487 | -------------------------------------------------------------------------------- /ql.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const got = require('got'); 4 | require('dotenv').config(); 5 | const { readFile } = require('fs/promises'); 6 | const path = require('path'); 7 | 8 | const qlDir = '/ql'; 9 | const fs = require('fs'); 10 | let Fileexists = fs.existsSync('/ql/data/config/auth.json'); 11 | let authFile=""; 12 | if (Fileexists) 13 | authFile="/ql/data/config/auth.json" 14 | else 15 | authFile="/ql/config/auth.json" 16 | 17 | const api = got.extend({ 18 | prefixUrl: 'http://127.0.0.1:5600', 19 | retry: { limit: 0 }, 20 | }); 21 | 22 | async function getToken() { 23 | const authConfig = JSON.parse(await readFile(authFile)); 24 | return authConfig.token; 25 | } 26 | 27 | module.exports.getEnvs = async (envName='elmck') => { 28 | const token = await getToken(); 29 | const body = await api({ 30 | url: 'api/envs', 31 | searchParams: { 32 | searchValue: envName, 33 | t: Date.now(), 34 | }, 35 | headers: { 36 | Accept: 'application/json', 37 | authorization: `Bearer ${token}`, 38 | }, 39 | }).json(); 40 | return body.data; 41 | }; 42 | 43 | async function getEnvsByName(name){ 44 | const token = await getToken(); 45 | const body = await api({ 46 | url: 'api/envs', 47 | searchParams: { 48 | searchValue: name, 49 | t: Date.now(), 50 | }, 51 | headers: { 52 | Accept: 'application/json', 53 | authorization: `Bearer ${token}`, 54 | }, 55 | }).json(); 56 | return body.data; 57 | } 58 | 59 | module.exports.getEnvsByName = getEnvsByName 60 | 61 | module.exports.getEnvsCount = async () => { 62 | const data = await this.getEnvs(); 63 | return data.length; 64 | }; 65 | 66 | module.exports.addEnv = async (cookie, remarks) => { 67 | const token = await getToken(); 68 | const body = await api({ 69 | method: 'post', 70 | url: 'api/envs', 71 | params: { t: Date.now() }, 72 | json: [{ 73 | name: 'elmck', 74 | value: cookie, 75 | remarks, 76 | }], 77 | headers: { 78 | Accept: 'application/json', 79 | authorization: `Bearer ${token}`, 80 | 'Content-Type': 'application/json;charset=UTF-8', 81 | }, 82 | }).json(); 83 | return body; 84 | }; 85 | 86 | module.exports.updateEnv = async (cookie, eid, remarks,envName='elmck') => { 87 | const token = await getToken(); 88 | const body = await api({ 89 | method: 'put', 90 | url: 'api/envs', 91 | params: { t: Date.now() }, 92 | json: { 93 | name: envName, 94 | value: cookie, 95 | _id: eid, 96 | remarks, 97 | }, 98 | headers: { 99 | Accept: 'application/json', 100 | authorization: `Bearer ${token}`, 101 | 'Content-Type': 'application/json;charset=UTF-8', 102 | }, 103 | }).json(); 104 | return body; 105 | }; 106 | 107 | module.exports.updateEnv11 = async (cookie, eid, remarks,envName='elmck') => { 108 | const token = await getToken(); 109 | const body = await api({ 110 | method: 'put', 111 | url: 'api/envs', 112 | params: { t: Date.now() }, 113 | json: { 114 | name: envName, 115 | value: cookie, 116 | id: eid, 117 | remarks, 118 | }, 119 | headers: { 120 | Accept: 'application/json', 121 | authorization: `Bearer ${token}`, 122 | 'Content-Type': 'application/json;charset=UTF-8', 123 | }, 124 | }).json(); 125 | return body; 126 | }; 127 | 128 | module.exports.DisableCk = async (eid) => { 129 | const token = await getToken(); 130 | const body = await api({ 131 | method: 'put', 132 | url: 'api/envs/disable', 133 | params: { t: Date.now() }, 134 | body: JSON.stringify([eid]), 135 | headers: { 136 | Accept: 'application/json', 137 | authorization: `Bearer ${token}`, 138 | 'Content-Type': 'application/json;charset=UTF-8', 139 | }, 140 | }).json(); 141 | return body; 142 | }; 143 | 144 | module.exports.EnableCk = async (eid) => { 145 | const token = await getToken(); 146 | const body = await api({ 147 | method: 'put', 148 | url: 'api/envs/enable', 149 | params: { t: Date.now() }, 150 | body: JSON.stringify([eid]), 151 | headers: { 152 | Accept: 'application/json', 153 | authorization: `Bearer ${token}`, 154 | 'Content-Type': 'application/json;charset=UTF-8', 155 | }, 156 | }).json(); 157 | return body; 158 | }; 159 | 160 | module.exports.getstatus = async(eid) => { 161 | var envs = await getEnvsByName('elmck'); 162 | var tempid = 0; 163 | for (let i = 0; i < envs.length; i++) { 164 | tempid = 0; 165 | if (envs[i]._id) { 166 | tempid = envs[i]._id; 167 | } 168 | if (envs[i].id) { 169 | tempid = envs[i].id; 170 | } 171 | if (tempid == eid) { 172 | return envs[i].status; 173 | } 174 | } 175 | return 99; 176 | }; 177 | 178 | module.exports.getEnvById = async(eid) => { 179 | const envs = await this.getEnvs(); 180 | var tempid = 0; 181 | for (let i = 0; i < envs.length; i++) { 182 | tempid = 0; 183 | if (envs[i]._id) { 184 | tempid = envs[i]._id; 185 | } 186 | if (envs[i].id) { 187 | tempid = envs[i].id; 188 | } 189 | if (tempid == eid) { 190 | return envs[i].value; 191 | } 192 | } 193 | return ""; 194 | }; 195 | 196 | module.exports.getEnvByUserId = async (userId) => { 197 | const envs = await this.getEnvs('elmqqck'); 198 | 199 | for (let i = 0; i < envs.length; i++) { 200 | let ck = envs[i].value 201 | const user_id = ck.match(/USERID=([^; ]+)(?=;?)/) ? ck.match(/USERID=([^; ]+)(?=;?)/)[0] : '123'; 202 | 203 | if (user_id.indexOf(userId)!==-1) { 204 | return envs[i] 205 | } 206 | } 207 | return ""; 208 | }; 209 | 210 | module.exports.delEnv = async (eid) => { 211 | const token = await getToken(); 212 | const body = await api({ 213 | method: 'delete', 214 | url: 'api/envs', 215 | params: { t: Date.now() }, 216 | body: JSON.stringify([eid]), 217 | headers: { 218 | Accept: 'application/json', 219 | authorization: `Bearer ${token}`, 220 | 'Content-Type':'application/json;charset=UTF-8', 221 | }, 222 | }).json(); 223 | return body; 224 | }; 225 | --------------------------------------------------------------------------------