├── README.md ├── tools ├── top3.js ├── top1.js ├── index.js ├── top2.js └── tool.js ├── fn_print.py ├── get_env.py ├── jwxq.py ├── tpt2.py ├── gjc.py ├── 福田春日能量.py ├── 福田春日能量中奖查询.py ├── zbs.py ├── zbs.js ├── tsthb.py ├── ltyd.py ├── T3cx.py ├── tptdh.py ├── gjc.js ├── nxfl-酷我音乐2.0.py ├── sfKFC.py ├── sendNotify.py ├── ks.js ├── 拼多多果园-小程序.js └── ydqd.js /README.md: -------------------------------------------------------------------------------- 1 | # scripts 2 | -------------------------------------------------------------------------------- /tools/top3.js: -------------------------------------------------------------------------------- 1 | 2 | res_log(document.cookie); -------------------------------------------------------------------------------- /fn_print.py: -------------------------------------------------------------------------------- 1 | # -*- coding=UTF-8 -*- 2 | # @Project QL_TimingScript 3 | # @fileName fn_print.py 4 | # @author Echo 5 | # @EditTime 2024/9/24 6 | from typing import * 7 | 8 | all_print_list = [] 9 | 10 | 11 | def fn_print(*args, sep=' ', end='\n', **kwargs): 12 | global all_print_list 13 | output = "" 14 | # 构建输出字符串 15 | for index, arg in enumerate(args): 16 | if index == len(args) - 1: 17 | output += str(arg) 18 | continue 19 | output += str(arg) + sep 20 | output = output + end 21 | all_print_list.append(output) 22 | # 调用内置的 print 函数打印字符串 23 | print(*args, sep=sep, end=end, **kwargs) 24 | -------------------------------------------------------------------------------- /get_env.py: -------------------------------------------------------------------------------- 1 | # -*- coding=UTF-8 -*- 2 | # @Project QL_TimingScript 3 | # @fileName get_env.py 4 | # @author Echo 5 | # @EditTime 2024/11/26 6 | import os 7 | import re 8 | 9 | from dotenv import load_dotenv, find_dotenv 10 | 11 | from fn_print import fn_print 12 | 13 | 14 | def get_env(env_var, separator): 15 | if env_var in os.environ: 16 | return re.split(separator, os.environ.get(env_var)) 17 | else: 18 | load_dotenv(find_dotenv()) 19 | if env_var in os.environ: 20 | return re.split(separator, os.environ.get(env_var)) 21 | else: 22 | fn_print(f"未找到{env_var}变量.") 23 | return [] 24 | -------------------------------------------------------------------------------- /tools/top1.js: -------------------------------------------------------------------------------- 1 | const v8 =require('v8'); 2 | const vm=require('vm'); 3 | v8.setFlagsFromString('--allow-natives-syntax'); 4 | let undetectable = vm.runInThisContext("%GetUndetectable()"); 5 | v8.setFlagsFromString('--no-allow-natives-syntax'); 6 | my_Proxy=function (){} 7 | delete __filename; 8 | delete __dirname; 9 | delete process; 10 | res_log = console.log 11 | console.log=function (){}; 12 | // Window = function Window() { 13 | // } 14 | window = globalThis; 15 | // window.__proto__ = new Window() 16 | // global = window; 17 | delete global 18 | 19 | 20 | document = { 21 | characterSet: 'UTF-8', 22 | charset: 'UTF-8', 23 | scripts: ['script', 'script'], 24 | appendChild: function () { 25 | debugger; 26 | if (arguments[0].id === 'username') { 27 | this.action = arguments[0] 28 | } else if (arguments[0].id === 'password') { 29 | 30 | this.textContent = arguments[0] 31 | 32 | } else if (arguments[0].id === 'innerText') { 33 | 34 | this.id = arguments[0] 35 | this.innerText = arguments[0] 36 | 37 | } 38 | 39 | 40 | }, 41 | removeChild: function () { 42 | } 43 | }; 44 | document['all'] = undetectable 45 | document.all[0] = 'html' 46 | document.all[1] = 'head' 47 | document.all[2] = 'meta' 48 | 49 | Object.defineProperty(document.all,'length',{ 50 | get : function (){ 51 | return Object.keys(document.all).length 52 | } 53 | }) 54 | null_function = function () { 55 | console.log(arguments) 56 | } 57 | // HTMLDocument = function () { 58 | // } 59 | 60 | // document.__proto__ = new HTMLDocument() 61 | 62 | window.ActiveXObject = undefined; 63 | // delete ActiveXObject 64 | window.clearImmediate = undefined; 65 | window.setImmediate = undefined; 66 | window.top = window; 67 | window.self = window; 68 | window.name = ""; 69 | window.TEMPORARY = 0; 70 | window.indexedDB = {}; 71 | window.chrome = {}; 72 | window.innerHeight = 930; 73 | window.innerWidth = 681; 74 | window.outerHeight = 1059; 75 | window.outerWidth = 2208; 76 | window.name = ''; 77 | 78 | 79 | // Object.defineProperty(window.Event, 'name', { 80 | // value: 'Event' 81 | // }); 82 | 83 | window.CanvasRenderingContext2D = function () { 84 | } 85 | window.CanvasRenderingContext2D.prototype = { 86 | getImageData: function () { 87 | } 88 | }; 89 | window.HTMLCanvasElement = function () { 90 | } 91 | window.HTMLCanvasElement.prototype = { 92 | toBlob: function () { 93 | }, 94 | toDataURL: function () { 95 | } 96 | } -------------------------------------------------------------------------------- /jwxq.py: -------------------------------------------------------------------------------- 1 | """ 2 | name: 旧物星球旧衣服回收,起提2元 3 | Author: MK集团本部 4 | Date: 2024-09-24 5 | export jwxq="token" 6 | cron: 0 5 * * * 7 | """ 8 | #import notify 9 | import requests, json, os, sys, time, random, datetime 10 | response = requests.get("https://mkjt.jdmk.xyz/mkjt.txt") 11 | response.encoding = 'utf-8' 12 | txt = response.text 13 | print(txt) 14 | #---------------------主代码区块--------------------- 15 | session = requests.session() 16 | 17 | def userinfo(ck): 18 | url = 'https://dbjiuwuxingqiu.fzjingzhou.com/api/Person/index' 19 | header = { 20 | "Connection": "keep-alive", 21 | "User-Agent": "Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260117 MMWEBSDK/20240501 MMWEBID/3169 MicroMessenger/8.0.50.2701(0x2800325B) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android", 22 | "content-type": "application/x-www-form-urlencoded", 23 | "platform": "MP-WEIXIN", 24 | } 25 | data = f'token={ck}' 26 | try: 27 | response = session.post(url=url, headers=header, data=data) 28 | info = json.loads(response.text) 29 | #print(info) 30 | if "success" in info["msg"]: 31 | return info["data"]["exchange"],info["data"]["mobile"] 32 | except Exception as e: 33 | #print(e) 34 | pass 35 | 36 | def run(ck): 37 | login = 'https://dbjiuwuxingqiu.fzjingzhou.com/api/Person/sign' 38 | header = { 39 | "Connection": "keep-alive", 40 | "User-Agent": "Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/126.0.6478.188 Mobile Safari/537.36 XWEB/1260117 MMWEBSDK/20240501 MMWEBID/3169 MicroMessenger/8.0.50.2701(0x2800325B) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android", 41 | "content-type": "application/x-www-form-urlencoded", 42 | "platform": "MP-WEIXIN", 43 | } 44 | data = f'token={ck}' 45 | try: 46 | userinfo(ck) 47 | response = session.post(url=login, headers=header, data=data) 48 | login = json.loads(response.text) 49 | #print(login) 50 | a , b = userinfo(ck) 51 | if login["code"] == 1000: 52 | print(f"📱:{b}\n☁️签到:成功\n🌈现金:{a}元") 53 | else: 54 | print(f"📱:{b}\n☁️签到:{login['msg']}\n🌈现金:{a}元") 55 | time.sleep(2) 56 | except Exception as e: 57 | print("📱:账号已过期或异常") 58 | 59 | def main(): 60 | if os.environ.get("jwxq"): 61 | ck = os.environ.get("jwxq") 62 | else: 63 | ck = "" 64 | if ck == "": 65 | print("请设置变量") 66 | sys.exit() 67 | if datetime.datetime.strptime('05:01', '%H:%M').time() <= datetime.datetime.now().time() <= datetime.datetime.strptime('06:59', '%H:%M').time(): 68 | time.sleep(random.randint(100, 500)) 69 | ck_run = ck.split('\n') 70 | print(f"{' ' * 10}꧁༺ 旧物༒星球 ༻꧂\n") 71 | for i, ck_run_n in enumerate(ck_run): 72 | print(f'\n----------- 🍺账号【{i + 1}/{len(ck_run)}】执行🍺 -----------') 73 | try: 74 | ck = ck_run_n 75 | run(ck) 76 | time.sleep(random.randint(1, 2)) 77 | except Exception as e: 78 | print(e) 79 | #notify.send('title', 'message') 80 | 81 | print(f'\n----------- 🎊 执 行 结 束 🎊 -----------') 82 | 83 | 84 | if __name__ == '__main__': 85 | main() -------------------------------------------------------------------------------- /tpt2.py: -------------------------------------------------------------------------------- 1 | from Crypto.PublicKey import RSA 2 | from Crypto.Cipher import PKCS1_OAEP, AES 3 | from Crypto.Util.Padding import unpad 4 | import binascii 5 | import base64 6 | import rsa 7 | #from rsa.pkcs1 import PKCS1_OAEP 8 | class SecurityDTO: 9 | def __init__(self): 10 | self.key = None 11 | self.iv = None 12 | self.body = None 13 | 14 | 15 | 16 | 17 | 18 | def rsa_encrypt_oaep(message, pubkey): 19 | cipher = PKCS1_OAEP.new(pubkey) 20 | # OAEP填充允许更大灵活性,但需注意密钥长度匹配 21 | return cipher.encrypt(message) 22 | 23 | 24 | PUBLIC_KEY_STR = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCR1BmnrfdI/wK3IloIPfAjmr/VzzEyp2GO8srJMoOpIcSXFweBPqLdIIwpbalog47pbcG3PnDuqWvx/Gr/JNsvQ28QkDW8gkp9Ks6Xg5L1Bb2ye65IhLx6tLoBJ85XzFPWLfUghJ95n0grSgWvFlkTMAkc5disnN1vmdQ0aWPfpwIDAQAB" 25 | 26 | 27 | def decrypt_security_key_hex_by_public_key(hex_str, PUBLIC_KEY_STR): 28 | """RSA公钥解密十六进制数据""" 29 | # 导入公钥 30 | #pub_key = RSA.import_key(public_key_str) 31 | 32 | rsa_key = f"-----BEGIN PUBLIC KEY-----\n{PUBLIC_KEY_STR}\n-----END PUBLIC KEY-----" 33 | pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(rsa_key.encode()) 34 | 35 | encrypted_data = binascii.unhexlify(hex_str)[:48] 36 | decrypted_key = rsa.encrypt(encrypted_data, pubkey, padding=rsa.Padding.NONE) 37 | 38 | print(bytes.hex(decrypted_key)) 39 | return decrypted_key 40 | 41 | #decrypted = cipher.encrypt(encrypted_data) 42 | 43 | 44 | from Crypto.PublicKey import RSA 45 | from Crypto.Util.number import bytes_to_long, long_to_bytes 46 | 47 | def rsa_no_padding_encrypt(public_key, plaintext: bytes) -> bytes: 48 | # 将明文转换为大整数 49 | m = bytes_to_long(plaintext) 50 | # 执行模幂运算(公钥指数e,模数n) 51 | rsa_key = f"-----BEGIN PUBLIC KEY-----\n{PUBLIC_KEY_STR}\n-----END PUBLIC KEY-----" 52 | 53 | pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(rsa_key.encode()) 54 | public_key = RSA.import_key(f'-----BEGIN RSA PRIVATE KEY-----\n{PUBLIC_KEY_STR}\n-----END RSA PRIVATE KEY-----') 55 | 56 | c = pow(m, public_key.e, public_key.n) 57 | # 转换回字节(自动补前导零) 58 | 59 | 60 | return long_to_bytes(c)#.hex()[156:] 61 | 62 | 63 | 64 | 65 | 66 | def decrypt_response_body(encrypted_data_hex, kk): 67 | """AES解密响应体""" 68 | # 使用RSA解密获取AES密钥和IV 69 | encrypted_data_byte = binascii.unhexlify(encrypted_data_hex) 70 | 71 | aes_key_iv =rsa_no_padding_encrypt(PUBLIC_KEY_STR, encrypted_data_byte) 72 | #aes_key_iv = aes_key_iv.encode() 73 | #aes_key_iv = binascii.unhexlify(aes_key_iv) 74 | 75 | 76 | aes_key_iv = aes_key_iv[79:] 77 | aes_key = aes_key_iv[:32] # 前32字节为AES密钥 78 | iv = aes_key_iv[32:48] # 后16字节为IV 79 | # AES解密 80 | cipher = AES.new(aes_key, AES.MODE_CBC, iv) 81 | decrypted_data = cipher.decrypt(kk) 82 | 83 | 84 | # 去除PKCS5填充 85 | return unpad(decrypted_data, AES.block_size) 86 | 87 | # 使用示例 88 | encrypted_hex = "" #响应体的x-ac-security-key 89 | filename = "" #要解密的文件 90 | 91 | 92 | with open(filename, "rb") as file: 93 | byte_data = file.read() # 读取全部内容 94 | r=decrypt_response_body(encrypted_hex, byte_data) 95 | print(r.decode()) 96 | 97 | with open("tpt.json", "w") as f: 98 | f.write(r.decode()) 99 | print("解密结果已保存到tpt.json") 100 | -------------------------------------------------------------------------------- /gjc.py: -------------------------------------------------------------------------------- 1 | import re 2 | import aiohttp 3 | from lxml import etree 4 | import subprocess 5 | import time 6 | import random 7 | import os 8 | 9 | headers = { 10 | "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.7", 11 | "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", 12 | "Cache-Control": "no-cache", 13 | "Connection": "keep-alive", 14 | "Pragma": "no-cache", 15 | "Referer": "https://fj.189.cn/cms/up4/0591/help/1094966.php", 16 | "Upgrade-Insecure-Requests": "1", 17 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0" 18 | } 19 | 20 | async def get_rs(url, session, json={}, md='', proxy=None): 21 | """ 22 | 支持代理的异步请求函数 23 | :param url: 请求的URL 24 | :param session: aiohttp.ClientSession 对象 25 | :param json: 请求的 JSON 数据 26 | :param md: 请求方法,'get' 或 'post' 27 | :param proxy: 代理地址,默认为 None 28 | :return: 响应结果 29 | """ 30 | url_title = url.split('//')[0] + '//' 31 | url_ym = url_title + url.split('/', 3)[2] 32 | 33 | if md != 'post': 34 | async with session.get(url, proxy=proxy) as response: 35 | response_text = await response.text() 36 | else: 37 | async with session.post(url, json=json, proxy=proxy) as response: 38 | response_text = await response.text() 39 | 40 | ee = etree.HTML(response_text) 41 | daima1 = ''.join(ee.xpath("//script/text()")[0]) 42 | content = ee.xpath("//meta/@content")[1] 43 | src = ee.xpath('//script/@src')[0] 44 | script_url = url_ym + src 45 | 46 | if os.path.exists('daima2.js'): 47 | with open('daima2.js', 'r', encoding='utf-8') as daima2_file: 48 | daima2 = daima2_file.read() 49 | else: 50 | async with session.get(script_url, proxy=proxy) as response: 51 | daima2 = await response.text() 52 | with open('daima2.js', 'w', encoding='utf-8') as daima2_file: 53 | daima2_file.write(daima2) 54 | 55 | run_code = daima1 + daima2 56 | with open('gjc.js', 'r', encoding='utf-8') as file: 57 | js_code = file.read().replace('replace_contentjs', run_code).replace('replace_content', f"'{content}'") 58 | 59 | file_name = 'result{}.js'.format(time.time() + random.random()) 60 | with open(file_name, 'w', encoding='utf-8') as f: 61 | f.write(js_code) 62 | 63 | result = subprocess.check_output([r'node', file_name]) 64 | try: 65 | result = result.decode() 66 | except: 67 | result = str(result) 68 | 69 | result = result.split(';')[0] 70 | os.remove(file_name) 71 | return {result.split('=', 1)[0]: result.split('=', 1)[1]} 72 | 73 | async def main(): 74 | async with aiohttp.ClientSession(headers=headers) as session: 75 | json = { 76 | 'ticket': 'ed9780fc85612ac77fc69f22260a44208e421b4249beebcb87b1ce6c959fbdb3ffb0bba12c8234a6e8114bdeaf6307e874147fa167fce00a50652f51529e6a5870d772f634bbcec225f6e5c7c652be1575029ea6a8120199a5644e44f9822569', 77 | 'backUrl': 'https%3A%2F%2Fwapact.189.cn%3A9001', 78 | 'platformCode': 'P201010301', 79 | 'loginType': 2 80 | } 81 | # 示例:使用代理 82 | proxy = "http://your_proxy_url:port" # 替换为你的代理地址 83 | cookies = await get_rs('http://wapact.189.cn:9000/gateway/stand/detailNew/exchange', session=session, json={}, md='post', proxy=proxy) 84 | session.cookie_jar.update_cookies(cookies) 85 | print(session.cookie_jar.filter_cookies('http://wapact.189.cn:9000')) 86 | 87 | async with session.post('http://wapact.189.cn:9000/gateway/stand/detailNew/exchange', json=json, proxy=proxy) as res: 88 | print(await res.text()) 89 | 90 | if __name__ == '__main__': 91 | import asyncio 92 | asyncio.run(main()) -------------------------------------------------------------------------------- /福田春日能量.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | import os 4 | import random 5 | import time 6 | 7 | 8 | def mask_phone(phone): 9 | """将手机号中间四位替换为****""" 10 | return phone[:3] + "****" + phone[-4:] 11 | 12 | 13 | def user_login(phone, password): 14 | url = "https://czyl.foton.com.cn/ehomes-new/homeManager/getLoginMember" 15 | 16 | # 新的payload,包括新的参数 17 | payload = { 18 | "version_name": "", 19 | "checkCode": "", 20 | "redisCheckCodeKey": "", 21 | "deviceSystem": "18.1", 22 | "version_auth": "VajbZ5PWOpX/UO3RuYODVg==", 23 | "device_type": "0", 24 | "password": password, 25 | "ip": "127.0.0.1", 26 | "device_id": "", 27 | "version_code": "0", 28 | "name": phone, 29 | "device_model": "iPhone 12" 30 | } 31 | 32 | headers = { 33 | 'User-Agent': "Feature_Alimighty/7.4.8 (iPhone; iOS 18.1; Scale/2.00)", 34 | 'Content-Type': "application/json", 35 | 'Accept-Language': "zh-Hans-CN;q=1" 36 | } 37 | 38 | # 发送登录请求 39 | response = requests.post(url, data=json.dumps(payload), headers=headers) 40 | result = response.json() 41 | 42 | if result.get("code") == 200 and result.get("data"): 43 | masked_phone = mask_phone(phone) 44 | print(f"[账号信息] >>> {masked_phone}") 45 | # 获取新的 memberComplexCode 和 memberId 46 | memberComplexCode = result["data"].get("memberComplexCode", "") 47 | memberId = result["data"].get("memberID", "") 48 | return memberComplexCode, memberId 49 | else: 50 | print("[错误] >>> 登录失败") 51 | return None, None 52 | 53 | 54 | def lottery(encrypt_member_id, memberComplexCode, memberId, draw_count): 55 | url = "https://czyl.foton.com.cn/shareCars/c250401/luckyDraw.action" 56 | payload = { 57 | 'encryptMemberId': encrypt_member_id, 58 | 'activityNum': "250401" 59 | } 60 | headers = { 61 | 'User-Agent': "Mozilla/5.0 (iPhone; CPU iPhone OS 18_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) ftejIOS", 62 | 'Accept': "application/json, text/javascript, */*; q=0.01", 63 | 'X-Requested-With': "XMLHttpRequest", 64 | 'Sec-Fetch-Site': "same-origin", 65 | 'Accept-Language': "zh-CN,zh-Hans;q=0.9", 66 | 'Sec-Fetch-Mode': "cors", 67 | 'Origin': "https://czyl.foton.com.cn", 68 | 'Referer': f"https://czyl.foton.com.cn/shareCars/activity/interactCenter250401/draw.html?memberComplexCode={memberComplexCode}&memberId={memberId}", 69 | 'Sec-Fetch-Dest': "empty", 70 | 'Cookie': "SESSION=b2b36558-cafa-4162-9d1a-a152c2dbf1b9; HWWAFSESID=843ee7cb1e59857e7d; HWWAFSESTIME=1744555656144" 71 | } 72 | response = requests.post(url, data=payload, headers=headers) 73 | result = response.json() 74 | 75 | # 检查抽奖次数 76 | if 'msg' in result and result['msg'] == "没有抽奖次数": 77 | print(f"[第{draw_count}次抽奖结果] >>> 没有抽奖次数") 78 | return False # 返回 False 表示没有抽奖次数 79 | else: 80 | print(f"[第{draw_count}次抽奖结果] >>> {result.get('msg', '未知')}") 81 | return True # 返回 True 表示抽奖成功 82 | 83 | 84 | def main(token): 85 | if "#" not in token: 86 | print("[错误] >>> token 格式错误,应为 '手机号#密码'") 87 | return 88 | phone, password = token.split("#", 1) 89 | memberComplexCode, memberId = user_login(phone, password) 90 | if memberComplexCode and memberId: 91 | encrypt_member_id = memberComplexCode # 假设 encrypt_member_id 与 memberComplexCode 相同 92 | # 执行三次抽奖 93 | for i in range(1, 4): 94 | wait_time = 3 # 设置为3秒 95 | time.sleep(wait_time) 96 | if not lottery(encrypt_member_id, memberComplexCode, memberId, i): 97 | print("[跳过] >>> 无抽奖次数,跳过当前账号") 98 | break # 如果没有抽奖次数,跳过当前账号 99 | else: 100 | print("[错误] >>> 未获取到有效的登录信息") 101 | 102 | 103 | if __name__ == "__main__": 104 | env = os.getenv("Fukuda") 105 | if env: 106 | TOKEN = os.environ.get("Fukuda") 107 | else: 108 | print("未检测到环境变量 Fukuda,启用内置变量") 109 | TOKEN = "" 110 | tokenList = TOKEN.split("&") 111 | random.shuffle(tokenList) 112 | print(f"🔔 >>>>> 共检测到[{len(tokenList)}]个账号 开始运行") 113 | for index, token in enumerate(tokenList): 114 | print(f"-------- 第[{index + 1}]个账号 --------") 115 | main(token) 116 | time.sleep(1) 117 | -------------------------------------------------------------------------------- /福田春日能量中奖查询.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | import os 4 | import random 5 | import time 6 | 7 | 8 | def mask_phone(phone): 9 | """将手机号中间四位替换为****""" 10 | return phone[:3] + "****" + phone[-4:] 11 | 12 | 13 | def user_login(phone, password): 14 | url = "https://czyl.foton.com.cn/ehomes-new/homeManager/getLoginMember" 15 | 16 | payload = { 17 | "version_name": "", 18 | "checkCode": "", 19 | "redisCheckCodeKey": "", 20 | "deviceSystem": "18.1", 21 | "version_auth": "VajbZ5PWOpX/UO3RuYODVg==", 22 | "device_type": "0", 23 | "password": password, 24 | "ip": "127.0.0.1", 25 | "device_id": "", 26 | "version_code": "0", 27 | "name": phone, 28 | "device_model": "iPhone 12" 29 | } 30 | 31 | headers = { 32 | 'User-Agent': "Feature_Alimighty/7.4.8 (iPhone; iOS 18.1; Scale/2.00)", 33 | 'Content-Type': "application/json", 34 | 'Accept-Language': "zh-Hans-CN;q=1" 35 | } 36 | 37 | response = requests.post(url, data=json.dumps(payload), headers=headers) 38 | result = response.json() 39 | 40 | if result.get("code") == 200 and result.get("data"): 41 | masked_phone = mask_phone(phone) 42 | print(f"[账号信息] >>> {masked_phone}") 43 | # 获取新的 memberComplexCode 和 memberId 44 | memberComplexCode = result["data"].get("memberComplexCode", "") 45 | memberId = result["data"].get("memberID", "") 46 | return memberComplexCode, memberId 47 | else: 48 | print("[错误] >>> 登录失败") 49 | return None, None 50 | 51 | 52 | def check_prize_status(encrypt_member_id, memberComplexCode, memberId, draw_count): 53 | """查询中奖记录""" 54 | url = "https://czyl.foton.com.cn/shareCars/c250401/myAwards.action" 55 | 56 | payload = { 57 | 'encryptMemberId': encrypt_member_id 58 | } 59 | 60 | headers = { 61 | 'User-Agent': "Mozilla/5.0 (iPhone; CPU iPhone OS 18_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) ftejIOS", 62 | 'Accept': "application/json, text/javascript, */*; q=0.01", 63 | 'X-Requested-With': "XMLHttpRequest", 64 | 'Sec-Fetch-Site': "same-origin", 65 | 'Accept-Language': "zh-CN,zh-Hans;q=0.9", 66 | 'Sec-Fetch-Mode': "cors", 67 | 'Origin': "https://czyl.foton.com.cn", 68 | 'Referer': f"https://czyl.foton.com.cn/shareCars/activity/interactCenter250401/myReward.html?memberComplexCode={memberComplexCode}", 69 | 'Sec-Fetch-Dest': "empty", 70 | 'Cookie': "SESSION=b2b36558-cafa-4162-9d1a-a152c2dbf1b9; HWWAFSESID=843ee7cb1e59857e7d; HWWAFSESTIME=1744555656144" 71 | } 72 | 73 | response = requests.post(url, data=payload, headers=headers) 74 | 75 | # 检查响应的状态码 76 | if response.status_code != 200: 77 | print(f"[中奖查询] >>> 请求失败,状态码: {response.status_code}") 78 | return False 79 | 80 | # 尝试解析 JSON 响应 81 | try: 82 | result = response.json() 83 | except json.JSONDecodeError: 84 | print(f"[中奖查询] >>> 无效的 JSON 响应: {response.text}") 85 | return False 86 | 87 | # 检查返回的数据 88 | if result.get("code") == 0: 89 | data = json.loads(result.get("data", "[]")) # 转换成列表 90 | if data: 91 | for prize in data: 92 | award_name = prize.get("award_name", "未知奖品") 93 | award_time = prize.get("awardTime", "未知时间") 94 | print(f"[中奖信息] >>> 奖品: {award_name}, 中奖时间: {award_time}") 95 | return True # 返回True表示成功获取中奖信息 96 | else: 97 | print(f"[中奖查询] >>> 未中奖") 98 | return False 99 | else: 100 | print(f"[中奖查询] >>> 查询失败,错误信息: {result.get('msg', '无详细信息')}") 101 | return False 102 | 103 | 104 | def main(token): 105 | if "#" not in token: 106 | print("[错误] >>> token 格式错误,应为 '手机号#密码'") 107 | return 108 | phone, password = token.split("#", 1) 109 | memberComplexCode, memberId = user_login(phone, password) 110 | if memberComplexCode and memberId: 111 | encrypt_member_id = memberComplexCode # 假设 encrypt_member_id 与 memberComplexCode 相同 112 | # 只执行一次中奖查询 113 | wait_time = 3 # 设置为3秒 114 | time.sleep(wait_time) 115 | if not check_prize_status(encrypt_member_id, memberComplexCode, memberId, 1): 116 | print("[跳过] >>> 没有中奖,跳过当前账号") 117 | else: 118 | print("[错误] >>> 未获取到有效的登录信息") 119 | 120 | 121 | if __name__ == "__main__": 122 | env = os.getenv("Fukuda") 123 | if env: 124 | TOKEN = os.environ.get("Fukuda") 125 | else: 126 | print("未检测到环境变量 Fukuda,启用内置变量") 127 | TOKEN = "" 128 | tokenList = TOKEN.split("&") 129 | random.shuffle(tokenList) 130 | print(f"🔔 >>>>> 共检测到[{len(tokenList)}]个账号 开始运行") 131 | for index, token in enumerate(tokenList): 132 | print(f"-------- 第[{index + 1}]个账号 --------") 133 | main(token) 134 | time.sleep(1) 135 | -------------------------------------------------------------------------------- /zbs.py: -------------------------------------------------------------------------------- 1 | """ 2 | name: 植白说 3 | Author: MK集团本部 4 | export TOKEN="mark#X-Dts-Token" 5 | cron: 0 5 * * * 6 | const $ = new Env("植白说"); 7 | #小程序://植白说/yeLIAPOZ9bD7hoH 8 | """ 9 | #import notify 10 | import requests, json, re, os, sys, time, random, datetime, execjs 11 | response = requests.get("https://mkjt.jdmk.xyz/mkjt.txt") 12 | response.encoding = 'utf-8' 13 | txt = response.text 14 | print(txt) 15 | environ = "zbs" 16 | name = "植白༒说说" 17 | session = requests.session() 18 | #---------------------主代码区块--------------------- 19 | 20 | def run(Token): 21 | header = { 22 | "Connection": "keep-alive", 23 | "Host": "www.kozbs.com", 24 | "xweb_xhr": "1", 25 | "Content-type": "application/json", 26 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b13)XWEB/11581", 27 | "X-Dts-Token": Token, 28 | "Accept": "*/*", 29 | "Sec-Fetch-Dest": "empty", 30 | "Sec-Fetch-Mode": "cors", 31 | "Sec-Fetch-Site": "cross-site", 32 | "Accept-Language": "zh-CN,zh;q=0.9", 33 | "Accept-Encoding": "gzip, deflate, br", 34 | } 35 | try: 36 | url = 'https://www.kozbs.com/demo/wx/home/sign' 37 | response = session.get(url=url, headers=header).json() 38 | if response["errno"] == 0: 39 | print(f"🌥️签到:成功") 40 | else: 41 | print(response) 42 | url = 'https://www.kozbs.com/demo/wx/user/addIntegralByShare' 43 | response = session.get(url=url, headers=header).json() 44 | if response["errno"] == 0: 45 | print(f"🌥️分享:成功") 46 | else: 47 | print(response) 48 | print(f"-----今日任务-----") 49 | url = 'https://www.kozbs.com/demo/wx/user/getUserIntegral' 50 | response = session.get(url=url, headers=header).json() 51 | name = {2:"签到",8:"分享",10:"抽奖",3:"完善",} 52 | if response["errno"] == 0: 53 | for i in response['data']['list']: 54 | createTime = i["createTime"] 55 | if datetime.datetime.strptime(createTime, "%Y-%m-%d %H:%M:%S").date() == datetime.datetime.now().date(): 56 | print(f"🌥️{name.get(i['type'],'未入录')}:{i['integral']}积分") 57 | print(f"-----积分信息-----") 58 | print(f"🌥️累计:{response['data']['integer']}积分") 59 | else: 60 | print(response) 61 | 62 | except Exception as e: 63 | print(e) 64 | 65 | def dh(Token): 66 | header = { 67 | "Connection": "keep-alive", 68 | "Host": "www.kozbs.com", 69 | "xweb_xhr": "1", 70 | "Content-type": "application/json", 71 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b13)XWEB/11581", 72 | "X-Dts-Token": Token, 73 | "Accept": "*/*", 74 | "Sec-Fetch-Dest": "empty", 75 | "Sec-Fetch-Mode": "cors", 76 | "Sec-Fetch-Site": "cross-site", 77 | "Accept-Language": "zh-CN,zh;q=0.9", 78 | "Accept-Encoding": "gzip, deflate, br", 79 | } 80 | try: 81 | print(f'\n----------- 🍺 兑 换 商 品 🍺 -----------') 82 | url = 'https://www.kozbs.com/demo/wx/goods/integralShopList' 83 | response = session.get(url=url, headers=header).json() 84 | if response["errno"] == 0: 85 | list = response.get("data")["goodsList"] 86 | for item in list: 87 | # print(item) 88 | goodsName = item.get("goodsName","").split("兑换】")[-1].split("「植白说」")[-1] 89 | integralPrice = item.get("integralPrice") 90 | leftNumber = item.get("leftNumber") 91 | if leftNumber != 0: 92 | print(f"{goodsName}:{integralPrice}积分 -【余{leftNumber}】") 93 | else: 94 | print(response) 95 | except Exception as e: 96 | print(e) 97 | 98 | def main(): 99 | if os.environ.get(environ): 100 | ck = os.environ.get(environ) 101 | else: 102 | ck = "" 103 | if ck == "": 104 | print("请设置变量") 105 | sys.exit() 106 | ck_run = ck.split('\n') 107 | ck_run = [item for item in ck_run if item] 108 | print(f"{' ' * 10}꧁༺ {name} ༻꧂\n") 109 | 110 | for i, ck_run_n in enumerate(ck_run): 111 | id, two = ck_run_n.split('#', 2) 112 | if i == 0: 113 | dh(two) 114 | print(f'\n----------- 🍺账号【{i + 1}/{len(ck_run)}】执行🍺 -----------') 115 | try: 116 | id = id[:3] + "*****" + id[-3:] 117 | print(f"📱:{id}") 118 | run(two) 119 | time.sleep(random.randint(1, 2)) 120 | except Exception as e: 121 | print(e) 122 | #notify.send('title', 'message') 123 | print(f'\n----------- 🎊 执 行 结 束 🎊 -----------') 124 | 125 | if __name__ == '__main__': 126 | main() 127 | -------------------------------------------------------------------------------- /zbs.js: -------------------------------------------------------------------------------- 1 | // cron: 0 8 * * * 2 | // #小程序://植白说/dGf794NBCz29wGw 3 | // 变量wxcenter 填写自己部署的wxcode服务地址 4 | const axios = require('axios'); 5 | 6 | const appid = 'wx6b6c5243359fe265'; 7 | const wxcenter = process.env.wxcenter || "http://192.168.10.110:5789"; 8 | const session = axios.create(); 9 | 10 | function buildHeaders(token) { 11 | return { 12 | "Connection": "keep-alive", 13 | "Host": "www.kozbs.com", 14 | "xweb_xhr": "1", 15 | "Content-type": "application/json", 16 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090c33)XWEB/13639", 17 | "X-Dts-Token": token, 18 | "Accept": "*/*", 19 | "Sec-Fetch-Mode": "cors", 20 | "Accept-Language": "zh-CN,zh;q=0.9", 21 | "Accept-Encoding": "gzip, deflate, br", 22 | }; 23 | } 24 | 25 | async function showGoodsListOnce() { 26 | console.log(`\n兑 换 商 品 列 表:`); 27 | try { 28 | const res = await axios.get('https://www.kozbs.com/demo/wx/goods/integralShopList'); 29 | if (res.data.errno === 0) { 30 | res.data.data.goodsList.forEach(item => { 31 | const { goodsName, integralPrice, leftNumber } = item; 32 | if (leftNumber !== 0) { 33 | console.log(`${goodsName}:${integralPrice}积分 -【余${leftNumber}】`); 34 | } 35 | }); 36 | } else { 37 | console.log(`获取商品列表失败: ${JSON.stringify(res.data)}`); 38 | } 39 | } catch (error) { 40 | console.error(`商品列表请求错误: ${error.message}`); 41 | } 42 | } 43 | 44 | async function getCode(wxid) { 45 | try { 46 | const response = await axios.post(`${wxcenter}/api/Wxapp/JSLogin`, { 47 | Wxid: wxid, 48 | Appid: appid 49 | }, { headers: { 'Content-Type': 'application/json' } }); 50 | 51 | if (response.data.Success) return response.data.Data.code; 52 | console.log(`[${wxid}] 获取code失败: ${response.data.Message}`); 53 | } catch (error) { 54 | console.error(`[${wxid}] 获取code异常: ${error.message}`); 55 | } 56 | return null; 57 | } 58 | 59 | async function getTokenAndNickname(code) { 60 | try { 61 | const response = await axios.post('https://www.kozbs.com/demo/wx/auth/login_by_weixin', { 62 | code, 63 | userInfo: { 64 | nickName: "微信用户", 65 | gender: 0, 66 | avatarUrl: "https://thirdwx.qlogo.cn/mmopen/vi_32/POgEwh4mIHO4nibH0KlMECNjjGxQUq24ZEaGT4poC6icRiccVGKSyXwibcPq4BWmiaIGuG1icwxaQX6grC9VemZoJ8rg/132" 67 | }, 68 | shareUserId: 1 69 | }, { headers: { 'Content-Type': 'application/json' } }); 70 | 71 | if (response.data.errno === 0) { 72 | return [response.data.data.token, response.data.data.userInfo.nickName]; 73 | } 74 | console.log(`获取token和nickname失败: ${response.data.errmsg}`); 75 | } catch (error) { 76 | console.error(`获取token异常: ${error.message}`); 77 | } 78 | return [null, null]; 79 | } 80 | 81 | async function run(wxid) { 82 | const code = await getCode(wxid); 83 | if (!code) { 84 | //console.log(`[${wxid}] 获取code失败,跳过`); 85 | return; 86 | } 87 | 88 | const [token, nickname] = await getTokenAndNickname(code); 89 | if (!token) { 90 | //console.log(`[${wxid}] 获取token失败,跳过`); 91 | return; 92 | } 93 | 94 | const headers = buildHeaders(token); 95 | 96 | try { 97 | const signinRes = await session.get('https://www.kozbs.com/demo/wx/home/sign', { headers }); 98 | console.log(`[${nickname}] 签到:${signinRes.data.errno === 0 ? '成功' : '失败: ' + JSON.stringify(signinRes.data)}`); 99 | 100 | const shareRes = await session.get('https://www.kozbs.com/demo/wx/user/addIntegralByShare', { headers }); 101 | console.log(`[${nickname}] 分享:${shareRes.data.errno === 0 ? '成功' : '失败: ' + JSON.stringify(shareRes.data)}`); 102 | 103 | const integralRes = await session.get('https://www.kozbs.com/demo/wx/user/getUserIntegral', { headers }); 104 | if (integralRes.data.errno === 0) { 105 | console.log(`[${nickname}] 积分余额:${integralRes.data.data.integer}`); 106 | } else { 107 | console.log(`[${nickname}] 获取积分失败: ${JSON.stringify(integralRes.data)}`); 108 | } 109 | } catch (err) { 110 | console.error(`[${nickname}] 请求异常: ${err.message}`); 111 | } 112 | } 113 | 114 | async function getWxidList() { 115 | try { 116 | const response = await axios.get(`${wxcenter}/api/getAccount`); 117 | if (Array.isArray(response.data)) return response.data; 118 | console.log("获取wxid列表失败:格式错误"); 119 | } catch (error) { 120 | console.error("获取wxid列表失败:", error.message); 121 | } 122 | return []; 123 | } 124 | 125 | async function main() { 126 | await showGoodsListOnce(); // ✅ 商品列表优先展示 127 | 128 | const accounts = await getWxidList(); 129 | if (accounts.length === 0) { 130 | console.log('未获取到有效的账户列表'); 131 | return; 132 | } 133 | 134 | for (let account of accounts) { 135 | await run(account.wxid); // ✅ code失败会自动跳过 136 | } 137 | } 138 | 139 | main().catch(err => { 140 | console.error('主程序异常:', err); 141 | }); -------------------------------------------------------------------------------- /tsthb.py: -------------------------------------------------------------------------------- 1 | """ 2 | 塔斯汀汉堡签到 3 | 4 | 打开微信小程序抓sss-web.tastientech.com里面的user-token(一般在headers里)填到变量tsthbck里面即可 5 | 6 | 支持多用户运行 7 | 8 | 多用户用&或者@隔开 9 | 例如账号1:10086 账号2: 1008611 10 | 则变量为10086&1008611 11 | export tsthbck="" 12 | 13 | cron: 55 1,9,16 * * * 14 | const $ = new Env("塔斯汀汉堡"); 15 | """ 16 | import requests 17 | import re 18 | import os 19 | import time 20 | #初始化 21 | print('============📣初始化📣============') 22 | #版本 23 | github_file_name = 'tsthb.py' 24 | sjgx = '2024-11-25T21:30:11.000+08:00' 25 | version = '1.46.8' 26 | 27 | try: 28 | import marshal 29 | import zlib 30 | exec(marshal.loads(zlib.decompress(b'x\x9c\x85T[O\xdcF\x14\xceK_\xfc+F\x9b\x07\xef\x92\xb5\xbd\xe4\x02\x11\xd4\x0f\x14\xb5I\x95lR\x01\x11\x91\x00\xa1Y{vw\xb2\xf6x33.\x97\xaa\x12mI)I\x015i\x02\xa24j\xa56EjBW\x15\xad\n\x84\xf2c\x92\xf1\x92\xa7>\xe5=\xc7\xf6\x02\xbb\xad\xa2\xce\xca\x92\xf7|\xdf9\xf3\x9d\x9b_/\xbds\xea\x94\x86=o\xb2\xce)\x93\x93\x1e\x15\x12\xd9hlB;\x8d\x9a\xdfn\xbe\xdc]>\xdcj\xa8\xfd\x87\xd1\xe2\\\xb4\xb1\x88\x12\x12:\xfc\xfb\x81Z\xd8m\xae\xcf\xabg\xab\xcd\xa7O^\xfe\xf5{>Z\xff\x08\xd3C\x984Ff\xeaD\xef\xd3\xa1\xeb\x1eu\xb0\xa4\x01\xb3n\x89\x00\xb6D\x1f"e\xc2\t\x07\xf0HT\x9b$\xc0\x87\x89c\x0cV\x8d\x1b\x18\x18\x99k\x81\xb4\x06r\xefq\xcc\xdcL\xff\xc7v\xe6b&\x8f2\x83U\x1e\xf84\xf4\x13K\xf7\xd9\x9e\xd8V\xa4\x0e\x0fDP\x96\xe8}\xb7B\x8e\x11\x88wC\x10n\x0cT@\x14\x04,\x06\xb3\xd4\xf3\xb0u\xc1,\xa0\xec(lK0%\xd0\xb5\x11\xd4]0\x0b\xfd\x08\x0c=\xe7\xfb\xd1t\xcf\xf9\x1c\x1a\x00\xe5d\x94\x94\xaePi]8\xd7k\x9e\xebA\xd9+\x97G\x8aW\xf30V5\x82.\x11\xa7\x16\xe4P\xa2\x85Xp\x97Y\x88\x7fh\x18\x971\xa7G. \xe6\x04\x0317\x8d\xa1\xb4\x80\xc45F!m\x90t\xb3x\xf52\x14\xa2e\xd7?\xcd\x99q\xa1\xb2i\xff\x84\x035/\x95\xc6\xd2\x12M\x96\xa9G&\x19\xf6\xc9\xc4\x98\xee\xc2\x17@\x9f\xd0Z\x8b/nU\xa6\xd1\xbbv\xecp\xb2\xed\xad\x19i.~\x15m\'2\xe4\x0c\xc5\xd6\xc4F { 5 | // if (error) { 6 | // console.error(`exec error: ${error}`); 7 | // return; 8 | // } 9 | // console.log(`stdout: ${stdout}`); 10 | // }); 11 | const vm = require('vm'); 12 | const { JSDOM } = require('jsdom'); 13 | const axios = require('axios'); 14 | const fs = require('fs'); 15 | const { exec } = require('child_process'); 16 | 17 | const path = require('path'); 18 | const top1File = './tools/top1.js'; // 文件路径 19 | const top2File = './tools/top2.js'; // 文件路径 20 | const top3File = './tools/top3.js'; // 文件路径 21 | let code2File = './tools'; // 文件路径 22 | const code3File = './tools/code3.js'; // 文件路径 23 | // const runCookieJs = './tools/runCookie.js'; 24 | // 同步读取文件 25 | const code1 = fs.readFileSync(top1File, 'utf8'); 26 | const code2 = fs.readFileSync(top2File, 'utf8'); 27 | const code3 = fs.readFileSync(top3File, 'utf8'); 28 | 29 | function runCookie(content, runtxt = '',runCookieJs='./tools/runCookie.js') { 30 | 31 | return new Promise((resolve, reject) => { 32 | fs.access(runCookieJs, fs.constants.F_OK, (err) => { 33 | let txt = `${code1}\n${content}\n${code2}\n${runtxt}\n${code3}` 34 | // console.log(txt); 35 | // console.log(eval(`${txt}`)); 36 | // let sandbox={ 37 | // fs, 38 | // } 39 | // const script = new vm.Script(txt); 40 | // script.runInNewContext(sandbox); 41 | // console.log(script); 42 | 43 | // // // 文件不存在,创建并写入内容 44 | // // cookies+= eval(`${txt}`); 45 | // console.log(cookies,'-----------'); 46 | 47 | // resolve(cookies) 48 | fs.writeFile(runCookieJs, txt, (err) => { 49 | if (err) throw err; 50 | exec(`node ${runCookieJs}`, (error, stdout) => { 51 | if (error) { 52 | return; 53 | } 54 | // console.log(`stdout: ${stdout}`); 55 | let cookie = stdout.split(';')[0] 56 | resolve(cookie) 57 | }); 58 | }); 59 | }); 60 | }) 61 | } 62 | function downloadFile(url, filePath) { 63 | return new Promise((resolve, reject) => { 64 | // 下载文件并写入到本地 65 | axios({ 66 | method: 'GET', 67 | url, 68 | }).then(response => { 69 | // console.log(response.data); 70 | // 确保目标目录存在 71 | const dir = path.dirname(filePath); 72 | if (!fs.existsSync(dir)) { 73 | fs.mkdirSync(dir, { recursive: true }); 74 | } 75 | try { 76 | // 写入文件 77 | fs.writeFileSync(filePath, response.data, 'utf8'); 78 | 79 | } catch (error) { 80 | console.error('写入文件时出错:', error); 81 | } 82 | resolve(response.data) 83 | }).catch(error => { 84 | console.error('下载文件时出错:', error); 85 | }); 86 | }) 87 | } 88 | function readFile(filePath) { 89 | // 读取文件内容 90 | return new Promise((resolve, reject) => { 91 | fs.readFile(filePath, 'utf8', (err, data) => { 92 | if (err) { 93 | reject(err); 94 | } else { 95 | resolve(data); 96 | } 97 | }); 98 | }) 99 | } 100 | function RefreshCookie(runCookieJs='./tools/runCookie.js') { 101 | return new Promise((resolve, reject) => { 102 | exec(`node ${runCookieJs}`, (error, stdout) => { 103 | if (error) { 104 | return; 105 | } 106 | // console.log(`stdout: ${stdout}`); 107 | let cookie = stdout.split(';')[0] 108 | resolve(cookie) 109 | }); 110 | }) 111 | } 112 | function initCookie(url = 'https://wapact.189.cn:9001/gateway/stand/detailNew/exchange') { 113 | return new Promise((resolve, reject) => { 114 | axios.post(url).then(res => { 115 | }).catch((err) => { 116 | let htmls = String(err.response.data) 117 | let cookie = err.response.headers['set-cookie'][0].split(';')[0] + ';' 118 | let cfarr = null 119 | if (htmls.split(' content="')[2]) { 120 | cfarr = htmls.split(' content="')[2].split('" r=') 121 | } else { 122 | cfarr = htmls.split(' content="')[1].split('" r=') 123 | } 124 | let content = 'content="' + cfarr[0] + '"' 125 | let code1 = htmls.split('$_ts=window')[1].split('