diff --git a/jd_phoneDiscount.py b/jd_phoneDiscount.py deleted file mode 100644 index 922c4ee..0000000 --- a/jd_phoneDiscount.py +++ /dev/null @@ -1,661 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -""" -File: jd_phoneDiscount.py(手机折上折抽奖) -Author: HarbourJ -Date: 2022/12/29 20:00 -TG: https://t.me/HarbourToulu -cron: 1 1 1 1 1 1 -new Env('手机折上折抽奖'); -活动入口: https://sjtx-dz.isvjcloud.com/phone_discount/?invite_id=63ad1171068bd98098&source=test&baseInfo=LM6HIKdH%2Cbrand_two -""" - - -import time, requests, sys, re, os, json, random -import warnings - -warnings.filterwarnings("ignore", category=DeprecationWarning) -from functools import partial -print = partial(print, flush=True) - -try: - from jd_sign import * -except ImportError as e: - print(e) - if "No module" in str(e): - print("请先运行Faker库依赖一键安装脚本(jd_check_dependent.py),安装jd_sign.so依赖") - sys.exit() -try: - from jdCookie import get_cookies - getCk = get_cookies() -except: - print("请先下载依赖脚本,\n下载链接: https://raw.githubusercontent.com/HarbourJ/HarbourToulu/main/jdCookie.py") - sys.exit(3) - -redis_url = os.environ.get("redis_url") if os.environ.get("redis_url") else "172.17.0.1" -redis_port = os.environ.get("redis_port") if os.environ.get("redis_port") else "6379" -redis_pwd = os.environ.get("redis_pwd") if os.environ.get("redis_pwd") else "" -baseInfo = os.environ.get("baseInfo") if os.environ.get("baseInfo") else "" - -if not baseInfo: - print('未设置export baseInfo="品牌编号",默认运行第九个任务brand_ten') - baseInfo = "8AHIKfsi%2Cbrand_ten" -else: - if baseInfo == "1": - baseInfo = "HXu94GdF%2Cbrand_one" - elif baseInfo == "2": - baseInfo = "LM6HIKdH%2Cbrand_two" - elif baseInfo == "3": - baseInfo = "KmwM4N4L%2Cbrand_three" - elif baseInfo == "4": - baseInfo = "8pTg6fXi%2Cbrand_four" - elif baseInfo == "5": - baseInfo = "Sr5zisvb%2Cbrand_five" - elif baseInfo == "6": - baseInfo = "B0cRJYyC%2Cbrand_six" - elif baseInfo == "7": - baseInfo = "ZRco56US%2Cbrand_seven" - elif baseInfo == "8": - baseInfo = "4tqyLzac%2Cbrand_eight" - elif baseInfo == "9": - baseInfo = "PIZ1W0ap%2Cbrand_nine" - elif baseInfo == "10": - baseInfo = "8AHIKfsi%2Cbrand_ten" - elif baseInfo == "11": - baseInfo = "zvNssjdW%2Cbrand_eleven" - else: - print('export baseInfo="品牌编号"设置有误,默认运行第九个任务brand_ten') - baseInfo = "8AHIKfsi%2Cbrand_ten" -appKey = baseInfo.split('%2C')[0] -brand = baseInfo.split('%2C')[1] - -activity_url = f"https://sjtx-dz.isvjcloud.com/phone_discount/?invite_id=63ad1171068bd98098&source=test&baseInfo={baseInfo}" -print(f"【🛳活动入口】{activity_url}") - -def redis_conn(): - try: - import redis - try: - pool = redis.ConnectionPool(host=redis_url, port=redis_port, decode_responses=True, socket_connect_timeout=5, password=redis_pwd) - r = redis.Redis(connection_pool=pool) - r.get('conn_test') - print('✅redis连接成功') - return r - except: - print("⚠️redis连接异常") - except: - print("⚠️缺少redis依赖,请运行pip3 install redis") - sys.exit() - -def getToken(ck, r=None): - host = f'{activityUrl.split("com/")[0]}com' - try: - pt_pin = unquote_plus(re.compile(r'pt_pin=(.*?);').findall(ck)[0]) - except: - pt_pin = ck[:15] - try: - try: - Token = r.get(f'{activityUrl.split("https://")[1].split("-")[0]}_{pt_pin}') - except Exception as e: - Token = None - if Token is not None: - print(f"♻️获取缓存Token") - return Token - else: - s.headers = { - 'Connection': 'keep-alive', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', - 'User-Agent': '', - 'Cookie': ck, - 'Host': 'api.m.jd.com', - 'Referer': '', - 'Accept-Language': 'zh-Hans-CN;q=1 en-CN;q=0.9', - 'Accept': '*/*' - } - sign({"url": f"{host}", "id": ""}, 'isvObfuscator') - f = s.post('https://api.m.jd.com/client.action', verify=False, timeout=30) - if f.status_code != 200: - print(f.status_code) - return - else: - if "参数异常" in f.text: - print(f.text) - return - Token_new = f.json()['token'] - try: - if r.set(f'{activityUrl.split("https://")[1].split("-")[0]}_{pt_pin}', Token_new, ex=1800): - print("✅Token缓存成功") - else: - print("❌Token缓存失败") - except Exception as e: - print(f"✅获取实时Token") - return Token_new - except Exception as e: - print(f"Token error: {str(e)}") - return - -def getJdTime(): - url = "http://api.m.jd.com/client.action?functionId=queryMaterialProducts&client=wh5" - headers = { - 'Accept': '*/*', - 'Accept-Encoding': 'gzip, deflate', - 'Accept-Language': 'zh-CN,zh;q=0.9', - 'Host': 'api.m.jd.com', - 'Proxy-Connection': 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36' - } - try: - response = requests.request("GET", url, headers=headers, timeout=2) - if response.status_code == 200: - res = response.json() - jdTime = res['currentTime2'] - except: - jdTime = int(round(time.time() * 1000)) - return jdTime - -def randomString(e, flag=False): - t = "0123456789abcdef" - if flag: t = t.upper() - n = [random.choice(t) for _ in range(e)] - return ''.join(n) - -def refresh_cookies(res): - if res.cookies: - cookies = res.cookies.get_dict() - set_cookie = [(set_cookie + "=" + cookies[set_cookie]) for set_cookie in cookies] - global activityCookie - activityCookieMid = [i for i in activityCookie.split(';') if i != ''] - for i in activityCookieMid: - for x in set_cookie: - if i.split('=')[0] == x.split('=')[0]: - if i.split('=')[1] != x.split('=')[1]: - activityCookieMid.remove(i) - activityCookie = ''.join( - sorted([(set_cookie + ";") for set_cookie in list(set(activityCookieMid + set_cookie))])) - # print("刷新cookie", activityCookie) - -def getActivity(): - url = activityUrl - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', - 'User-Agent': ua, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Connection': 'keep-alive', - 'Referer': activityUrl, - 'Cookie': f'IsvToen={token}' - } - response = requests.request("GET", url, headers=headers) - if response.status_code == 200: - return - else: - print(response.status_code) - print("⚠️疑似ip黑了") - sys.exit() - -def getAuth(): - url = f"https://sjtx-dz.isvjcloud.com/auth/jos?token={token}&jd_source=01&source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers) - res = response.json() - if res['status'] == 0: - return res['body']['access_token'] - else: - print(f"⚠️{res}") - -def getUserInfo(authToken): - url = "https://sjtx-dz.isvjcloud.com/phone-discount-api/get_user_info?source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("GET", url, headers=headers) - res = response.json() - try: - code = res['code'] - is_acvite_complete = res['is_acvite_complete'] - user_click_invite = res['user_click_invite'] - is_invite_complete = res['is_invite_complete'] - user_new = res['user_new'] - return code, is_acvite_complete, user_click_invite, is_invite_complete, user_new - except: - print(res) - -def getFriendList(authToken): - url = "https://sjtx-dz.isvjcloud.com/phone-discount-api/get_friend_list?source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("GET", url, headers=headers) - res = response.json() - # print("getFriendList:", res) - try: - friendList = res['friend_list'] - except Exception as e: - print(f"getFriendList Error: {str(e)}") - friendList = [] - return friendList - -def inviteFriend(inviter_id, authToken): - url = "https://sjtx-dz.isvjcloud.com/phone-discount-api/invite_friend?source=test&is_share=1" - payload = '{"inviter_id":"' + inviter_id + '","channel":2}' - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers, data=payload) - res = response.json() - return res - -def invite(authToken): - url = f"https://sjtx-dz.isvjcloud.com/burying/stat?action=invite&source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers) - res = response.json() - return res - -def inviteFriendNew(inviter_id, authToken): - url = "https://sjtx-dz.isvjcloud.com/phone-discount-api/invite_friend_new?source=test&is_share=1" - payload = '{"inviter_id":"' + inviter_id + '","channel":2}' - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers, data=payload) - res = response.json() - return res - -def clickHomeGetPrize(authToken): - url = f"https://sjtx-dz.isvjcloud.com/burying/stat?action=click_home_get_prize&source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers) - res = response.json() - return res - -def clickEffectGetPrize(authToken): - url = f"https://sjtx-dz.isvjcloud.com/burying/stat?action=click_effect_get_prize&source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers) - res = response.json() - return res - -def homeSendPrizes(authToken): - url = f"https://sjtx-dz.isvjcloud.com/phone-discount-api/home_send_prizes?source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers) - res = response.json() - return res - -def clickCouponSenPrize(authToken): - url = f"https://sjtx-dz.isvjcloud.com/burying/stat?action=click_coupon_send_prize&source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers) - res = response.json() - return res - -def userClickInvite(authToken): - url = f"https://sjtx-dz.isvjcloud.com/phone-discount-api/user_click_invite?source=test&is_share=1" - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - requests.request("POST", url, headers=headers) - -def inviteDrawPrize(invite_type, authToken): - url = "https://sjtx-dz.isvjcloud.com/phone-discount-api/invite_draw_prize?source=test&is_share=1" - payload = '{"invite_type":' + invite_type + '}' - headers = { - 'Host': 'sjtx-dz.isvjcloud.com', - 'Accept': 'application/json, text/plain, */*', - 'App-Key': appKey, - 'Authorization': f'Bearer {authToken}', - 'brand': brand, - 'Accept-Language': 'zh-CN,zh-Hans;q=0.9', - 'Accept-Encoding': 'gzip, deflate, br', - 'Content-Type': 'application/json', - 'Origin': 'https://sjtx-dz.isvjcloud.com', - 'User-Agent': ua, - 'Referer': activityUrl, - 'Connection': 'keep-alive' - } - response = requests.request("POST", url, headers=headers, data=payload) - res = response.json() - return res - - -if __name__ == '__main__': - r = redis_conn() - try: - cks = getCk - if not cks: - sys.exit() - except: - print("未获取到有效COOKIE,退出程序!") - sys.exit() - global shareUuid, inviteSuccNum, activityUrl, firstCk, allCookies - inviteSuccNum = 0 - try: - shareUuid = remote_redis(brand, 1) - if not shareUuid: - shareUuid = "63ad1171068bd98098" - except: - shareUuid = "63ad1171068bd98098" - activityUrl = f"https://sjtx-dz.isvjcloud.com/phone_discount/?invite_id={shareUuid}&source=test&baseInfo={baseInfo}" - allCookies = cks - - num = 0 - for cookie in allCookies: - num += 1 - if num == 1: - firstCk = cookie - if num % 6 == 0: - print("⏰等待3s,休息一下") - time.sleep(3) - global ua, activityCookie, token - ua = userAgent() - try: - pt_pin = re.compile(r'pt_pin=(.*?);').findall(cookie)[0] - pt_pin = unquote_plus(pt_pin) - except IndexError: - pt_pin = re.compile(r'pin=(.*?);').findall(cookie)[0] - pt_pin = unquote_plus(pt_pin) - print(f'\n******开始【京东账号{num}】{pt_pin} *********\n') - - print(datetime.now()) - token = None - token = getToken(cookie, r) - if token is None: - if num == 1: - print(f"⚠️车头获取Token失败,退出本程序!") - sys.exit() - print(f"⚠️获取Token失败!⏰等待3s") - time.sleep(3) - continue - time.sleep(0.3) - getActivity() - time.sleep(0.2) - authToken = getAuth() - if not authToken: - if num == 1: - print("‼️车头为火爆号,换车头重新运行!") - sys.exit() - else: - print("📝移除火爆账号") - allCKs.remove() - time.sleep(1.5) - continue - time.sleep(0.2) - userInfo = getUserInfo(authToken) - if not userInfo: - if num == 1: - sys.exit() - else: - time.sleep(1.5) - continue - shareUuid1 = userInfo[0] - print(f"🤖助力码: {shareUuid1}") - is_acvite_complete = userInfo[1] - user_new = userInfo[4] - time.sleep(0.2) - if num == 1: - inviteSuccNum = len(getFriendList(authToken)) - print(f"🧑‍🤝‍🧑CK1已邀请{inviteSuccNum}人") - if inviteSuccNum >= 10: - for i in range(2): - invite_type = i + 1 - print(f"开始第{invite_type}次抽奖") - drawPrize = inviteDrawPrize(str(invite_type), authToken) - try: - if "prize_info" not in drawPrize: - print(drawPrize['message']) - else: - prize_info = f"{drawPrize['prize_info']['user_prize']['prize_name']} {drawPrize['prize_info']['user_prize']['prize_info']['quota']}" - print(f"🎁抽奖获得:{prize_info}") - except: - print(f"抽奖结果: {drawPrize}") - sys.exit() - time.sleep(0.2) - if user_new == 1: # 新用户 - invite(authToken) - time.sleep(0.2) - inviteNewInfo = inviteFriendNew(shareUuid, authToken) - if "prize_info" in inviteNewInfo: - prize_info = [f"{x['user_prize']['prize_name']}{x['user_prize']['prize_info']['quota']}个" for x in inviteNewInfo['prize_info']] - if prize_info: - print(f"🎁获得{','.join(prize_info)}") - else: - print("来晚了没水了💨💨💨") - inviteSuccNum += 1 - print(f"🎉助力成功!已邀请{inviteSuccNum}人") - else: - print(inviteNewInfo['message']) - clickHomeGetPrize(authToken) - time.sleep(0.2) - clickEffectGetPrize(authToken) - time.sleep(0.2) - homePrizes = homeSendPrizes(authToken) - if "prize_info" in homePrizes: - prize_info = [f"{x['user_prize']['prize_name']}{x['user_prize']['prize_info']['quota']}个" for x in homePrizes['prize_info']] - print(f"🎁获得{','.join(prize_info)}") - else: - print(homePrizes) - time.sleep(0.2) - userClickInvite(authToken) - - if inviteSuccNum >= 10: - token = getToken(firstCk, r) - time.sleep(0.2) - getActivity() - time.sleep(0.2) - authToken0 = getAuth() - time.sleep(0.2) - getUserInfo(authToken0) - time.sleep(0.2) - for i in range(2): - invite_type = i + 1 - print(f"开始第{invite_type}次抽奖") - drawPrize0 = inviteDrawPrize(str(invite_type), authToken0) - try: - if "prize_info" not in drawPrize0: - print(drawPrize0['message']) - else: - prize_info = f"{drawPrize0['prize_info']['user_prize']['prize_name']}{drawPrize0['prize_info']['user_prize']['prize_info']['quota']}" - print(f"🎁抽奖获得:{prize_info}") - except: - print(drawPrize0) - sys.exit() - else: - inviteInfo = inviteFriend(shareUuid, authToken) - if "prize_info" not in inviteInfo: - print(inviteInfo['message']) - if "已达到好友邀请上限" in inviteInfo['message']: - if num == 1: - shareUuid = shareUuid1 - activityUrl = f"https://sjtx-dz.isvjcloud.com/phone_discount/?invite_id={shareUuid}&source=test&baseInfo={baseInfo}" - print(f"🤖后面的号全部助力: {shareUuid}") - continue - else: - token = getToken(firstCk, r) - time.sleep(0.2) - getActivity() - time.sleep(0.2) - authToken0 = getAuth() - time.sleep(0.2) - getUserInfo(authToken0) - time.sleep(0.2) - for i in range(2): - invite_type = i + 1 - print(f"开始第{invite_type}次抽奖") - drawPrize0 = inviteDrawPrize(str(invite_type), authToken0) - try: - if "prize_info" not in drawPrize0: - print(drawPrize0['message']) - else: - prize_info = f"{drawPrize0['prize_info']['user_prize']['prize_name']}{drawPrize0['prize_info']['user_prize']['prize_info']['quota']}" - print(f"🎁抽奖获得:{prize_info}") - except: - print(drawPrize0) - sys.exit() - else: - inviteSuccNum += 1 - print(f"🎉助力成功!已邀请{inviteSuccNum}人") - prize_info = [f"{x['user_prize']['prize_name']}{x['user_prize']['prize_info']['quota']}个" for x in inviteInfo['prize_info']] - print(f"🎁获得{','.join(prize_info)}") - if inviteSuccNum >= 10: - token = getToken(firstCk, r) - time.sleep(0.2) - getActivity() - time.sleep(0.2) - authToken0 = getAuth() - time.sleep(0.2) - getUserInfo(authToken0) - time.sleep(0.2) - for i in range(2): - invite_type = i + 1 - print(f"开始第{invite_type}次抽奖") - drawPrize0 = inviteDrawPrize(str(invite_type), authToken0) - try: - if "prize_info" not in drawPrize0: - print(drawPrize0['message']) - else: - prize_info = f"{drawPrize0['prize_info']['user_prize']['prize_name']}{drawPrize0['prize_info']['user_prize']['prize_info']['quota']}" - print(f"🎁抽奖获得:{prize_info}") - except: - print(drawPrize0) - sys.exit() - if num == 1: - shareUuid = shareUuid1 - activityUrl = f"https://sjtx-dz.isvjcloud.com/phone_discount/?invite_id={shareUuid}&source=test&baseInfo={baseInfo}" - print(f"🤖后面的号全部助力: {shareUuid}") - - time.sleep(2) \ No newline at end of file