diff --git a/rushu.js b/rushu.js
new file mode 100644
index 0000000..5c4e9da
--- /dev/null
+++ b/rushu.js
@@ -0,0 +1,142 @@
+/*
+#TL库:https://github.com/3288588344/toulu.git
+#tg频道:https://t.me/TLtoulu
+#QQ频道:https://pd.qq.com/s/672fku8ge
+#微信机器人:kckl6688
+#公众号:哆啦A梦的藏宝箱
+*/
+
+delete __filename
+delete __dirname
+ActiveXObject = undefined
+
+window = global;
+
+
+content="content_code"
+
+
+navigator = {"platform": "Linux aarch64"}
+navigator = {"userAgent": "CtClient;11.0.0;Android;13;22081212C;NTIyMTcw!#!MTUzNzY"}
+
+location={
+ "href": "https://",
+ "origin": "",
+ "protocol": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "",
+ "search": "",
+ "hash": ""
+}
+
+i = {length: 0}
+base = {length: 0}
+div = {
+ getElementsByTagName: function (res) {
+ console.log('div中的getElementsByTagName:', res)
+ if (res === 'i') {
+ return i
+ }
+ return '
'
+
+ }
+}
+
+script = {
+
+}
+meta = [
+ {charset:"UTF-8"},
+ {
+ content: content,
+ getAttribute: function (res) {
+ console.log('meta中的getAttribute:', res)
+ if (res === 'r') {
+ return 'm'
+ }
+ },
+ parentNode: {
+ removeChild: function (res) {
+ console.log('meta中的removeChild:', res)
+
+ return content
+ }
+ },
+
+ }
+]
+form = ''
+
+
+window.addEventListener= function (res) {
+ console.log('window中的addEventListener:', res)
+
+ }
+
+
+document = {
+
+
+ createElement: function (res) {
+ console.log('document中的createElement:', res)
+
+
+ if (res === 'div') {
+ return div
+ } else if (res === 'form') {
+ return form
+ }
+ else{return res}
+
+
+
+
+ },
+ addEventListener: function (res) {
+ console.log('document中的addEventListener:', res)
+
+ },
+ appendChild: function (res) {
+ console.log('document中的appendChild:', res)
+ return res
+ },
+ removeChild: function (res) {
+ console.log('document中的removeChild:', res)
+ },
+ getElementsByTagName: function (res) {
+ console.log('document中的getElementsByTagName:', res)
+ if (res === 'script') {
+ return script
+ }
+ if (res === 'meta') {
+ return meta
+ }
+ if (res === 'base') {
+ return base
+ }
+ },
+ getElementById: function (res) {
+ console.log('document中的getElementById:', res)
+ if (res === 'root-hammerhead-shadow-ui') {
+ return null
+ }
+ }
+
+}
+
+setInterval = function () {}
+setTimeout = function () {}
+window.top = window
+
+
+'ts_code'
+
+
+
+function main() {
+ cookie = document.cookie.split(';')[0]
+ return cookie
+}
+
diff --git a/电信营业厅任务.js b/电信营业厅任务.js
new file mode 100644
index 0000000..f26cc16
--- /dev/null
+++ b/电信营业厅任务.js
@@ -0,0 +1,2229 @@
+/*电信营业厅 v6.02
+
+签到和完成部分金豆任务, 喂宠物
+7天,15天,28天连签抽奖, 宠物等级权益兑换
+
+自己设置电信的服务密码, 把 手机号#服务密码 填到变量里, 多账号换行或&或@隔开:
+export chinaTelecomAccount="138000000#111111"
+
+每天运行多次
+
+
+cron: 5 0,6,12,20 * * *
+const $ = new Env("电信营业厅并发");
+
+#TL库:https://github.com/3288588344/toulu.git
+#tg频道:https://t.me/TLtoulu
+#QQ频道:https://pd.qq.com/s/672fku8ge
+#微信机器人:kckl6688
+#公众号:哆啦A梦的藏宝箱
+
+
+*/
+
+
+const _0x49dfef = _0x5370a4("电信营业厅"),
+ _0x8e0885 = require("got"),
+ _0x203c4a = require("path"),
+ {
+ exec: _0x3898d1
+ } = require("child_process"),
+ {
+ CookieJar: _0x4f58d7
+ } = require("tough-cookie"),
+ _0x5336b3 = require("fs"),
+ _0x5e650c = require("crypto-js"),
+ _0x22f09c = "chinaTelecom",
+ _0x1876a7 = /[\n\&\@]/,
+ _0x4aec53 = [_0x22f09c + "Account"],
+ _0x128624 = 30000,
+ _0x5a04a9 = 3;
+const _0x1736e2 = _0x22f09c + "Rpc",
+ _0x16d3ea = process.env[_0x1736e2],
+ _0xf4231c = 6.02,
+ _0x14f289 = "chinaTelecom",
+ _0x100b57 = "https://leafxcy.coding.net/api/user/leafxcy/project/validcode/shared-depot/validCode/git/blob/master/code.json",
+ _0x344953 = "JinDouMall";
+let _0x1d3d6d = {};
+const _0x5370da = "./chinaTelecom_cache.json",
+ _0x3ed712 = "Mozilla/5.0 (Linux; U; Android 12; zh-cn; ONEPLUS A9000 Build/QKQ1.190716.003) AppleWebKit/533.1 (KHTML, like Gecko) Version/5.0 Mobile Safari/533.1",
+ _0x75a069 = "34d7cb0bcdf07523",
+ _0x2304b1 = "1234567`90koiuyhgtfrdewsaqaqsqde",
+ _0x1110eb = "\0\0\0\0\0\0\0\0",
+ _0x3c561e = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBkLT15ThVgz6/NOl6s8GNPofdWzWbCkWnkaAm7O2LjkM1H7dMvzkiqdxU02jamGRHLX/ZNMCXHnPcW/sDhiFCBN18qFvy8g6VYb9QtroI09e176s+ZCtiv7hbin2cCTj99iUpnEloZm19lwHyo69u5UMiPMpq0/XKBO8lYhN/gwIDAQAB",
+ _0x1e9565 = "-----BEGIN PUBLIC KEY-----\n" + _0x3c561e + "\n-----END PUBLIC KEY-----",
+ _0x516f15 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ugG5A8cZ3FqUKDwM57GM4io6JGcStivT8UdGt67PEOihLZTw3P7371+N47PrmsCpnTRzbTgcupKtUv8ImZalYk65dU8rjC/ridwhw9ffW2LBwvkEnDkkKKRi2liWIItDftJVBiWOh17o6gfbPoNrWORcAdcbpk2L+udld5kZNwIDAQAB",
+ _0x4995b7 = "-----BEGIN PUBLIC KEY-----\n" + _0x516f15 + "\n-----END PUBLIC KEY-----",
+ _0x51cf70 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDIPOHtjs6p4sTlpFvrx+ESsYkEvyT4JB/dcEbU6C8+yclpcmWEvwZFymqlKQq89laSH4IxUsPJHKIOiYAMzNibhED1swzecH5XLKEAJclopJqoO95o8W63Euq6K+AKMzyZt1SEqtZ0mXsN8UPnuN/5aoB3kbPLYpfEwBbhto6yrwIDAQAB",
+ _0x2e5ddf = "-----BEGIN PUBLIC KEY-----\n" + _0x51cf70 + "\n-----END PUBLIC KEY-----",
+ _0xc38e90 = require("node-rsa");
+let _0x13a631 = new _0xc38e90(_0x1e9565);
+const _0x4386dc = {
+ encryptionScheme: "pkcs1"
+};
+_0x13a631.setOptions(_0x4386dc);
+let _0x47bb4b = new _0xc38e90(_0x4995b7);
+const _0xe2cacf = {
+ encryptionScheme: "pkcs1"
+};
+_0x47bb4b.setOptions(_0xe2cacf);
+let _0x5b4189 = new _0xc38e90(_0x2e5ddf);
+const _0x3ab892 = {
+ encryptionScheme: "pkcs1"
+};
+_0x5b4189.setOptions(_0x3ab892);
+const _0x131d2d = [202201, 202202, 202203],
+ _0x3c685e = 5;
+function _0x1519a6(_0xa8ae5c, _0x459aac, _0x58d61f, _0xa81bc3, _0x5af061, _0x3eaf32) {
+ return _0x5e650c[_0xa8ae5c].encrypt(_0x5e650c.enc.Utf8.parse(_0xa81bc3), _0x5e650c.enc.Utf8.parse(_0x5af061), {
+ mode: _0x5e650c.mode[_0x459aac],
+ padding: _0x5e650c.pad[_0x58d61f],
+ iv: _0x5e650c.enc.Utf8.parse(_0x3eaf32)
+ }).ciphertext.toString(_0x5e650c.enc.Hex);
+}
+function _0x436a1e(_0x5007ed, _0x18814d, _0x38ebb6, _0x4281ff, _0x1bafc9, _0x3aac70) {
+ return _0x5e650c[_0x5007ed].decrypt({
+ ciphertext: _0x5e650c.enc.Hex.parse(_0x4281ff)
+ }, _0x5e650c.enc.Utf8.parse(_0x1bafc9), {
+ mode: _0x5e650c.mode[_0x18814d],
+ padding: _0x5e650c.pad[_0x38ebb6],
+ iv: _0x5e650c.enc.Utf8.parse(_0x3aac70)
+ }).toString(_0x5e650c.enc.Utf8);
+}
+function _0x4e4355() {
+ try {
+ _0x5336b3.writeFileSync(_0x5370da, JSON.stringify(_0x1d3d6d, null, 4), "utf-8");
+ } catch (_0x1c3791) {
+ console.log("保存缓存出错");
+ }
+}
+function _0xa0ff1b() {
+ try {
+ _0x1d3d6d = JSON.parse(_0x5336b3.readFileSync(_0x5370da, "utf-8"));
+ } catch (_0x125821) {
+ console.log("读取缓存出错, 新建一个token缓存");
+ _0x4e4355();
+ }
+}
+let _0x300c8e = 0,
+ _0xdb6efe = 0;
+function _0x11cae0() {
+ _0xdb6efe = 1;
+ process.on("SIGTERM", () => {
+ _0xdb6efe = 2;
+ process.exit(0);
+ });
+ const _0x377b8a = _0x203c4a.basename(process.argv[1]),
+ _0x39bc5b = ["bash", "timeout", "grep"];
+ let _0x4fe84e = ["ps afx"];
+ _0x4fe84e.push("grep " + _0x377b8a);
+ _0x4fe84e = _0x4fe84e.concat(_0x39bc5b.map(_0x425dac => "grep -v \"" + _0x425dac + " \""));
+ _0x4fe84e.push("wc -l");
+ const _0x401932 = _0x4fe84e.join("|"),
+ _0x134226 = () => {
+ _0x3898d1(_0x401932, (_0x26b41f, _0x817890, _0x4eca1a) => {
+ if (_0x26b41f || _0x4eca1a) {
+ return;
+ }
+ _0x300c8e = parseInt(_0x817890.trim(), 10);
+ });
+ if (_0xdb6efe == 1) {
+ setTimeout(_0x134226, 2000);
+ }
+ };
+ _0x134226();
+}
+class _0x9d1851 {
+ constructor() {
+ this.index = _0x49dfef.userIdx++;
+ this.name = "";
+ this.valid = false;
+ const _0x46f57a = {
+ limit: 0
+ };
+ const _0x42e66e = {
+ Connection: "keep-alive"
+ };
+ const _0x1612bd = {
+ retry: _0x46f57a,
+ timeout: _0x128624,
+ followRedirect: false,
+ ignoreInvalidCookies: true,
+ headers: _0x42e66e
+ };
+ this.got = _0x8e0885.extend(_0x1612bd);
+ if (_0xdb6efe == 0) {
+ _0x11cae0();
+ }
+ }
+ log(_0x42a357, _0x32d0cc = {}, _0x4e4355 = false) {
+ var _0x58117c = "",
+ _0x9ca0e2 = _0x49dfef.userCount.toString().length;
+ if (this.index) {
+ _0x58117c += "账号[" + _0x49dfef.padStr(this.index, _0x9ca0e2) + "]";
+ }
+ if (this.name) {
+ _0x58117c += "[" + this.name + "]";
+ }
+ let logEntry = _0x58117c + _0x42a357;
+ this.logs.push(logEntry); // 将日志存储到 logs 数组中
+ if (_0x4e4355) {
+ _0x49dfef.log(logEntry, _0x32d0cc);
+ }
+}
+ set_cookie(_0x309397, _0x3ab012, _0x4a8547, _0x1320cb, _0x482400 = {}) {
+ this.cookieJar.setCookieSync(_0x309397 + "=" + _0x3ab012 + "; Domain=" + _0x4a8547 + ";", "" + _0x1320cb);
+ }
+ async request(_0x29ad8a) {
+ const _0x58b4a1 = ["ECONNRESET", "EADDRINUSE", "ENOTFOUND", "EAI_AGAIN"],
+ _0x497c09 = ["TimeoutError"],
+ _0x54807f = ["EPROTO"],
+ _0x30eee7 = [];
+ var _0x208a74 = null,
+ _0x3a35d0 = 0,
+ _0x1684d3 = _0x29ad8a.fn || _0x29ad8a.url;
+ let _0x25d788 = _0x49dfef.get(_0x29ad8a, "valid_code", _0x30eee7);
+ _0x29ad8a.method = _0x29ad8a?.["method"]?.["toUpperCase"]() || "GET";
+ let _0x19ce7b, _0x5c8c40;
+ while (_0x3a35d0 < _0x5a04a9) {
+ try {
+ _0x3a35d0++;
+ _0x19ce7b = "";
+ _0x5c8c40 = "";
+ let _0x1fa216 = null,
+ _0x123eec = _0x29ad8a?.["timeout"] || this.got?.["defaults"]?.["options"]?.["timeout"]?.["request"] || _0x128624,
+ _0x34e77b = false,
+ _0x5397b0 = Math.max(this.index - 17, 0),
+ _0x5d25e7 = Math.min(Math.max(this.index - 18, 1), 18),
+ _0x52755a = Math.min(Math.max(this.index - 19, 1), 19),
+ _0x15d328 = _0x5397b0 * _0x5d25e7 * _0x52755a * 4,
+ _0x2c4c80 = _0x5397b0 * _0x5d25e7 * _0x52755a * 18,
+ _0x4cfee0 = _0x15d328 + Math.floor(Math.random() * _0x2c4c80),
+ _0x15dce7 = _0x300c8e * (_0x300c8e - 1) * 20,
+ _0x5ca50a = (_0x300c8e - 1) * (_0x300c8e - 1) * 20,
+ _0x333735 = _0x15dce7 + Math.floor(Math.random() * _0x5ca50a),
+ _0x573d35 = Math.max(_0x49dfef.userCount - 19, 0),
+ _0x25871d = Math.max(_0x49dfef.userCount - 20, 0),
+ _0x34f531 = _0x573d35 * 2,
+ _0x1bd293 = _0x25871d * 4,
+ _0x4845e7 = _0x34f531 + Math.floor(Math.random() * _0x1bd293),
+ _0x5dc50f = _0x4cfee0 + _0x333735 + _0x4845e7;
+ await _0x49dfef.wait(_0x5dc50f);
+ await new Promise(async _0x45b1d3 => {
+ setTimeout(() => {
+ _0x34e77b = true;
+ _0x45b1d3();
+ }, _0x123eec);
+ await this.got(_0x29ad8a).then(_0x284c2a => {
+ _0x208a74 = _0x284c2a;
+ }, _0x55b6b8 => {
+ _0x1fa216 = _0x55b6b8;
+ _0x208a74 = _0x55b6b8.response;
+ _0x19ce7b = _0x1fa216?.["code"] || "";
+ _0x5c8c40 = _0x1fa216?.["name"] || "";
+ });
+ _0x45b1d3();
+ });
+ if (_0x34e77b) {
+ this.log("[" + _0x1684d3 + "]请求超时(" + _0x123eec / 1000 + "秒),重试第" + _0x3a35d0 + "次");
+ } else {
+ if (_0x54807f.includes(_0x19ce7b)) {
+ this.log("[" + _0x1684d3 + "]请求错误[" + _0x19ce7b + "][" + _0x5c8c40 + "]");
+ if (_0x1fa216?.["message"]) {
+ console.log(_0x1fa216.message);
+ }
+ break;
+ } else {
+ if (_0x497c09.includes(_0x5c8c40)) {
+ this.log("[" + _0x1684d3 + "]请求错误[" + _0x19ce7b + "][" + _0x5c8c40 + "],重试第" + _0x3a35d0 + "次");
+ } else {
+ if (_0x58b4a1.includes(_0x19ce7b)) {
+ this.log("[" + _0x1684d3 + "]请求错误[" + _0x19ce7b + "][" + _0x5c8c40 + "],重试第" + _0x3a35d0 + "次");
+ } else {
+ let _0x42b498 = _0x208a74?.["statusCode"] || "",
+ _0x2ef704 = _0x42b498 / 100 | 0;
+ if (_0x42b498) {
+ _0x2ef704 > 3 && !_0x25d788.includes(_0x42b498) && (_0x42b498 ? this.log("请求[" + _0x1684d3 + "]返回[" + _0x42b498 + "]") : this.log("请求[" + _0x1684d3 + "]错误[" + _0x19ce7b + "][" + _0x5c8c40 + "]"));
+ if (_0x2ef704 <= 4) {
+ break;
+ }
+ } else {
+ this.log("请求[" + _0x1684d3 + "]错误[" + _0x19ce7b + "][" + _0x5c8c40 + "]");
+ }
+ }
+ }
+ }
+ }
+ } catch (_0xa3ad4) {
+ _0xa3ad4.name == "TimeoutError" ? this.log("[" + _0x1684d3 + "]请求超时,重试第" + _0x3a35d0 + "次") : this.log("[" + _0x1684d3 + "]请求错误(" + _0xa3ad4.message + "),重试第" + _0x3a35d0 + "次");
+ }
+ }
+ const _0x14f89a = {
+ statusCode: _0x19ce7b || -1,
+ headers: null,
+ result: null
+ };
+ if (_0x208a74 == null) {
+ return Promise.resolve(_0x14f89a);
+ }
+ let {
+ statusCode: _0x4f50c8,
+ headers: _0x4fdc35,
+ body: _0x4bfa21
+ } = _0x208a74;
+ if (_0x4bfa21) {
+ try {
+ _0x4bfa21 = JSON.parse(_0x4bfa21);
+ } catch {}
+ }
+ const _0x5d1199 = {
+ statusCode: _0x4f50c8,
+ headers: _0x4fdc35,
+ result: _0x4bfa21
+ };
+ return Promise.resolve(_0x5d1199);
+ }
+}
+let _0x280825 = _0x9d1851;
+try {
+ let _0x236d58 = require("./LocalBasic");
+ _0x280825 = _0x236d58;
+} catch {}
+let _0x3b1630 = new _0x280825(_0x49dfef);
+const { exec } = require('child_process');
+const fs = require('fs');
+function execAsync(command) {
+ return new Promise((resolve, reject) => {
+ exec(command, (error, stdout, stderr) => {
+ if (error) {
+ reject(error);
+ } else {
+ resolve({ stdout, stderr });
+ }
+ });
+ });
+}
+class _0x3f433d extends _0x280825 {
+ constructor(_0x5669ce) {
+ super(_0x49dfef);
+ let _0x28f602 = _0x5669ce.split("#");
+ this.name = _0x28f602[0];
+ this.passwd = _0x28f602?.[1] || "";
+ this.uuid = [_0x49dfef.randomPattern("xxxxxxxx"), _0x49dfef.randomPattern("xxxx"), _0x49dfef.randomPattern("4xxx"), _0x49dfef.randomPattern("xxxx"), _0x49dfef.randomPattern("xxxxxxxxxxxx")];
+ this.cookieJar = new _0x4f58d7();
+ this.can_feed = true;
+ this.jml_tokenFlag = "";
+ this.mall_token = "";
+ this.logs = [];
+ this.got = this.got.extend({
+ cookieJar: this.cookieJar,
+ headers: {
+ Connection: "keep-alive",
+ "User-Agent": _0x3ed712
+ }
+ });
+ }
+ load_token() {
+ let _0x2f4a66 = false;
+ _0x1d3d6d[this.name] && (this.userId = _0x1d3d6d[this.name].userId, this.token = _0x1d3d6d[this.name].token, this.log("读取到缓存token"), _0x2f4a66 = true);
+ return _0x2f4a66;
+ }
+ encode_phone() {
+ let _0xd2389f = this.name.split("");
+ for (let _0x51660a in _0xd2389f) {
+ _0xd2389f[_0x51660a] = String.fromCharCode(_0xd2389f[_0x51660a].charCodeAt(0) + 2);
+ }
+ return _0xd2389f.join("");
+ }
+ encode_aes(_0x53e9bb) {
+ return _0x1519a6("AES", "ECB", "Pkcs7", _0x53e9bb, _0x75a069, 0);
+ }
+ get_mall_headers() {
+ return {
+ "Content-Type": "application/json;charset=utf-8",
+ Accept: "application/json, text/javascript, */*; q=0.01",
+ Authorization: this.mall_token ? "Bearer " + this.mall_token : "",
+ "X-Requested-With": "XMLHttpRequest"
+ };
+ }
+ async login(_0x2971d3 = {}) {
+ let _0x22cd07 = false;
+ try {
+ let _0x3ae9d0 = _0x49dfef.time("yyyyMMddhhmmss"),
+ _0x16bc9b = "iPhone 14 15.4." + this.uuid.slice(0, 2).join("") + this.name + _0x3ae9d0 + this.passwd + "0$$$0.",
+ _0x807c6e = {
+ fn: "login",
+ method: "post",
+ url: "https://appgologin.189.cn:9031/login/client/userLoginNormal",
+ json: {
+ headerInfos: {
+ code: "userLoginNormal",
+ timestamp: _0x3ae9d0,
+ broadAccount: "",
+ broadToken: "",
+ clientType: "#9.6.1#channel50#iPhone 14 Pro Max#",
+ shopId: "20002",
+ source: "110003",
+ sourcePassword: "Sid98s",
+ token: "",
+ userLoginName: this.name
+ },
+ content: {
+ attach: "test",
+ fieldData: {
+ loginType: "4",
+ accountType: "",
+ loginAuthCipherAsymmertric: _0x13a631.encrypt(_0x16bc9b, "base64"),
+ deviceUid: this.uuid.slice(0, 3).join(""),
+ phoneNum: this.encode_phone(),
+ isChinatelecom: "0",
+ systemVersion: "15.4.0",
+ authentication: this.passwd
+ }
+ }
+ }
+ },
+ {
+ result: _0x3cbd6a,
+ statusCode: _0x4338ff
+ } = await this.request(_0x807c6e),
+ _0x107431 = _0x49dfef.get(_0x3cbd6a?.["responseData"], "resultCode", -1);
+ if (_0x107431 == "0000") {
+ let {
+ userId = "",
+ token = ""
+ } = _0x3cbd6a?.["responseData"]?.["data"]?.["loginSuccessResult"] || {};
+ this.userId = userId;
+ this.token = token;
+ this.log("使用服务密码登录成功");
+ _0x1d3d6d[this.name] = {
+ token: token,
+ userId: userId,
+ t: Date.now()
+ };
+ _0x4e4355();
+ _0x22cd07 = true;
+ } else {
+ let _0xf8ba30 = _0x3cbd6a?.["msg"] || _0x3cbd6a?.["responseData"]?.["resultDesc"] || _0x3cbd6a?.["headerInfos"]?.["reason"] || "";
+ this.log("服务密码登录失败[" + _0x107431 + "]: " + _0xf8ba30);
+ }
+ } catch (_0x576f6c) {
+ console.log(_0x576f6c);
+ } finally {
+ return _0x22cd07;
+ }
+ }
+ async get_ticket(_0x3e5067 = {}) {
+ let _0x252ee2 = "";
+ try {
+ let _0x21dd20 = "\n \n \n getSingle\n " + _0x49dfef.time("yyyyMMddhhmmss") + "\n \n \n #9.6.1#channel50#iPhone 14 Pro Max#\n 20002\n 110003\n Sid98s\n " + this.token + "\n " + this.name + "\n \n \n test\n \n " + _0x1519a6("TripleDES", "CBC", "Pkcs7", this.userId, _0x2304b1, _0x1110eb) + "\n 4a6862274835b451\n \n \n ";
+ const _0xb709e1 = {
+ fn: "get_ticket",
+ method: "post",
+ url: "https://appgologin.189.cn:9031/map/clientXML",
+ body: _0x21dd20
+ };
+ let {
+ result: _0x9f4220,
+ statusCode: _0x1e891f
+ } = await this.request(_0xb709e1);
+ if (_0x9f4220) {
+ let _0x18f397 = _0x9f4220.match(/\(\w+)\<\/Ticket\>/);
+ if (_0x18f397) {
+ let _0x2c4653 = _0x18f397[1];
+ _0x252ee2 = _0x436a1e("TripleDES", "CBC", "Pkcs7", _0x2c4653, _0x2304b1, _0x1110eb);
+ this.ticket = _0x252ee2;
+ }
+ }
+ !_0x252ee2 && (!_0x3e5067.retry && (await this.login()) ? (_0x3e5067.retry = true, _0x252ee2 = await this.get_ticket(_0x3e5067)) : (this.log("没有获取到ticket[" + _0x1e891f + "]: "), _0x9f4220 && this.log(": " + JSON.stringify(_0x9f4220))));
+ } catch (_0x1c9e54) {
+ console.log(_0x1c9e54);
+ } finally {
+ return _0x252ee2;
+ }
+ }
+
+ async firstRequest() {
+ try {
+
+ const { stdout, stderr } = await execAsync('python3 Ruishu.py');
+
+ if (stderr) {
+ console.error(`Error running Ruishu.py: ${stderr}`);
+ return null;
+ }
+
+
+ const cookies = JSON.parse(stdout);
+
+
+ const cookieString = Object.entries(cookies)
+ .map(([key, value]) => `${key}=${value}`)
+ .join('; ');
+
+ return cookieString;
+ } catch (error) {
+ console.error(`Error: ${error.message}`);
+ return null;
+ }
+ }
+
+
+ async get_sign(_0x9b96be = {}) {
+ const cookies = await this.firstRequest();
+ let _0x10c0cb = false;
+ try {
+ const _0x59fe75 = {
+ ticket: this.ticket
+ };
+
+ const _0x139dfe = {
+ fn: "login",
+ method: "get",
+ url: "https://wapside.189.cn:9001/jt-sign/ssoHomLogin",
+ searchParams: _0x59fe75,
+ headers: {
+ Cookie: cookies,
+ }
+ };
+ let {
+ result: _0x36bbb6,
+ statusCode: _0x3a8945
+ } = await this.request(_0x139dfe),
+ _0xe3542d = _0x49dfef.get(_0x36bbb6, "resoultCode", _0x3a8945);
+ _0xe3542d == 0 ? (_0x10c0cb = _0x36bbb6?.["sign"], this.sign = _0x10c0cb, this.got = this.got.extend({
+ headers: {
+ sign: this.sign
+ }
+ })) : this.log("获取sign失败[" + _0xe3542d + "]: " + _0x36bbb6);
+ } catch (_0x44161f) {
+ console.log(_0x44161f);
+ } finally {
+ return _0x10c0cb;
+ }
+ }
+ encrypt_para(_0x217db5) {
+ let _0x1c768f = typeof _0x217db5 == "string" ? _0x217db5 : JSON.stringify(_0x217db5);
+ return _0x47bb4b.encrypt(_0x1c768f, "hex");
+ }
+ async userCoinInfo(_0x3a27b0 = false, _0x2a9f2e = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x314c14 = {
+ phone: this.name
+ };
+ let _0x55424b = {
+ fn: "userCoinInfo",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/api/home/userCoinInfo",
+ json: {
+ para: this.encrypt_para(_0x314c14)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x18ad00,
+ statusCode: _0x3e695c
+ } = await this.request(_0x55424b),
+ _0x474131 = _0x49dfef.get(_0x18ad00, "resoultCode", _0x3e695c);
+ if (_0x474131 == 0) {
+ this.coin = _0x18ad00?.["totalCoin"] || 0;
+ if (_0x3a27b0) {
+ const _0x3a5985 = {
+ notify: true
+ };
+ this.log("金豆余额: " + this.coin, _0x3a5985);
+ if (_0x18ad00.amountEx) {
+ let _0x5b7bde = _0x49dfef.time("yyyy-MM-dd", _0x18ad00.expireDate);
+ const _0x359049 = {
+ notify: true
+ };
+ _0x49dfef.log("\n======= 账号[" + this.index + "][" + this.name + "]--[" + _0x5b7bde + "]--近期将过期" + _0x18ad00.amountEx + "金豆\n", _0x359049);
+ }
+ }
+ } else {
+ let _0x4e7123 = _0x18ad00?.["msg"] || _0x18ad00?.["resoultMsg"] || _0x18ad00?.["error"] || "";
+ this.log("查询账户金豆余额错误[" + _0x474131 + "]: " + _0x4e7123);
+ }
+ } catch (_0x4d1b75) {
+ console.log(_0x4d1b75);
+ }
+ }
+ async userStatusInfo(_0x10c627 = {}) {
+ try {
+ const _0x34621e = {
+ phone: this.name
+ };
+ let _0x16b897 = {
+ fn: "userStatusInfo",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/api/home/userStatusInfo",
+ json: {
+ para: this.encrypt_para(_0x34621e)
+ }
+ };
+
+ // 第一次请求
+ {
+ const cookies = await this.firstRequest();
+ _0x16b897.headers = {
+ Cookie: cookies,
+ };
+ let {
+ result: _0x39cfe5,
+ statusCode: _0x5e556e
+ } = await this.request(_0x49dfef.copy(_0x16b897)),
+ _0x509ab0 = _0x49dfef.get(_0x39cfe5, "resoultCode", _0x5e556e);
+ if (_0x509ab0 == 0) {
+ let {
+ isSign: _0x1d403c
+ } = _0x39cfe5?.["data"];
+ _0x1d403c ? this.log("今天已签到") : await this.doSign();
+ } else {
+ let _0x11bda2 = _0x39cfe5?.["msg"] || _0x39cfe5?.["resoultMsg"] || _0x39cfe5?.["error"] || "";
+ this.log("查询账户签到状态错误[" + _0x509ab0 + "]: " + _0x11bda2);
+ }
+ }
+
+ // 第二次请求
+ {
+ const cookies = await this.firstRequest();
+ _0x16b897.headers = {
+ Cookie: cookies,
+ };
+ let {
+ result: _0xf4c969,
+ statusCode: _0x34b777
+ } = await this.request(_0x49dfef.copy(_0x16b897)),
+ _0x4d9c85 = _0x49dfef.get(_0xf4c969, "resoultCode", _0x34b777);
+ if (_0x4d9c85 == 0) {
+ let {
+ continuousDay: _0x33365d,
+ signDay: _0x128cf2,
+ isSeven: _0x3fa455
+ } = _0xf4c969?.["data"];
+ this.log("已签到" + _0x128cf2 + "天, 连签" + _0x33365d + "天");
+ _0x3fa455 && (await this.exchangePrize());
+ } else {
+ let _0xc36b81 = _0xf4c969?.["msg"] || _0xf4c969?.["resoultMsg"] || _0xf4c969?.["error"] || "";
+ this.log("查询账户签到状态错误[" + _0x4d9c85 + "]: " + _0xc36b81);
+ }
+ }
+ } catch (_0x103f04) {
+ console.log(_0x103f04);
+ }
+ }
+ async continueSignDays(_0x3e553e = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x6a3b38 = {
+ phone: this.name
+ };
+ let _0x215fff = {
+ fn: "continueSignDays",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/webSign/continueSignDays",
+ json: {
+ para: this.encrypt_para(_0x6a3b38)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x6e6187,
+ statusCode: _0x257d59
+ } = await this.request(_0x215fff),
+ _0x912371 = _0x49dfef.get(_0x6e6187, "resoultCode", _0x257d59);
+ if (_0x912371 == 0) {
+ this.log("抽奖连签天数: " + (_0x6e6187?.["continueSignDays"] || 0) + "天");
+ if (_0x6e6187?.["continueSignDays"] == 15) {
+ const _0x207b02 = {
+ type: "15"
+ };
+ await this.exchangePrize(_0x207b02);
+ } else {
+ if (_0x6e6187?.["continueSignDays"] == 28) {
+ const _0x1f691c = {
+ type: "28"
+ };
+ await this.exchangePrize(_0x1f691c);
+ }
+ }
+ } else {
+ let _0x311a52 = _0x6e6187?.["msg"] || _0x6e6187?.["resoultMsg"] || _0x6e6187?.["error"] || "";
+ this.log("查询抽奖连签天数错误[" + _0x912371 + "]: " + _0x311a52);
+ }
+ } catch (_0xfe7972) {
+ console.log(_0xfe7972);
+ }
+ }
+ async continueSignRecords(_0x716c04 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x47b502 = {
+ phone: this.name
+ };
+ let _0x3db199 = {
+ fn: "continueSignRecords",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/webSign/continueSignRecords",
+ json: {
+ para: this.encrypt_para(_0x47b502)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0xcdce9f,
+ statusCode: _0x167568
+ } = await this.request(_0x3db199),
+ _0xd160b5 = _0x49dfef.get(_0xcdce9f, "resoultCode", _0x167568);
+ if (_0xd160b5 == 0) {
+ if (_0xcdce9f?.["continue15List"]?.["length"]) {
+ const _0x4ddf3a = {
+ type: "15"
+ };
+ await this.exchangePrize(_0x4ddf3a);
+ }
+ if (_0xcdce9f?.["continue28List"]?.["length"]) {
+ const _0x24d413 = {
+ type: "28"
+ };
+ await this.exchangePrize(_0x24d413);
+ }
+ } else {
+ let _0xa1a8c7 = _0xcdce9f?.["msg"] || _0xcdce9f?.["resoultMsg"] || _0xcdce9f?.["error"] || "";
+ this.log("查询连签抽奖状态错误[" + _0xd160b5 + "]: " + _0xa1a8c7);
+ }
+ } catch (_0x696f49) {
+ console.log(_0x696f49);
+ }
+ }
+ async doSign(_0x3d1e97 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x2c6ae2 = {
+ phone: this.name,
+ date: Date.now(),
+ sysType: "20002"
+ },
+ _0x32b4a2 = {
+ fn: "doSign",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/webSign/sign",
+ json: {
+ encode: this.encode_aes(JSON.stringify(_0x2c6ae2))
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x4a380a,
+ statusCode: _0x39f295
+ } = await this.request(_0x32b4a2),
+ _0x66dfe4 = _0x49dfef.get(_0x4a380a, "resoultCode", _0x39f295);
+ if (_0x66dfe4 == 0) {
+ let _0x3199d0 = _0x49dfef.get(_0x4a380a?.["data"], "code", -1);
+ if (_0x3199d0 == 1) {
+ const _0x241cc1 = {
+ notify: true
+ };
+ this.log("签到成功,获得" + (_0x4a380a?.["data"]?.["coin"] || 0) + "金豆", _0x241cc1);
+ await this.userStatusInfo();
+ } else {
+ const _0x16b3bf = {
+ notify: true
+ };
+ this.log("签到失败[" + _0x3199d0 + "]: " + _0x4a380a.data.msg, _0x16b3bf);
+ }
+ } else {
+ let _0x48eddc = _0x4a380a?.["msg"] || _0x4a380a?.["resoultMsg"] || _0x4a380a?.["error"] || "";
+ this.log("签到错误[" + _0x66dfe4 + "]: " + _0x48eddc);
+ }
+ } catch (_0x3c07a4) {
+ console.log(_0x3c07a4);
+ }
+ }
+ async exchangePrize(_0x503199 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x15d8af = _0x49dfef.pop(_0x503199, "type", "7");
+ const _0x247865 = {
+ phone: this.name,
+ type: _0x15d8af
+ };
+ let _0x275dee = {
+ fn: "exchangePrize",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/webSign/exchangePrize",
+ json: {
+ para: this.encrypt_para(_0x247865)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x122edb,
+ statusCode: _0x7493f8
+ } = await this.request(_0x275dee),
+ _0x32ecff = _0x49dfef.get(_0x122edb, "resoultCode", _0x7493f8);
+ if (_0x32ecff == 0) {
+ let _0xfbfebb = _0x49dfef.get(_0x122edb?.["prizeDetail"], "code", -1);
+ if (_0xfbfebb == 0) {
+ const _0x51aac0 = {
+ notify: true
+ };
+ this.log("连签" + _0x15d8af + "天抽奖: " + _0x122edb?.["prizeDetail"]?.["biz"]?.["winTitle"], _0x51aac0);
+ } else {
+ let _0x36ea79 = _0x122edb?.["prizeDetail"]?.["err"] || "";
+ const _0x513b8a = {
+ notify: true
+ };
+ this.log("连签" + _0x15d8af + "天抽奖失败[" + _0xfbfebb + "]: " + _0x36ea79, _0x513b8a);
+ }
+ } else {
+ let _0x2f0e88 = _0x122edb?.["msg"] || _0x122edb?.["resoultMsg"] || _0x122edb?.["error"] || "";
+ this.log("连签" + _0x15d8af + "天抽奖错误[" + _0x32ecff + "]: " + _0x2f0e88);
+ }
+ } catch (_0x57662f) {
+ console.log(_0x57662f);
+ }
+ }
+ async homepage(_0x5a7e8f, _0x26d9a1 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x1d3d49 = {
+ phone: this.name,
+ shopId: "20001",
+ type: _0x5a7e8f
+ };
+ let _0x5a9f66 = {
+ fn: "homepage",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/webSign/homepage",
+ json: {
+ para: this.encrypt_para(_0x1d3d49)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x3462ae,
+ statusCode: _0x17c9d0
+ } = await this.request(_0x5a9f66),
+ _0x59fe3c = _0x49dfef.get(_0x3462ae, "resoultCode", _0x17c9d0);
+ if (_0x59fe3c == 0) {
+ let _0x52a59b = _0x49dfef.get(_0x3462ae?.["data"]?.["head"], "code", -1);
+ if (_0x52a59b == 0) {
+ for (let _0x3e6107 of _0x3462ae?.["data"]?.["biz"]?.["adItems"] || []) {
+ if (["0", "1"].includes(_0x3e6107?.["taskState"])) {
+ switch (_0x3e6107.contentOne) {
+ case "3":
+ {
+ if (_0x3e6107?.["rewardId"]) {
+ await this.receiveReward(_0x3e6107);
+ }
+ break;
+ }
+ case "5":
+ {
+ await this.openMsg(_0x3e6107);
+ break;
+ }
+ case "6":
+ {
+ await this.sharingGetGold();
+ break;
+ }
+ case "10":
+ case "13":
+ {
+ if (!this.xtoken) {
+ await this.get_usercode();
+ }
+ this.xtoken && (await this.watchLiveInit());
+ break;
+ }
+ case "18":
+ {
+ await this.polymerize(_0x3e6107);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ let _0xf9bca1 = _0x3462ae?.["data"]?.["head"]?.["err"] || "";
+ this.log("获取任务列表失败[" + _0x52a59b + "]: " + _0xf9bca1);
+ }
+ } else {
+ this.log("获取任务列表错误[" + _0x59fe3c + "]");
+ }
+ } catch (_0x1713d1) {
+ console.log(_0x1713d1);
+ }
+ }
+ async receiveReward(_0x1f06a0, _0x27d046 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x408e82 = _0x1f06a0?.["title"]?.["split"](" ")?.[0];
+ const _0x1205c1 = {
+ phone: this.name,
+ rewardId: _0x1f06a0?.["rewardId"] || ""
+ };
+ let _0x4db2f8 = {
+ fn: "receiveReward",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/receiveReward",
+ json: {
+ para: this.encrypt_para(_0x1205c1)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x514940,
+ statusCode: _0x5641f8
+ } = await this.request(_0x4db2f8),
+ _0x1559d6 = _0x49dfef.get(_0x514940, "resoultCode", _0x5641f8);
+ if (_0x1559d6 == 0) {
+ this.log("领取任务[" + _0x408e82 + "]奖励成功: " + _0x514940?.["resoultMsg"]);
+ } else {
+ let _0xa69dbc = _0x514940?.["msg"] || _0x514940?.["resoultMsg"] || _0x514940?.["error"] || "";
+ this.log("领取任务[" + _0x408e82 + "]奖励错误[" + _0x1559d6 + "]: " + _0xa69dbc);
+ }
+ } catch (_0x2a40e0) {
+ console.log(_0x2a40e0);
+ }
+ }
+ async openMsg(_0x51c539, _0x46c92d = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x4b897b = _0x51c539?.["title"]?.["split"](" ")?.[0];
+ const _0x2aab67 = {
+ phone: this.name
+ };
+ let _0x1c217b = {
+ fn: "openMsg",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/openMsg",
+ json: {
+ para: this.encrypt_para(_0x2aab67)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0xb6f7bf,
+ statusCode: _0x41e108
+ } = await this.request(_0x1c217b),
+ _0x1377ff = _0x49dfef.get(_0xb6f7bf, "resoultCode", _0x41e108);
+ if (_0x1377ff == 0) {
+ this.log("完成任务[" + _0x4b897b + "]成功: " + _0xb6f7bf?.["resoultMsg"]);
+ } else {
+ let _0x59d65d = _0xb6f7bf?.["msg"] || _0xb6f7bf?.["resoultMsg"] || _0xb6f7bf?.["error"] || "";
+ this.log("完成任务[" + _0x4b897b + "]错误[" + _0x1377ff + "]: " + _0x59d65d);
+ }
+ } catch (_0x574cb0) {
+ console.log(_0x574cb0);
+ }
+ }
+ async polymerize(_0x2beade, _0x3610fd = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x27bccc = _0x2beade?.["title"]?.["split"](" ")?.[0];
+ const _0x128b55 = {
+ phone: this.name,
+ jobId: _0x2beade.taskId
+ };
+ let _0x493039 = {
+ fn: "polymerize",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/webSign/polymerize",
+ json: {
+ para: this.encrypt_para(_0x128b55)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x2c3e91,
+ statusCode: _0x3c5244
+ } = await this.request(_0x493039),
+ _0x43d9c9 = _0x49dfef.get(_0x2c3e91, "resoultCode", _0x3c5244);
+
+ if (_0x43d9c9 == 0) {
+ this.log("完成任务[" + _0x27bccc + "]成功: " + _0x2c3e91?.["resoultMsg"]);
+ } else {
+ let _0x402f9a = _0x2c3e91?.["msg"] || _0x2c3e91?.["resoultMsg"] || _0x2c3e91?.["error"] || "";
+
+ // 检查是否是无权限错误
+ if (_0x402f9a.includes("您无此权限")) {
+ this.log("检测到无权限错误,重新获取sign...");
+ await this.get_sign(); // 重新获取sign
+ this.log("重新获取sign成功,继续完成任务...");
+ return this.polymerize(_0x2beade, _0x3610fd); // 重新调用polymerize方法
+ }
+
+ this.log("完成任务[" + _0x27bccc + "]错误[" + _0x43d9c9 + "]: " + _0x402f9a);
+ }
+ } catch (_0xc860ab) {
+ console.log(_0xc860ab);
+ }
+ }
+ async food(_0x7cbaa1, _0x4b0ab1 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x564080 = {
+ phone: this.name
+ };
+ let _0x587fa4 = {
+ fn: "food",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/food",
+ json: {
+ para: this.encrypt_para(_0x564080)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x156b8d,
+ statusCode: _0x191b9d
+ } = await this.request(_0x587fa4),
+ _0x117b58 = _0x49dfef.get(_0x156b8d, "resoultCode", _0x191b9d);
+
+ if (_0x117b58 == 0) {
+ this.log("第" + _0x7cbaa1 + "次喂食: " + (_0x156b8d?.["resoultMsg"] || "成功"));
+ if (_0x156b8d?.["levelUp"]) {
+ let _0x265b8d = _0x156b8d?.["currLevelRightList"][0]?.["level"];
+ const _0x2eec5b = {
+ notify: true
+ };
+ this.log("宠物已升级到[LV." + _0x265b8d + "], 获得: " + _0x156b8d?.["currLevelRightList"][0]?.["righstName"], _0x2eec5b);
+ }
+ } else {
+ let _0x14117b = _0x156b8d?.["msg"] || _0x156b8d?.["resoultMsg"] || _0x156b8d?.["error"] || "";
+
+ // 检查是否是无权限错误
+ if (_0x14117b.includes("您无此权限")) {
+ this.log("检测到无权限错误,重新获取sign...");
+ await this.get_sign(); // 重新获取sign
+ this.log("重新获取sign成功,继续完成任务...");
+ return this.food(_0x7cbaa1, _0x4b0ab1); // 重新调用food方法
+ }
+
+ this.log("第" + _0x7cbaa1 + "次喂食失败[" + _0x117b58 + "]: " + _0x14117b);
+ _0x14117b?.["includes"]("最大喂食次数") && (this.can_feed = false);
+ }
+ } catch (_0x523284) {
+ console.log(_0x523284);
+ }
+ }
+ async getParadiseInfo(_0x4c16d3 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x1138c3 = {
+ phone: this.name
+ };
+ let _0x2d8a6c = {
+ fn: "getParadiseInfo",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/getParadiseInfo",
+ json: {
+ para: this.encrypt_para(_0x1138c3)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ };
+
+ // 第一次请求
+ {
+ const cookies = await this.firstRequest();
+ _0x2d8a6c.headers = {
+ Cookie: cookies,
+ };
+ let {
+ result: _0x13b7df,
+ statusCode: _0x1e6dfd
+ } = await this.request(_0x2d8a6c),
+ _0x54514a = _0x49dfef.get(_0x13b7df, "resoultCode", _0x1e6dfd);
+ if (_0x54514a == 0) {
+ let _0xdb66c = _0x13b7df?.["userInfo"]?.["levelInfoMap"];
+ this.level = _0xdb66c?.["level"];
+ for (let _0x33d3a3 = 1; _0x33d3a3 <= 10 && this.can_feed; _0x33d3a3++) {
+ await this.food(_0x33d3a3);
+ }
+ } else {
+ let _0x4e4dd5 = _0x13b7df?.["msg"] || _0x13b7df?.["resoultMsg"] || _0x13b7df?.["error"] || "";
+ this.log("查询宠物等级失败[" + _0x54514a + "]: " + _0x4e4dd5);
+ return;
+ }
+ }
+
+ // 第二次请求
+ {
+ const cookies = await this.firstRequest();
+ _0x2d8a6c.headers = {
+ Cookie: cookies,
+ };
+ let {
+ result: _0x1334dd,
+ statusCode: _0x363378
+ } = await this.request(_0x2d8a6c),
+ _0xf71230 = _0x49dfef.get(_0x1334dd, "resoultCode", _0x363378);
+ if (_0xf71230 == 0) {
+ let _0x41df23 = _0x1334dd?.["userInfo"]?.["levelInfoMap"];
+ this.level = _0x41df23?.["level"];
+ const _0x268241 = {
+ notify: true
+ };
+ this.log("宠物等级[Lv." + _0x41df23?.["level"] + "], 升级进度: " + _0x41df23?.["growthValue"] + "/" + _0x41df23?.["fullGrowthCoinValue"], _0x268241);
+ } else {
+ let _0x1036a5 = _0x1334dd?.["msg"] || _0x1334dd?.["resoultMsg"] || _0x1334dd?.["error"] || "";
+ this.log("查询宠物等级失败[" + _0xf71230 + "]: " + _0x1036a5);
+ return;
+ }
+ }
+ } catch (_0x94c5b4) {
+ console.log(_0x94c5b4);
+ }
+ }
+ async getLevelRightsList(_0x3ea0a7 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x166dba = {
+ phone: this.name
+ };
+ let _0x5a0971 = {
+ fn: "getLevelRightsList",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/getLevelRightsList",
+ json: {
+ para: this.encrypt_para(_0x166dba)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x4cf13d,
+ statusCode: _0x5e92a4
+ } = await this.request(_0x5a0971);
+ if (_0x4cf13d?.["currentLevel"]) {
+ let _0x3b50bb = _0x4cf13d?.["currentLevel"] || 6,
+ _0x1f1006 = false,
+ _0x53ddf4 = "V" + _0x3b50bb;
+ for (let _0x1ab325 of _0x4cf13d[_0x53ddf4] || []) {
+ let _0x59ef49 = _0x1ab325?.["righstName"] || "";
+ if (this.coin < _0x1ab325.costCoin) {
+ continue;
+ }
+ (_0x59ef49?.["match"](/\d+元话费/) || _0x59ef49?.["match"](/专享\d+金豆/)) && (await this.getConversionRights(_0x1ab325, _0x1f1006)) && (_0x1f1006 = true);
+ }
+ } else {
+ let _0x4ff776 = _0x4cf13d?.["msg"] || _0x4cf13d?.["resoultMsg"] || _0x4cf13d?.["error"] || "";
+ this.log("查询宠物兑换权益失败: " + _0x4ff776);
+ }
+ } catch (_0xcfd2ba) {
+ console.log(_0xcfd2ba);
+ }
+ }
+ async getConversionRights(_0xca19ef, _0x28066a, _0x21f772 = {}) {
+ const cookies = await this.firstRequest();
+ let _0x21db60 = false;
+ try {
+ let _0x5d6f72 = _0xca19ef?.["righstName"] || "";
+ const _0x714d7a = {
+ phone: this.name,
+ rightsId: _0xca19ef.id,
+ receiveCount: _0xca19ef.receiveType
+ };
+ let _0x5ed3b5 = {
+ fn: "getConversionRights",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/getConversionRights",
+ json: {
+ para: this.encrypt_para(_0x714d7a)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x409ea1,
+ statusCode: _0x3fb426
+ } = await this.request(_0x5ed3b5),
+ _0x17b3d0 = _0x49dfef.get(_0x409ea1, "code", _0x49dfef.get(_0x409ea1, "resoultCode", _0x3fb426));
+ if (_0x17b3d0 == 200) {
+ if (!(_0x409ea1?.["rightsStatus"]?.["includes"]("已兑换") || _0x409ea1?.["rightsStatus"]?.["includes"]("已领取"))) {
+ _0x21db60 = true;
+ if (_0x28066a) {
+ await _0x49dfef.wait(3000);
+ }
+ await this.conversionRights(_0xca19ef);
+ }
+ } else {
+ let _0x267dcb = _0x409ea1?.["msg"] || _0x409ea1?.["resoultMsg"] || _0x409ea1?.["error"] || "";
+ this.log("查询权益[" + _0x5d6f72 + "]失败[" + _0x17b3d0 + "]: " + _0x267dcb);
+ }
+ } catch (_0x1c9805) {
+ console.log(_0x1c9805);
+ } finally {
+ return _0x21db60;
+ }
+ }
+ async conversionRights(_0x1258fb, _0x5ee37a = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x285002 = _0x1258fb?.["righstName"] || "";
+ const _0x3ba559 = {
+ phone: this.name,
+ rightsId: _0x1258fb.id
+ };
+ let _0x259df8 = {
+ fn: "conversionRights",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/paradise/conversionRights",
+ json: {
+ para: this.encrypt_para(_0x3ba559)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x24b720,
+ statusCode: _0x2867ce
+ } = await this.request(_0x259df8),
+ _0x1caee2 = _0x49dfef.get(_0x24b720, "resoultCode", _0x2867ce);
+ if (_0x1caee2 == 0) {
+ this.log("兑换权益[" + _0x285002 + "]成功");
+ } else {
+ let _0x58c8d6 = _0x24b720?.["msg"] || _0x24b720?.["resoultMsg"] || _0x24b720?.["error"] || "";
+ this.log("兑换权益[" + _0x285002 + "]失败[" + _0x1caee2 + "]: " + _0x58c8d6);
+ }
+ } catch (_0x2f6eb8) {
+ console.log(_0x2f6eb8);
+ }
+ }
+ async get_usercode(_0x410326 = {}) {
+ try {
+ const _0x4ad8d0 = {
+ fn: "get_usercode",
+ method: "get",
+ url: "https://xbk.189.cn/xbkapi/api/auth/jump",
+ searchParams: {}
+ };
+ _0x4ad8d0.searchParams.userID = this.ticket;
+ _0x4ad8d0.searchParams.version = "9.3.3";
+ _0x4ad8d0.searchParams.type = "room";
+ _0x4ad8d0.searchParams.l = "renwu";
+ let {
+ statusCode: _0x1897af,
+ headers: _0xab67f2
+ } = await this.request(_0x4ad8d0),
+ _0x40ae2f = _0xab67f2?.["location"]?.["match"](/usercode=(\w+)/);
+ _0x40ae2f ? await this.codeToken(_0x40ae2f[1]) : this.log("获取code失败[" + _0x1897af + "]");
+ } catch (_0x3b0319) {
+ console.log(_0x3b0319);
+ }
+ }
+ async codeToken(_0x5551c8, _0x4c3418 = {}) {
+ try {
+ const _0x3ed11c = {
+ usercode: _0x5551c8
+ };
+ const _0x3382ca = {
+ fn: "codeToken",
+ method: "post",
+ url: "https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken",
+ json: _0x3ed11c
+ };
+ let {
+ result: _0x1e1031,
+ statusCode: _0x4829ec
+ } = await this.request(_0x3382ca),
+ _0xb6579f = _0x49dfef.get(_0x1e1031, "code", -1);
+ if (_0xb6579f == 0) {
+ this.xtoken = _0x1e1031?.["data"]?.["token"];
+ this.got = this.got.extend({
+ headers: {
+ Authorization: "Bearer " + _0x5b4189.encrypt(this.xtoken, "base64")
+ }
+ });
+ } else {
+ let _0x2cb0f8 = _0x1e1031?.["msg"] || _0x1e1031?.["resoultMsg"] || _0x1e1031?.["error"] || _0x1e1031?.["msg"] || "";
+ this.log("获取token失败[" + _0xb6579f + "]: " + _0x2cb0f8);
+ }
+ } catch (_0x324945) {
+ console.log(_0x324945);
+ }
+ }
+ async watchLiveInit(_0x410248 = {}) {
+ try {
+ let _0x28a798 = Math.floor(Math.random() * 1000) + 1000;
+ const _0x1e7374 = {
+ period: 1,
+ liveId: _0x28a798
+ };
+ const _0x10ad21 = {
+ fn: "watchLiveInit",
+ method: "post",
+ url: "https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLiveInit",
+ json: _0x1e7374
+ };
+ let {
+ result: _0x15080d,
+ statusCode: _0x39b570
+ } = await this.request(_0x10ad21),
+ _0x488aa2 = _0x49dfef.get(_0x15080d, "code", -1);
+ if (_0x488aa2 == 0) {
+ await _0x49dfef.wait(15000);
+ await this.watchLive(_0x28a798, _0x15080d?.["data"]);
+ } else {
+ let _0x641985 = _0x15080d?.["msg"] || _0x15080d?.["resoultMsg"] || _0x15080d?.["error"] || _0x15080d?.["msg"] || "";
+ this.log("开始观看直播[" + _0x28a798 + "]失败[" + _0x488aa2 + "]: " + _0x641985);
+ }
+ } catch (_0x58939a) {
+ console.log(_0x58939a);
+ }
+ }
+ async watchLive(_0x2df12e, _0x578beb, _0x1de0d1 = {}) {
+ try {
+ const _0xae75fa = {
+ period: 1,
+ liveId: _0x2df12e,
+ key: _0x578beb
+ };
+ const _0x511e74 = {
+ fn: "watchLive",
+ method: "post",
+ url: "https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLive",
+ json: _0xae75fa
+ };
+ let {
+ result: _0x5c4954,
+ statusCode: _0x1ad01d
+ } = await this.request(_0x511e74),
+ _0x4e4cbf = _0x49dfef.get(_0x5c4954, "code", -1);
+ if (_0x4e4cbf == 0) {
+ this.log("观看直播[" + _0x2df12e + "]成功");
+ await this.watchLiveInit();
+ } else {
+ let _0x132d1d = _0x5c4954?.["msg"] || _0x5c4954?.["resoultMsg"] || _0x5c4954?.["error"] || _0x5c4954?.["msg"] || "";
+ this.log("观看直播[" + _0x2df12e + "]失败[" + _0x4e4cbf + "]: " + _0x132d1d);
+ }
+ } catch (_0x32ce3f) {
+ console.log(_0x32ce3f);
+ }
+ }
+ async watchVideo(_0x37b577, _0x3a94a2 = {}) {
+ try {
+ const _0x15cc23 = {
+ articleId: _0x37b577
+ };
+ const _0x61e8d7 = {
+ fn: "watchVideo",
+ method: "post",
+ url: "https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo",
+ json: _0x15cc23
+ };
+ let {
+ result: _0x3d06a2,
+ statusCode: _0xa801d9
+ } = await this.request(_0x61e8d7),
+ _0x33f743 = _0x49dfef.get(_0x3d06a2, "code", -1);
+ if (_0x33f743 == 0) {
+ this.log("观看短视频[" + _0x37b577 + "]成功");
+ } else {
+ let _0x597186 = _0x3d06a2?.["msg"] || _0x3d06a2?.["resoultMsg"] || _0x3d06a2?.["error"] || _0x3d06a2?.["msg"] || "";
+ this.log("观看短视频[" + _0x37b577 + "]失败[" + _0x33f743 + "]: " + _0x597186);
+ }
+ } catch (_0x42a411) {
+ console.log(_0x42a411);
+ }
+ }
+ async like(_0x3605f0, _0x42d468 = {}) {
+ try {
+ const _0x551814 = {
+ account: this.name,
+ liveId: _0x3605f0
+ };
+ const _0x3fd3b3 = {
+ fn: "like",
+ method: "post",
+ url: "https://xbk.189.cn/xbkapi/lteration/room/like",
+ json: _0x551814
+ };
+ let {
+ result: _0x15cd63,
+ statusCode: _0x550c11
+ } = await this.request(_0x3fd3b3),
+ _0x3cb60d = _0x49dfef.get(_0x15cd63, "code", -1);
+ if (_0x3cb60d == 0) {
+ this.log("点赞直播间[" + _0x3605f0 + "]成功");
+ } else {
+ let _0x12573c = _0x15cd63?.["msg"] || _0x15cd63?.["resoultMsg"] || _0x15cd63?.["error"] || _0x15cd63?.["msg"] || "";
+ this.log("点赞直播间[" + _0x3605f0 + "]失败[" + _0x3cb60d + "]: " + _0x12573c);
+ }
+ } catch (_0x33a0d8) {
+ console.log(_0x33a0d8);
+ }
+ }
+ async sharingGetGold(_0x5cc2cd = {}) {
+ try {
+ let _0x5957b6 = {
+ fn: "sharingGetGold",
+ method: "post",
+ url: "https://appfuwu.189.cn:9021/query/sharingGetGold",
+ json: {
+ headerInfos: {
+ code: "sharingGetGold",
+ timestamp: _0x49dfef.time("yyyyMMddhhmmss"),
+ broadAccount: "",
+ broadToken: "",
+ clientType: "#9.6.1#channel50#iPhone 14 Pro Max#",
+ shopId: "20002",
+ source: "110003",
+ sourcePassword: "Sid98s",
+ token: this.token,
+ userLoginName: this.name
+ },
+ content: {
+ attach: "test",
+ fieldData: {
+ shareSource: "3",
+ userId: this.userId,
+ account: this.encode_phone()
+ }
+ }
+ }
+ },
+ {
+ result: _0x36023a,
+ statusCode: _0x5ade7c
+ } = await this.request(_0x5957b6),
+ _0x3bb612 = _0x49dfef.get(_0x36023a?.["responseData"], "resultCode", -1);
+ if (_0x3bb612 == "0000") {
+ this.log("分享成功");
+ } else {
+ let _0x1fc39a = _0x36023a?.["msg"] || _0x36023a?.["responseData"]?.["resultDesc"] || _0x36023a?.["error"] || _0x36023a?.["msg"] || "";
+ this.log("分享失败[" + _0x3bb612 + "]: " + _0x1fc39a);
+ }
+ } catch (_0x221821) {
+ console.log(_0x221821);
+ }
+ }
+ async month_jml_preCost(_0x3e12ef = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x54e4a2 = {
+ fn: "month_jml_preCost",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/short/message/preCost",
+ json: {
+ phone: this.encode_aes(this.name),
+ activityCode: "shortMesssge"
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x19ae9b,
+ statusCode: _0x219a77
+ } = await this.request(_0x54e4a2),
+ _0xb89634 = _0x49dfef.get(_0x19ae9b, "resoultCode", _0x219a77);
+ if (_0xb89634 == 0) {
+ let _0x1709f5 = _0x19ae9b?.["data"]?.["resoultMsg"] || "领取成功";
+ this.jml_tokenFlag = _0x19ae9b?.["resoultMsg"];
+ await this.month_jml_userCost(_0x1709f5);
+ await this.month_jml_receive();
+ await this.month_jml_getCount();
+ await this.month_jml_refresh();
+ } else {
+ let _0x2dde86 = _0x19ae9b?.["msg"] || _0x19ae9b?.["resoultMsg"] || _0x19ae9b?.["error"] || "";
+ this.log("每月见面礼登录失败[" + _0xb89634 + "]: " + _0x2dde86);
+ }
+ } catch (_0xf5ea71) {
+ console.log(_0xf5ea71);
+ }
+ }
+ async month_jml_userCost(_0x5b6d73, _0x434031 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ let _0x223f5d = {
+ fn: "month_jml_userCost",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/short/message/userCost",
+ json: {
+ phone: this.encode_aes(this.name),
+ activityCode: "shortMesssge",
+ flag: this.jml_tokenFlag
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x2add96,
+ statusCode: _0x4c7beb
+ } = await this.request(_0x223f5d),
+ _0x55ebaa = _0x49dfef.get(_0x2add96, "resoultCode", _0x4c7beb);
+ if (_0x55ebaa == 0) {
+ let _0x39f674 = _0x2add96?.["data"]?.["map"](_0x475613 => "[" + _0x475613.pizeName + "]") || [];
+ this.log("见面礼" + _0x5b6d73 + ": " + _0x39f674.join(", "));
+ } else {
+ let _0x1c5716 = _0x2add96?.["msg"] || _0x2add96?.["resoultMsg"] || _0x2add96?.["error"] || "";
+ this.log("领取每月见面礼失败[" + _0x55ebaa + "]: " + _0x1c5716);
+ }
+ } catch (_0x3eb9f8) {
+ console.log(_0x3eb9f8);
+ }
+ }
+ async month_jml_receive(_0x5aaffc = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x1a3146 = {
+ phone: this.name,
+ flag: this.jml_tokenFlag
+ };
+ let _0x4fe3a1 = {
+ fn: "month_jml_receive",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/lottery/receive",
+ json: {
+ para: this.encrypt_para(_0x1a3146)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x16a4a1,
+ statusCode: _0x389615
+ } = await this.request(_0x4fe3a1),
+ _0x4924bc = _0x49dfef.get(_0x16a4a1, "code", -1);
+ if (_0x4924bc == 0) {
+ this.log("领取APP抽奖次数成功");
+ } else {
+ let _0x5ef8a4 = _0x16a4a1?.["msg"] || _0x16a4a1?.["resoultMsg"] || _0x16a4a1?.["error"] || "";
+ this.log("领取APP抽奖次数失败[" + _0x4924bc + "]: " + _0x5ef8a4);
+ }
+ } catch (_0x209a71) {
+ console.log(_0x209a71);
+ }
+ }
+ async month_jml_getCount(_0x1eebce = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x3d70a3 = {
+ phone: this.name,
+ flag: this.jml_tokenFlag
+ };
+ let _0x1d2de9 = {
+ fn: "month_jml_getCount",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/lottery/getCount",
+ json: {
+ para: this.encrypt_para(_0x3d70a3)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0xf1b29a,
+ statusCode: _0x4204df
+ } = await this.request(_0x1d2de9),
+ _0x4704a8 = _0x49dfef.get(_0xf1b29a, "code", -1);
+ if (_0x4704a8 == 0) {
+ let _0x141535 = _0xf1b29a?.["video"]?.["map"](_0x33886d => _0x33886d.videoType) || [],
+ _0x2fb772 = _0x131d2d.filter(_0x5bb71b => !_0x141535.includes(_0x5bb71b)),
+ _0x22a4b1 = false;
+ for (let _0x38b1de of _0x2fb772) {
+ if (_0x22a4b1) {
+ let _0x296e0d = Math.floor(Math.random() * 5000) + 3000;
+ await _0x49dfef.wait(_0x296e0d);
+ }
+ await this.month_jml_addVideoCount(_0x38b1de);
+ _0x22a4b1 = true;
+ }
+ } else {
+ let _0x330a5e = _0xf1b29a?.["msg"] || _0xf1b29a?.["resoultMsg"] || _0xf1b29a?.["error"] || "";
+ this.log("查询看视频得抽奖机会次数失败[" + _0x4704a8 + "]: " + _0x330a5e);
+ }
+ } catch (_0x1c46ec) {
+ console.log(_0x1c46ec);
+ }
+ }
+ async month_jml_addVideoCount(_0x10070c, _0x588069 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x723a = {
+ phone: this.name,
+ videoType: _0x10070c,
+ flag: this.jml_tokenFlag
+ };
+ let _0x2b00ee = {
+ fn: "month_jml_addVideoCount",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/lottery/addVideoCount",
+ json: {
+ para: this.encrypt_para(_0x723a)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x8dff4,
+ statusCode: _0x6fd216
+ } = await this.request(_0x2b00ee),
+ _0x3f6886 = _0x49dfef.get(_0x8dff4, "code", -1);
+ if (_0x3f6886 == 0) {
+ this.log("看视频[" + _0x10070c + "]得抽奖机会成功");
+ } else {
+ let _0x238dbf = _0x8dff4?.["msg"] || _0x8dff4?.["resoultMsg"] || _0x8dff4?.["error"] || "";
+ this.log("看视频[" + _0x10070c + "]得抽奖机会失败[" + _0x3f6886 + "]: " + _0x238dbf);
+ }
+ } catch (_0x2d129d) {
+ console.log(_0x2d129d);
+ }
+ }
+ async month_jml_refresh(_0xcca85f = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x551b86 = {
+ phone: this.name,
+ flag: this.jml_tokenFlag
+ };
+ let _0x5ab84e = {
+ fn: "month_jml_refresh",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/lottery/refresh",
+ json: {
+ para: this.encrypt_para(_0x551b86)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x764f77,
+ statusCode: _0x2cc71c
+ } = await this.request(_0x5ab84e),
+ _0x5ecd1e = _0x49dfef.get(_0x764f77, "code", -1);
+ if (_0x5ecd1e == -1) {
+ let _0x58362e = _0x764f77?.["rNumber"] || 0;
+ this.log("可以抽奖" + _0x58362e + "次");
+ let _0x31275f = false;
+ while (_0x58362e-- > 0) {
+ if (_0x31275f) {
+ let _0x33dd5d = Math.floor(Math.random() * 5000) + 3000;
+ await _0x49dfef.wait(_0x33dd5d);
+ }
+ await this.month_jml_lotteryRevice();
+ _0x31275f = true;
+ }
+ } else {
+ let _0x15024f = _0x764f77?.["msg"] || _0x764f77?.["resoultMsg"] || _0x764f77?.["error"] || "";
+ this.log("查询抽奖次数失败[" + _0x5ecd1e + "]: " + _0x15024f);
+ }
+ } catch (_0x14d546) {
+ console.log(_0x14d546);
+ }
+ }
+ async month_jml_lotteryRevice(_0x5bf2d6 = {}) {
+ const cookies = await this.firstRequest();
+ try {
+ const _0x786d14 = {
+ phone: this.name,
+ flag: this.jml_tokenFlag
+ };
+ let _0x57d2e2 = {
+ fn: "month_jml_lotteryRevice",
+ method: "post",
+ url: "https://wapside.189.cn:9001/jt-sign/lottery/lotteryRevice",
+ json: {
+ para: this.encrypt_para(_0x786d14)
+ },
+ headers: {
+ Cookie: cookies,
+ }
+ },
+ {
+ result: _0x361574,
+ statusCode: _0x1225b9
+ } = await this.request(_0x57d2e2),
+ _0x4ec03c = _0x49dfef.get(_0x361574, "code", -1);
+ if (_0x4ec03c == 0) {
+ let {
+ rname: _0x232c3b,
+ id: _0x23684c
+ } = _0x361574;
+ const _0x16b601 = {
+ notify: true
+ };
+ this.log("每月见面礼抽奖: " + _0x232c3b, _0x16b601);
+ } else {
+ let _0x97a723 = _0x361574?.["msg"] || _0x361574?.["resoultMsg"] || _0x361574?.["error"] || "";
+ this.log("每月见面礼抽奖失败[" + _0x4ec03c + "]: " + _0x97a723);
+ }
+ } catch (_0x3b1aef) {
+ console.log(_0x3b1aef);
+ }
+ }
+ async rpc_request(_0x390ce7, _0x48b512 = "get", _0x46e01b = null) {
+ const _0x433f30 = new Error(),
+ _0xafbbac = _0x433f30.stack,
+ _0x27601e = _0xafbbac.split("\n"),
+ _0x17aebc = _0x27601e?.[2]?.["match"](/UserClass\.(\w+)/)?.[1] || "rpc";
+ let _0x50ab7c = {
+ fn: _0x17aebc,
+ method: "post",
+ url: _0x16d3ea,
+ json: {
+ key: _0x344953,
+ method: _0x48b512,
+ url: _0x390ce7.toString(),
+ headers: this.get_mall_headers(),
+ data: JSON.stringify(_0x46e01b)
+ }
+ };
+ return await this.request(_0x50ab7c);
+ }
+ async auth_login(_0x16dd5f = {}) {
+ let _0x4b632d = false;
+ try {
+ let _0x59ca25 = this.ticket,
+ _0xa64474 = new URL("https://wapact.189.cn:9001/unified/user/login"),
+ _0x28641d = {
+ ticket: _0x59ca25,
+ backUrl: encodeURIComponent("https://wapact.189.cn:9001/JinDouMall/JinDouMall_luckDraw.html?ticket=" + _0x59ca25),
+ platformCode: "P201010301",
+ loginType: 2
+ },
+ {
+ result: _0x16b3c5,
+ statusCode: _0x3b6fb9
+ } = await this.rpc_request(_0xa64474, "POST", _0x28641d),
+ _0x25f5c8 = _0x49dfef.get(_0x16b3c5, "code", _0x3b6fb9);
+ if (_0x25f5c8 == 0) {
+ let {
+ token: _0x202a28,
+ sessionId: _0x274600
+ } = _0x16b3c5?.["biz"];
+ this.mall_token = _0x202a28;
+ _0x4b632d = true;
+ } else {
+ let _0x1c4e69 = _0x49dfef.get(_0x16b3c5, "message", "");
+ this.log("商城登录失败[" + _0x25f5c8 + "]: " + _0x1c4e69);
+ }
+ } catch (_0x3b74e2) {
+ console.log(_0x3b74e2);
+ } finally {
+ return _0x4b632d;
+ }
+ }
+ async queryInfo(_0x3da8a0 = {}) {
+ try {
+ let _0xc5f478 = new URL("https://wapact.189.cn:9001/gateway/golden/api/queryInfo");
+ _0xc5f478.searchParams.append("_", Date.now().toString());
+ let {
+ result: _0x3bab08,
+ statusCode: _0x42dda4
+ } = await this.rpc_request(_0xc5f478),
+ _0x69d0a7 = _0x49dfef.get(_0x3bab08, "code", _0x42dda4);
+ if (_0x69d0a7 == 0) {
+ this.coin = _0x3bab08?.["biz"]?.["amountTotal"] || this.coin;
+ await this.queryTurnTable();
+ } else {
+ let _0x401a81 = _0x49dfef.get(_0x3bab08, "message", "");
+ this.log("查询商城状态失败[" + _0x69d0a7 + "]: " + _0x401a81);
+ }
+ } catch (_0xd507ac) {
+ console.log(_0xd507ac);
+ }
+ }
+ async queryTurnTable(_0x12dce0 = {}) {
+ try {
+ let _0x5dccd4 = new URL("https://wapact.189.cn:9001/gateway/golden/api/queryTurnTable");
+ _0x5dccd4.searchParams.append("userType", "1");
+ _0x5dccd4.searchParams.append("_", Date.now().toString());
+ let {
+ result: _0x2ad2d5,
+ statusCode: _0x5a8d92
+ } = await this.rpc_request(_0x5dccd4),
+ _0x2b1c98 = _0x49dfef.get(_0x2ad2d5, "code", _0x5a8d92);
+ if (_0x2b1c98 == 0) {
+ let _0x2b2dfc = _0x2ad2d5?.["biz"]?.["xiaoHaoCount"] || 20,
+ _0x15becc = _0x2ad2d5?.["biz"]?.["wzTurntable"]?.["code"] || "";
+ _0x15becc ? await this.lottery_check(_0x15becc, _0x2b2dfc) : this.log("没有获取到转盘抽奖ID");
+ } else {
+ let _0x96a1c8 = _0x49dfef.get(_0x2ad2d5, "message", "");
+ this.log("获取转盘抽奖活动失败[" + _0x2b1c98 + "]: " + _0x96a1c8);
+ }
+ } catch (_0x3408eb) {
+ console.log(_0x3408eb);
+ }
+ }
+ async lottery_check(_0x217d19, _0x372f7b, _0x4f6c97 = {}) {
+ try {
+ let _0xa49a58 = new URL("https://wapact.189.cn:9001/gateway/stand/detail/check");
+ _0xa49a58.searchParams.append("activityId", _0x217d19);
+ _0xa49a58.searchParams.append("_", Date.now().toString());
+ let {
+ result: _0x2d69c8,
+ statusCode: _0x242328
+ } = await this.rpc_request(_0xa49a58),
+ _0x2cccad = _0x49dfef.get(_0x2d69c8, "code", _0x242328);
+ if (_0x2cccad == 0) {
+ let _0x157881 = _0x2d69c8?.["biz"]?.["resultInfo"]?.["chanceCount"] || 0;
+ this.log("转盘可以抽奖" + _0x157881 + "次, 消耗金豆" + _0x372f7b + "/" + this.coin);
+ let _0x30a5ac = false;
+ while (_0x157881-- > 0 && this.coin >= _0x372f7b) {
+ if (_0x30a5ac) {
+ await _0x49dfef.wait(3000);
+ }
+ _0x30a5ac = true;
+ await this.lottery_do(_0x217d19, _0x372f7b);
+ }
+ } else {
+ let _0x3cd934 = _0x49dfef.get(_0x2d69c8, "message", "");
+ this.log("查询转盘抽奖次数失败[" + _0x2cccad + "]: " + _0x3cd934);
+ }
+ } catch (_0x957f54) {
+ console.log(_0x957f54);
+ }
+ }
+ async lottery_do(_0x5149a7, _0xc5a8fd = {}) {
+ try {
+ let _0x1794f8 = new URL("https://wapact.189.cn:9001/gateway/golden/api/lottery");
+ const _0x5e6ddf = {
+ activityId: _0x5149a7
+ };
+ let {
+ result: _0x50d02f,
+ statusCode: _0x69dd47
+ } = await this.rpc_request(_0x1794f8, "POST", _0x5e6ddf),
+ _0x301247 = _0x49dfef.get(_0x50d02f, "code", _0x69dd47);
+ if (_0x301247 == 0) {
+ this.coin = _0x50d02f?.["biz"]?.["amountTotal"] || this.coin - xiaoHaoCount;
+ let _0x3d75c1 = _0x50d02f?.["biz"]?.["resultCode"],
+ _0x2f6e42 = "";
+ switch (_0x3d75c1) {
+ case "0":
+ {
+ let _0x420d18 = _0x50d02f?.["biz"]?.["resultInfo"]?.["winTitle"] || "空气";
+ const _0x580cdf = {
+ notify: true
+ };
+ this.log("转盘抽奖: " + _0x420d18, _0x580cdf);
+ return;
+ }
+ case "412":
+ {
+ _0x2f6e42 = "抽奖次数已达上限";
+ break;
+ }
+ case "413":
+ case "420":
+ {
+ _0x2f6e42 = "金豆不足";
+ break;
+ }
+ default:
+ {
+ this.log(": " + JSON.stringify(_0x50d02f));
+ _0x2f6e42 = "未知原因";
+ break;
+ }
+ }
+ this.log("转盘抽奖失败[" + _0x3d75c1 + "]: " + _0x2f6e42);
+ } else {
+ let _0x1e463b = _0x49dfef.get(_0x50d02f, "message", "");
+ this.log("转盘抽奖错误[" + _0x301247 + "]: " + _0x1e463b);
+ }
+ } catch (_0x3f560e) {
+ console.log(_0x3f560e);
+ }
+ }
+async userTask() {
+ // 创建日志数组来存储该账号的所有日志
+ this.logs = [];
+
+ // 添加账号分隔行
+ this.logs.push("\n======== 账号[" + this.index + "] 日志 ========");
+
+ // 修改原有的log方法,改为存储日志
+ this.log = (msg, options = {}) => {
+ // 获取当前时间
+ const now = new Date();
+ const hours = String(now.getHours()).padStart(2, '0');
+ const minutes = String(now.getMinutes()).padStart(2, '0');
+ const seconds = String(now.getSeconds()).padStart(2, '0');
+ const timestamp = `${hours}:${minutes}:${seconds}`;
+
+ const logMsg = `账号[${this.index}] ${msg}`;
+
+ // 存储日志
+ this.logs.push(logMsg);
+
+ // 实时显示日志
+ console.log(logMsg);
+
+ // 如果需要通知,则添加到通知字符串
+ if(options.notify) {
+ _0x49dfef.notifyStr.push(logMsg);
+ }
+ }
+ const _0x4d55e5 = {
+ notify: true
+ };
+ _0x49dfef.log("\n======= 账号[" + this.index + "][" + this.name + "] =======", _0x4d55e5);
+
+ if (!this.load_token() && !(await this.login())) {
+ return;
+ }
+ if (!(await this.get_ticket())) {
+ return;
+ }
+ if (!(await this.get_sign())) {
+ return;
+ }
+ await this.userCoinInfo();
+ await this.getLevelRightsList();
+ await this.month_jml_preCost();
+ await this.userStatusInfo();
+ await this.continueSignRecords();
+ await this.homepage("hg_qd_zrwzjd");
+ await this.getParadiseInfo();
+ if (_0x16d3ea) {
+ await this.userLotteryTask();
+ }
+ await this.userCoinInfo(true);
+
+ // 添加分隔行
+ this.logs.push("========== 账号[" + this.index + "] 日志结束 ==========\n");
+
+ // 标记任务已完成
+ this.taskCompleted = true;
+ }
+ async userLotteryTask() {
+ if (!(await this.auth_login())) {
+ return;
+ }
+ await this.queryInfo();
+ }
+}
+!(async () => {
+ if (!(await _0x1a2249())) {
+ return;
+ }
+ _0x49dfef.read_env(_0x3f433d);
+ _0xa0ff1b();
+
+for (let user of _0x49dfef.userList) {
+ await user.userTask();
+}
+
+ await _0x49dfef.showmsg();
+
+ let endTime = Date.now(),
+ duration = (endTime - _0x49dfef.startTime) / 1000;
+ console.log(`\n[${_0x49dfef.name}]运行结束,共运行了${duration}秒`);
+
+ process.exit(0);
+})().catch(e => console.log(e)).finally(() => _0x49dfef.exitNow());
+
+async function _0x1a2249(_0x5dcebe = 0) {
+ let _0x40b7b = [];
+ try {
+ const _0x14929e = {
+ fn: "auth",
+ method: "get",
+ url: _0x100b57,
+ timeout: 20000
+ };
+ let {
+ statusCode: _0xbb1bc5,
+ result: _0x508782
+ } = await _0x3b1630.request(_0x14929e);
+ if (_0xbb1bc5 != 200) {
+ _0x5dcebe++ < _0x3c685e && (_0x40b7b = await _0x1a2249(_0x5dcebe));
+ return _0x40b7b;
+ }
+ if (_0x508782?.["code"] == 0) {
+ _0x508782 = JSON.parse(_0x508782.data.file.data);
+ if (_0x508782?.["commonNotify"] && _0x508782.commonNotify.length > 0) {
+ const _0x1a6c76 = {
+ notify: true
+ };
+ _0x49dfef.log(_0x508782.commonNotify.join("\n") + "\n", _0x1a6c76);
+ }
+ _0x508782?.["commonMsg"] && _0x508782.commonMsg.length > 0 && _0x49dfef.log(_0x508782.commonMsg.join("\n") + "\n");
+ if (_0x508782[_0x14f289]) {
+ let _0x145844 = _0x508782[_0x14f289];
+ _0x145844.status == 0 ? _0xf4231c >= _0x145844.version ? (_0x40b7b = [], _0x49dfef.log(_0x145844.msg[_0x145844.status]), _0x49dfef.log(_0x145844.updateMsg), _0x49dfef.log("现在运行的脚本版本是:" + _0xf4231c + ",最新脚本版本:" + _0x145844.latestVersion)) : _0x49dfef.log(_0x145844.versionMsg) : _0x49dfef.log(_0x145844.msg[_0x145844.status]);
+ } else {
+ _0x49dfef.log(_0x508782.errorMsg);
+ }
+ } else {
+ _0x5dcebe++ < _0x3c685e && (_0x40b7b = await _0x1a2249(_0x5dcebe));
+ }
+ } catch (_0x458d78) {
+ _0x49dfef.log(_0x458d78);
+ } finally {
+ return _0x40b7b;
+ }
+}
+function _0x5370a4(_0x24412c) {
+ return new class {
+ constructor(_0x198bc4) {
+ this.name = _0x198bc4;
+ this.startTime = Date.now();
+ const _0x555858 = {
+ time: true
+ };
+ this.log("[" + this.name + "]开始运行\n", _0x555858);
+ this.notifyStr = [];
+ this.notifyFlag = true;
+ this.userIdx = 0;
+ this.userList = [];
+ this.userCount = 0;
+ this.default_timestamp_len = 13;
+ this.default_wait_interval = 1000;
+ this.default_wait_limit = 3600000;
+ this.default_wait_ahead = 0;
+ }
+ log(_0x25f67c, _0x45847d = {}) {
+ const _0x82b0fc = {
+ console: true
+ };
+ Object.assign(_0x82b0fc, _0x45847d);
+ if (_0x82b0fc.time) {
+ let _0x58f096 = _0x82b0fc.fmt || "hh:mm:ss";
+ _0x25f67c = "[" + this.time(_0x58f096) + "]" + _0x25f67c;
+ }
+ if (_0x82b0fc.notify) {
+ this.notifyStr.push(_0x25f67c);
+ }
+ if (_0x82b0fc.console) {
+ console.log(_0x25f67c);
+ }
+ }
+ get(_0x2ecf4d, _0x5800fb, _0x1ff76e = "") {
+ let _0x5a663b = _0x1ff76e;
+ _0x2ecf4d?.["hasOwnProperty"](_0x5800fb) && (_0x5a663b = _0x2ecf4d[_0x5800fb]);
+ return _0x5a663b;
+ }
+ pop(_0x2ae8ec, _0xbb54f6, _0x9c8563 = "") {
+ let _0x213044 = _0x9c8563;
+ _0x2ae8ec?.["hasOwnProperty"](_0xbb54f6) && (_0x213044 = _0x2ae8ec[_0xbb54f6], delete _0x2ae8ec[_0xbb54f6]);
+ return _0x213044;
+ }
+ copy(_0x1fbe5b) {
+ return Object.assign({}, _0x1fbe5b);
+ }
+ read_env(_0x412e83) {
+ let _0x1267c5 = _0x4aec53.map(_0x166c56 => process.env[_0x166c56]);
+ for (let _0x2b0da2 of _0x1267c5.filter(_0x22b120 => !!_0x22b120)) {
+ for (let _0x4465a3 of _0x2b0da2.split(_0x1876a7).filter(_0x3c7dca => !!_0x3c7dca)) {
+ if (this.userList.includes(_0x4465a3)) {
+ continue;
+ }
+ this.userList.push(new _0x412e83(_0x4465a3));
+ }
+ }
+ this.userCount = this.userList.length;
+ if (!this.userCount) {
+ const _0x3d5d5 = {
+ notify: true
+ };
+ this.log("未找到变量,请检查变量" + _0x4aec53.map(_0x56423f => "[" + _0x56423f + "]").join("或"), _0x3d5d5);
+ return false;
+ }
+ this.log("共找到" + this.userCount + "个账号");
+ return true;
+ }
+ time(_0x43e381, _0x1822e0 = null) {
+ let _0x1de2f7 = _0x1822e0 ? new Date(_0x1822e0) : new Date(),
+ _0x180e96 = {
+ "M+": _0x1de2f7.getMonth() + 1,
+ "d+": _0x1de2f7.getDate(),
+ "h+": _0x1de2f7.getHours(),
+ "m+": _0x1de2f7.getMinutes(),
+ "s+": _0x1de2f7.getSeconds(),
+ "q+": Math.floor((_0x1de2f7.getMonth() + 3) / 3),
+ S: this.padStr(_0x1de2f7.getMilliseconds(), 3)
+ };
+ /(y+)/.test(_0x43e381) && (_0x43e381 = _0x43e381.replace(RegExp.$1, (_0x1de2f7.getFullYear() + "").substr(4 - RegExp.$1.length)));
+ for (let _0x2cfbd9 in _0x180e96) new RegExp("(" + _0x2cfbd9 + ")").test(_0x43e381) && (_0x43e381 = _0x43e381.replace(RegExp.$1, 1 == RegExp.$1.length ? _0x180e96[_0x2cfbd9] : ("00" + _0x180e96[_0x2cfbd9]).substr(("" + _0x180e96[_0x2cfbd9]).length)));
+ return _0x43e381;
+ }
+ async showmsg() {
+ if (!this.notifyFlag) {
+ return;
+ }
+ if (!this.notifyStr.length) {
+ return;
+ }
+ var _0x2264e = require("./sendNotify");
+ this.log("\n============== 推送 ==============");
+ await _0x2264e.sendNotify(this.name, this.notifyStr.join("\n"));
+ }
+ padStr(_0x397014, _0x4fcca2, _0x1abd3c = {}) {
+ let _0x10354b = _0x1abd3c.padding || "0",
+ _0x39ed4e = _0x1abd3c.mode || "l",
+ _0x3b33af = String(_0x397014),
+ _0x26e87b = _0x4fcca2 > _0x3b33af.length ? _0x4fcca2 - _0x3b33af.length : 0,
+ _0x3bb60f = "";
+ for (let _0x30ac41 = 0; _0x30ac41 < _0x26e87b; _0x30ac41++) {
+ _0x3bb60f += _0x10354b;
+ }
+ _0x39ed4e == "r" ? _0x3b33af = _0x3b33af + _0x3bb60f : _0x3b33af = _0x3bb60f + _0x3b33af;
+ return _0x3b33af;
+ }
+ json2str(_0x123637, _0x402c90, _0x46e6c5 = false) {
+ let _0x75d972 = [];
+ for (let _0x2a0f42 of Object.keys(_0x123637).sort()) {
+ let _0x2bc1ca = _0x123637[_0x2a0f42];
+ if (_0x2bc1ca && _0x46e6c5) {
+ _0x2bc1ca = encodeURIComponent(_0x2bc1ca);
+ }
+ _0x75d972.push(_0x2a0f42 + "=" + _0x2bc1ca);
+ }
+ return _0x75d972.join(_0x402c90);
+ }
+ str2json(_0x32e5fc, _0x43a064 = false) {
+ let _0x4cd4ad = {};
+ for (let _0x520529 of _0x32e5fc.split("&")) {
+ if (!_0x520529) {
+ continue;
+ }
+ let _0x1dc4e6 = _0x520529.indexOf("=");
+ if (_0x1dc4e6 == -1) {
+ continue;
+ }
+ let _0x4998d0 = _0x520529.substr(0, _0x1dc4e6),
+ _0x3ac012 = _0x520529.substr(_0x1dc4e6 + 1);
+ if (_0x43a064) {
+ _0x3ac012 = decodeURIComponent(_0x3ac012);
+ }
+ _0x4cd4ad[_0x4998d0] = _0x3ac012;
+ }
+ return _0x4cd4ad;
+ }
+ randomPattern(_0x369f7e, _0x4006d8 = "abcdef0123456789") {
+ let _0x3140cf = "";
+ for (let _0x8e9314 of _0x369f7e) {
+ if (_0x8e9314 == "x") {
+ _0x3140cf += _0x4006d8.charAt(Math.floor(Math.random() * _0x4006d8.length));
+ } else {
+ _0x8e9314 == "X" ? _0x3140cf += _0x4006d8.charAt(Math.floor(Math.random() * _0x4006d8.length)).toUpperCase() : _0x3140cf += _0x8e9314;
+ }
+ }
+ return _0x3140cf;
+ }
+ randomUuid() {
+ return this.randomPattern("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx");
+ }
+ randomString(_0x33254d, _0x5f4306 = "abcdef0123456789") {
+ let _0x440af6 = "";
+ for (let _0x475f61 = 0; _0x475f61 < _0x33254d; _0x475f61++) {
+ _0x440af6 += _0x5f4306.charAt(Math.floor(Math.random() * _0x5f4306.length));
+ }
+ return _0x440af6;
+ }
+ randomList(_0x4242c3) {
+ let _0x35c76e = Math.floor(Math.random() * _0x4242c3.length);
+ return _0x4242c3[_0x35c76e];
+ }
+ wait(_0x1dc9b5) {
+ return new Promise(_0x54d822 => setTimeout(_0x54d822, _0x1dc9b5));
+ }
+ async exitNow() {
+ await this.showmsg();
+ let _0x4210ea = Date.now(),
+ _0x52abd1 = (_0x4210ea - this.startTime) / 1000;
+ this.log("");
+ const _0x4bb8d6 = {
+ time: true
+ };
+ this.log("[" + this.name + "]运行结束,共运行了" + _0x52abd1 + "秒", _0x4bb8d6);
+ process.exit(0);
+ }
+ normalize_time(_0x2e4fd9, _0x6f3e21 = {}) {
+ let _0x2a3018 = _0x6f3e21.len || this.default_timestamp_len;
+ _0x2e4fd9 = _0x2e4fd9.toString();
+ let _0x54eeae = _0x2e4fd9.length;
+ while (_0x54eeae < _0x2a3018) {
+ _0x2e4fd9 += "0";
+ }
+ _0x54eeae > _0x2a3018 && (_0x2e4fd9 = _0x2e4fd9.slice(0, 13));
+ return parseInt(_0x2e4fd9);
+ }
+ async wait_until(_0x3145a4, _0x3938d8 = {}) {
+ let _0x155654 = _0x3938d8.logger || this,
+ _0x808a8f = _0x3938d8.interval || this.default_wait_interval,
+ _0x1929a1 = _0x3938d8.limit || this.default_wait_limit,
+ _0x4fa992 = _0x3938d8.ahead || this.default_wait_ahead;
+ if (typeof _0x3145a4 == "string" && _0x3145a4.includes(":")) {
+ if (_0x3145a4.includes("-")) {
+ _0x3145a4 = new Date(_0x3145a4).getTime();
+ } else {
+ let _0xbcf425 = this.time("yyyy-MM-dd ");
+ _0x3145a4 = new Date(_0xbcf425 + _0x3145a4).getTime();
+ }
+ }
+ let _0x44ad11 = this.normalize_time(_0x3145a4) - _0x4fa992,
+ _0x213d55 = this.time("hh:mm:ss.S", _0x44ad11),
+ _0x64f4d7 = Date.now();
+ _0x64f4d7 > _0x44ad11 && (_0x44ad11 += 86400000);
+ let _0x539462 = _0x44ad11 - _0x64f4d7;
+ if (_0x539462 > _0x1929a1) {
+ const _0x533822 = {
+ time: true
+ };
+ _0x155654.log("离目标时间[" + _0x213d55 + "]大于" + _0x1929a1 / 1000 + "秒,不等待", _0x533822);
+ } else {
+ const _0x436e20 = {
+ time: true
+ };
+ _0x155654.log("离目标时间[" + _0x213d55 + "]还有" + _0x539462 / 1000 + "秒,开始等待", _0x436e20);
+ while (_0x539462 > 0) {
+ let _0x5a2288 = Math.min(_0x539462, _0x808a8f);
+ await this.wait(_0x5a2288);
+ _0x64f4d7 = Date.now();
+ _0x539462 = _0x44ad11 - _0x64f4d7;
+ }
+ const _0x179ceb = {
+ time: true
+ };
+ _0x155654.log("已完成等待", _0x179ceb);
+ }
+ }
+ async wait_gap_interval(_0x5caf3a, _0x373b08) {
+ let _0x5561b7 = Date.now() - _0x5caf3a;
+ _0x5561b7 < _0x373b08 && (await this.wait(_0x373b08 - _0x5561b7));
+ }
+ }(_0x24412c);
+}
\ No newline at end of file
diff --git a/电信金豆换话费.py b/电信金豆换话费.py
new file mode 100644
index 0000000..cdb1fdb
--- /dev/null
+++ b/电信金豆换话费.py
@@ -0,0 +1,511 @@
+#TL库:https://github.com/3288588344/toulu.git
+#tg频道:https://t.me/TLtoulu
+#QQ频道:https://pd.qq.com/s/672fku8ge
+#微信机器人:kckl6688
+#公众号:哆啦A梦的藏宝箱
+
+import requests
+import re
+import time
+import json
+import random
+import datetime
+import base64
+import threading
+import ssl
+import execjs
+import os
+import sys
+
+from bs4 import BeautifulSoup
+
+from Crypto.PublicKey import RSA
+from Crypto.Cipher import PKCS1_v1_5
+from Crypto.Cipher import DES3
+from Crypto.Util.Padding import pad, unpad
+from Crypto.Util.strxor import strxor
+from Crypto.Cipher import AES
+from http import cookiejar # Python 2: import cookielib as cookiejar
+from requests.adapters import HTTPAdapter
+from requests.packages.urllib3.util.ssl_ import create_urllib3_context
+
+
+class BlockAll(cookiejar.CookiePolicy):
+ return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False
+ netscape = True
+ rfc2965 = hide_cookie2 = False
+
+def printn(m):
+ print(f'\n{m}')
+ORIGIN_CIPHERS = ('DEFAULT@SECLEVEL=1')
+
+ip_list = []
+class DESAdapter(HTTPAdapter):
+ def __init__(self, *args, **kwargs):
+ """
+ A TransportAdapter that re-enables 3DES support in Requests.
+ """
+ CIPHERS = ORIGIN_CIPHERS.split(':')
+ random.shuffle(CIPHERS)
+ CIPHERS = ':'.join(CIPHERS)
+ self.CIPHERS = CIPHERS + ':!aNULL:!eNULL:!MD5'
+ super().__init__(*args, **kwargs)
+
+ def init_poolmanager(self, *args, **kwargs):
+ context = create_urllib3_context(ciphers=self.CIPHERS)
+ kwargs['ssl_context'] = context
+ return super(DESAdapter, self).init_poolmanager(*args, **kwargs)
+
+ def proxy_manager_for(self, *args, **kwargs):
+ context = create_urllib3_context(ciphers=self.CIPHERS)
+ kwargs['ssl_context'] = context
+ return super(DESAdapter, self).proxy_manager_for(*args, **kwargs)
+
+
+requests.packages.urllib3.disable_warnings()
+ssl_context = ssl.create_default_context()
+ssl_context.check_hostname = False
+ssl_context.verify_mode = ssl.CERT_NONE
+ssl_context.set_ciphers('DEFAULT@SECLEVEL=0')
+ss = requests.session()
+ss.ssl=ssl_context
+ss.headers={"User-Agent":"Mozilla/5.0 (Linux; Android 13; 22081212C Build/TKQ1.220829.002) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.97 Mobile Safari/537.36","Referer":"https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html"}
+ss.mount('https://', DESAdapter())
+yc = 0.1
+wt = 0
+kswt = -3
+yf = datetime.datetime.now().strftime("%Y%m")
+
+
+jp = {"9":{},"12":{},"13":{},"23":{}}
+
+
+try:
+ with open('电信金豆换话费.log') as fr:
+ dhjl = json.load(fr)
+except:
+ dhjl = {}
+if yf not in dhjl:
+ dhjl[yf] = {}
+
+
+
+
+wxp={}
+errcode = {
+ "0":"兑换成功",
+ "412":"兑换次数已达上限",
+ "413":"商品已兑完",
+ "420":"未知错误",
+ "410":"该活动已失效~",
+ "Y0001":"当前等级不足,去升级兑当前话费",
+ "Y0002":"使用翼相连网络600分钟或连接并拓展网络500分钟可兑换此奖品",
+ "Y0003":"使用翼相连共享流量400M或共享WIFI:2GB可兑换此奖品",
+ "Y0004":"使用翼相连共享流量2GB可兑换此奖品",
+ "Y0005":"当前等级不足,去升级兑当前话费",
+ "E0001":"您的网龄不足10年,暂不能兑换"
+}
+
+
+
+
+
+
+
+
+
+
+#加密参数
+key = b'1234567`90koiuyhgtfrdews'
+iv = 8 * b'\0'
+
+public_key_b64 = '''-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBkLT15ThVgz6/NOl6s8GNPofdWzWbCkWnkaAm7O2LjkM1H7dMvzkiqdxU02jamGRHLX/ZNMCXHnPcW/sDhiFCBN18qFvy8g6VYb9QtroI09e176s+ZCtiv7hbin2cCTj99iUpnEloZm19lwHyo69u5UMiPMpq0/XKBO8lYhN/gwIDAQAB
+-----END PUBLIC KEY-----'''
+
+public_key_data = '''-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ugG5A8cZ3FqUKDwM57GM4io6JGcStivT8UdGt67PEOihLZTw3P7371+N47PrmsCpnTRzbTgcupKtUv8ImZalYk65dU8rjC/ridwhw9ffW2LBwvkEnDkkKKRi2liWIItDftJVBiWOh17o6gfbPoNrWORcAdcbpk2L+udld5kZNwIDAQAB
+-----END PUBLIC KEY-----'''
+
+
+def t(h):
+ date = datetime.datetime.now()
+ date_zero = datetime.datetime.now().replace(year=date.year, month=date.month, day=date.day, hour=h, minute=59, second=59)
+ date_zero_time = int(time.mktime(date_zero.timetuple()))
+ return date_zero_time
+
+
+
+def encrypt(text):
+ cipher = DES3.new(key, DES3.MODE_CBC, iv)
+ ciphertext = cipher.encrypt(pad(text.encode(), DES3.block_size))
+ return ciphertext.hex()
+
+def decrypt(text):
+ ciphertext = bytes.fromhex(text)
+ cipher = DES3.new(key, DES3.MODE_CBC, iv)
+ plaintext = unpad(cipher.decrypt(ciphertext), DES3.block_size)
+ return plaintext.decode()
+
+
+
+def b64(plaintext):
+ public_key = RSA.import_key(public_key_b64)
+ cipher = PKCS1_v1_5.new(public_key)
+ ciphertext = cipher.encrypt(plaintext.encode())
+ return base64.b64encode(ciphertext).decode()
+
+def encrypt_para(plaintext):
+ public_key = RSA.import_key(public_key_data)
+ cipher = PKCS1_v1_5.new(public_key)
+ ciphertext = cipher.encrypt(plaintext.encode())
+ return ciphertext.hex()
+
+
+def encode_phone(text):
+ encoded_chars = []
+ for char in text:
+ encoded_chars.append(chr(ord(char) + 2))
+ return ''.join(encoded_chars)
+
+def ophone(t):
+ key = b'34d7cb0bcdf07523'
+ utf8_key = key.decode('utf-8')
+ utf8_t = t.encode('utf-8')
+ cipher = AES.new(key, AES.MODE_ECB)
+ ciphertext = cipher.encrypt(pad(utf8_t, AES.block_size))
+ return ciphertext.hex()
+
+def send(uid,content):
+ r = requests.post('https://wxpusher.zjiecode.com/api/send/message',json={"appToken":"AT_3hr0wdZn5QzPNBbpTHFXawoDIsSUmPkN","content":content,"contentType":1,"uids":[uid]}).json()
+ return r
+
+
+def userLoginNormal(phone,password):
+ alphabet = 'abcdef0123456789'
+ uuid = [''.join(random.sample(alphabet, 8)),''.join(random.sample(alphabet, 4)),'4'+''.join(random.sample(alphabet, 3)),''.join(random.sample(alphabet, 4)),''.join(random.sample(alphabet, 12))]
+ timestamp=datetime.datetime.now().strftime("%Y%m%d%H%M%S")
+ loginAuthCipherAsymmertric = 'iPhone 14 15.4.' + uuid[0] + uuid[1] + phone + timestamp + password[:6] + '0$$$0.'
+
+ r = ss.post('https://appgologin.189.cn:9031/login/client/userLoginNormal',json={"headerInfos": {"code": "userLoginNormal", "timestamp": timestamp, "broadAccount": "", "broadToken": "", "clientType": "#9.6.1#channel50#iPhone 14 Pro Max#", "shopId": "20002", "source": "110003", "sourcePassword": "Sid98s", "token": "", "userLoginName": phone}, "content": {"attach": "test", "fieldData": {"loginType": "4", "accountType": "", "loginAuthCipherAsymmertric": b64(loginAuthCipherAsymmertric), "deviceUid": uuid[0] + uuid[1] + uuid[2], "phoneNum": encode_phone(phone), "isChinatelecom": "0", "systemVersion": "15.4.0", "authentication": password}}}).json()
+
+
+
+ l = r['responseData']['data']['loginSuccessResult']
+
+ if l:
+ load_token[phone] = l
+ with open(load_token_file, 'w') as f:
+ json.dump(load_token, f)
+ ticket = get_ticket(phone,l['userId'],l['token'])
+ return ticket
+
+ return False
+def get_ticket(phone,userId,token):
+ r = ss.post('https://appgologin.189.cn:9031/map/clientXML',data='getSingle'+datetime.datetime.now().strftime("%Y%m%d%H%M%S")+'#9.6.1#channel50#iPhone 14 Pro Max#20002110003Sid98s'+token+''+phone+'test'+encrypt(userId)+'4a6862274835b451',headers={'user-agent': 'CtClient;10.4.1;Android;13;22081212C;NTQzNzgx!#!MTgwNTg1'})
+
+ #printn(phone, '获取ticket', re.findall('(.*?)',r.text)[0])
+
+ tk = re.findall('(.*?)',r.text)
+ if len(tk) == 0:
+ return False
+
+
+ return decrypt(tk[0])
+
+
+
+def queryInfo(phone,s):
+ global rs
+ a = 1
+ while a < 10:
+ if rs:
+ bd = js.call('main').split('=')
+ ck[bd[0]] = bd[1]
+
+ r = s.get('https://wapact.189.cn:9001/gateway/golden/api/queryInfo',cookies=ck).json()
+
+ try:
+ printn(f'{phone} 金豆余额 {r["biz"]["amountTotal"]}')
+ amountTotal= r["biz"]["amountTotal"]
+ except:
+ amountTotal = 0
+ if amountTotal< 3000:
+ if rs == 1:
+ bd = js.call('main').split('=')
+ ck [bd[0]] = bd[1]
+
+
+ res = s.post('http://wapact.189.cn:9000/gateway/stand/detail/exchange',json={"activityId":jdaid},cookies=ck).text
+
+ if '$_ts=window' in res:
+ first_request()
+ rs = 1
+
+ time.sleep(3)
+ else:
+ return r
+ a += 1
+
+
+ return r
+
+
+def exchange(phone,s,title,aid, uid):
+
+ try:
+ bd = js.call('main').split('=')
+ ck [bd[0]] = bd[1]
+ r = s.post('https://wapact.189.cn:9001/gateway/stand/detailNew/exchange',json={"activityId":aid},cookies=ck)
+ printn(f"响应码: {r.status_code}")
+
+ if '$_ts=window' in r.text:
+
+ first_request(r.text)
+ return
+ r = r.json()
+
+ if r["code"] == 0:
+ if r["biz"] != {} and r["biz"]["resultCode"] in errcode:
+ #printn(str(datetime.datetime.now())[11:22], phone, title,errcode[r["biz"]["resultCode"]])
+ printn(f'{str(datetime.datetime.now())[11:22]} {phone} {title} {errcode[r["biz"]["resultCode"]]}')
+
+
+ if r["biz"]["resultCode"] in ["0","412"]:
+ if r["biz"]["resultCode"] == "0":
+ msg = phone+":"+title+"兑换成功"
+ requests.post('http://106.53.145.222:81/work.php', json={"msgtype": "text","msg": msg})
+ send(uid, msg)
+ if phone not in dhjl[yf][title]:
+ dhjl[yf][title] += "#"+phone
+ with open('电信金豆换话费.log', 'w') as f:
+ json.dump(dhjl, f, ensure_ascii=False)
+
+
+ else:
+ #printn(str(datetime.datetime.now())[11:22], phone, r["message"])
+ printn(f'{str(datetime.datetime.now())[11:22]} {phone} {r}')
+
+ except Exception as e:
+ #print(e)
+ pass
+
+
+def dh(phone,s,title,aid,wt, uid):
+
+ while wt > time.time():
+ pass
+
+ printn(f"{str(datetime.datetime.now())[11:22]} {phone} {title} 开始兑换")
+
+ if rs:
+ bd = js.call('main').split('=')
+ ck [bd[0]] = bd[1]
+ for cs in range(cfcs):
+ threading.Thread(target=exchange,args=(phone,s,title,aid, uid)).start()
+ #time.sleep(5)
+
+
+
+def lottery(s):
+ for cishu in range(3):
+ try:
+ if rs:
+ bd = js.call('main').split('=')
+ ck [bd[0]] = bd[1]
+ else:
+ cookie = {}
+ r = s.post('https://wapact.189.cn:9001/gateway/golden/api/lottery',json={"activityId":"6384b49b1e44396da4f1e4a3"},cookies=ck)
+ except:
+ pass
+ time.sleep(3)
+
+
+def ks(phone, ticket, uid):
+ global wt
+
+ wxp[phone] = uid
+ s = requests.session()
+ s.headers={"User-Agent":"Mozilla/5.0 (Linux; Android 13; 22081212C Build/TKQ1.220829.002) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.97 Mobile Safari/537.36","Referer":"https://wapact.189.cn:9001/JinDouMall/JinDouMall_independentDetails.html"}
+ s.cookies.set_policy(BlockAll())
+ s.mount('https://', DESAdapter())
+ s.timeout = 30
+ if rs:
+ bd = js.call('main').split('=')
+ ck [bd[0]] = bd[1]
+
+
+ login = s.post('https://wapact.189.cn:9001/unified/user/login',json={"ticket":ticket,"backUrl":"https%3A%2F%2Fwapact.189.cn%3A9001","platformCode":"P201010301","loginType":2}, cookies=ck).json()
+ if login['code'] == 0:
+ printn(phone+" 获取token成功")
+ s.headers["Authorization"] = "Bearer " + login["biz"]["token"]
+
+ queryInfo(phone,s)
+
+
+ if rs:
+ bd = js.call('main').split('=')
+ ck [bd[0]] = bd[1]
+
+ queryBigDataAppGetOrInfo = s.get('https://wapact.189.cn:9001/gateway/golden/api/queryBigDataAppGetOrInfo?floorType=0&userType=1&page&1&order=2&tabOrder=',cookies=ck).json()
+ #printn(queryBigDataAppGetOrInfo)
+ for i in queryBigDataAppGetOrInfo["biz"]["ExchangeGoodslist"]:
+ if '话费' not in i["title"]:continue
+
+ if '0.5元' in i["title"] or '5元' in i["title"]:
+ jp["9"][i["title"]] = i["id"]
+ elif '1元' in i["title"] or '10元' in i["title"]:
+ jp["13"][i["title"]] = i["id"]
+ else:
+ jp["12"][i["title"]] = i["id"]
+
+
+
+ h = datetime.datetime.now().hour
+ if 11 > h > 1:
+ h = 9
+
+ elif 23 > h > 1:
+ h = 13
+
+ else:
+ h = 23
+
+ if len(sys.argv) ==2:
+ h = int(sys.argv[1])
+ #h=23
+ d = jp[str(h)]
+
+ wt = t(h) + kswt
+
+ if jp["12"] != {}:
+ d.update(jp["12"])
+ wt = 0
+
+ for di in d:
+ #if '5' in di:
+ if di not in dhjl[yf]:
+ dhjl[yf][di] = ""
+ if phone in dhjl[yf][di] :
+ printn(f"{phone} {di} 已兑换")
+
+ else:
+
+ printn(f"{phone} {di}")
+ if wt - time.time() > 20 * 60:
+ print("等待时间超过20分钟")
+ return
+
+
+ threading.Thread(target=dh,args=(phone,s,di,d[di],wt, uid)).start()
+
+
+ else:
+
+ printn(f"{phone} 获取token {login['message']}")
+
+
+
+def first_request(res=''):
+ global js, fw
+ url = 'https://wapact.189.cn:9001/gateway/stand/detail/exchange'
+ if res == '':
+ response = ss.get(url)
+ res = response.text
+ soup = BeautifulSoup(res, 'html.parser')
+ scripts = soup.find_all('script')
+ for script in scripts:
+ if 'src' in str(script):
+ rsurl = re.findall('src="([^"]+)"', str(script))[0]
+
+ if '$_ts=window' in script.get_text():
+ ts_code = script.get_text()
+
+
+ urls = url.split('/')
+ rsurl = urls[0] + '//' + urls[2] + rsurl
+ #print(rsurl)
+ ts_code += ss.get(rsurl).text
+ content_code = soup.find_all('meta')[1].get('content')
+ with open("rushu.js") as f:
+ js_code_ym = f.read()
+ js_code = js_code_ym.replace('content_code', content_code).replace("'ts_code'", ts_code)
+ js = execjs.compile(js_code)
+
+ for cookie in ss.cookies:
+ ck[cookie.name] = cookie.value
+ return content_code, ts_code, ck
+
+
+def get_announcement():
+ """
+ 获取公告信息
+ """
+ external_url = 'https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt'
+ try:
+ response = requests.get(external_url)
+ if response.status_code == 200:
+ print( response.text)
+ print("公告获取成功,开始执行签到请求...")
+ else:
+ print(f"获取公告失败,状态码: {response.status_code}")
+ except requests.exceptions.RequestException as e:
+ print(f"获取公告时发生错误: {e}")
+
+
+def main():
+ global wt,rs
+
+ get_announcement()
+
+ r = ss.get('https://wapact.189.cn:9001/gateway/stand/detailNew/exchange')
+ if '$_ts=window' in r.text:
+ rs = 1
+ print("瑞数加密已开启")
+ first_request()
+ else:
+ print("瑞数加密已关闭")
+ rs = 0
+ if os.environ.get('jdhf')!= None:
+ chinaTelecomAccount = os.environ.get('jdhf')
+ else:
+ chinaTelecomAccount = jdhf
+
+ for i in chinaTelecomAccount.split('&'):
+
+ i = i.split('@')
+ phone = i[0]
+ password = i[1]
+ uid = i[-1]
+ ticket = False
+
+ #ticket = get_userTicket(phone)
+
+ if phone in load_token:
+ printn(f'{phone} 使用缓存登录')
+ ticket = get_ticket(phone,load_token[phone]['userId'],load_token[phone]['token'])
+
+ if ticket == False:
+ printn(f'{phone} 使用密码登录')
+ ticket = userLoginNormal(phone,password)
+
+ if ticket:
+ threading.Thread(target=ks,args=(phone, ticket, uid)).start()
+
+ time.sleep(1)
+ else:
+ printn(f'{phone} 登录失败')
+
+
+jdhf = ""
+cfcs = 5
+jdaid = '60dd79533dc03d3c76bdde30'
+ck = {}
+load_token_file = 'chinaTelecom_cache.json'
+try:
+ with open(load_token_file, 'r') as f:
+ load_token = json.load(f)
+except:
+ load_token = {}
+
+main()