├── Babycare.py ├── CHERWIN_TOOLS.py ├── DQ点单.js ├── GacmotorCookies.json ├── IP代理自动加白名单.py ├── KSOEUR.py ├── README.md ├── Ruishu.py ├── Utils.js ├── bjxd.js ├── breo.py ├── check.sample.toml ├── config.toml ├── gacmotor.js ├── sendNotify.js ├── this官方商城.js ├── tl.json ├── tl.txt ├── tlbb.json ├── topspace小程序.py ├── vx麦斯威尔福利社.js ├── xbox俱乐部.js ├── zippo会员签到.js ├── 七彩虹商城小程序.js ├── 七点五饮用天然矿泉水.py ├── 万家乐.py ├── 东方棘市.py ├── 东方烟草报App.js ├── 中兴商城.py ├── 丰信.js ├── 临期批发_.py ├── 产地严选小程序.py ├── 体彩通杀.js ├── 全棉时代.js ├── 兴攀农场.js ├── 冷酸灵牙膏.js ├── 勇闯天涯superX.js ├── 华硕商城每日抽奖.js ├── 卡士会员.js ├── 卡池.js ├── 古井贡酒.js ├── 叭卦优选.py ├── 叮当快药.js ├── 品赞代理.js ├── 国乐酱酒.js ├── 图虫.js ├── 天翼云盘.py ├── 奇点积分.py ├── 奇瑞汽车.js ├── 好宝贝.py ├── 娃哈哈-敢迈.js ├── 媓钻小程序.js ├── 安徽电信.js ├── 宝骏汽车视频.py ├── 富士instax玩拍由我俱乐部.js ├── 小天鹅.py ├── 小猴工具小程序.js ├── 小米社区小程序签到.py ├── 小紫.py ├── 巨量ip_Sign.py ├── 广汽埃安.js ├── 得无开源.js ├── 微信小程序虔金E站.js ├── 心喜小程序.js ├── 慕思.js ├── 所有女生小程序.js ├── 捷安特骑行.py ├── 掌心临海.js ├── 无锡观察.js ├── 日清体验馆.js ├── 星火学院新.py ├── 星芽短剧脚本(解密版).js ├── 望潮.js ├── 望潮py版.py ├── 望潮代理版.py ├── 植物星球.js ├── 欢太商城.py ├── 毛铺草本荟.js ├── 波司登.js ├── 浓五的酒馆.py ├── 海天美味馆.js ├── 海尔.js ├── 游侠网.js ├── 滴滴果园.py ├── 潇洒桐庐.js ├── 点点兼职.js ├── 爱奇艺.py ├── 爱奇艺会员.js ├── 爱玛会员俱乐部.js ├── 爷爷不泡茶.js ├── 牙博士口腔微商城.js ├── 瑷尔博士.js ├── 电信营业厅任务.js ├── 电信金豆换话费.py ├── 番茄免费小说.js ├── 百田网.js ├── 盖瑞特后市场.js ├── 福田e家.js ├── 福袋生活.js ├── 移动云盘.py ├── 第一电动.py ├── 米哈游.js ├── 红旗智联.js ├── 统一.js ├── 罗技粉丝俱乐部.js ├── 美孚.js ├── 联想app乐豆.js ├── 联想延保签到.py ├── 联通获取ck.py ├── 胖乖生活.py ├── 腾讯视频.js ├── 臭宝乐园.js ├── 艾石头.py ├── 葫芦侠签到.py ├── 蜜雪冰城.py ├── 蜜雪秒杀.py ├── 西施眼.js ├── 起飞线.js ├── 达美乐.py ├── 达美乐短信认证.py ├── 逑美And薇诺娜专柜小程序.js ├── 途虎养车.js ├── 逢三得利吧.js ├── 酷瓜.py ├── 金徽酒会员.py ├── 金杜丹.py ├── 长虹美菱.py ├── 雀巢会员俱乐部.js ├── 霸王茶几.py ├── 霸王茶姬.py ├── 顺丰速运.py ├── 顾家家居.js └── 高济健康.js /Babycare.py: -------------------------------------------------------------------------------- 1 | #by:哆啦A梦 2 | #TL库 3 | #入口:小程序-Babycare官方旗舰店 4 | #抓包api.bckid.com.cn域名下的authorization,多账号换行分割 5 | 6 | import os 7 | import requests 8 | import json 9 | 10 | # 从环境变量中获取 token,支持多账号换行分割 11 | tokens = os.environ.get('Babycare', '').split('\n') 12 | 13 | # 定义 URL 14 | url = "https://api.bckid.com.cn/operation/front/bonus/userSign/v3/sign" 15 | primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt" 16 | backup_url = "https://tfapi.cn/TL/tl.json" 17 | 18 | # 定义请求头 19 | headers = { 20 | "Host": "api.bckid.com.cn", 21 | "content-length": "2", 22 | "content-type": "application/json", 23 | "charset": "utf-8", 24 | "referer": "https://servicewechat.com/wxab5642d7bced2dcc/447/page-frame.html", 25 | "accept-encoding": "gzip, deflate, br" 26 | } 27 | 28 | def print_divider(): 29 | print("\n" + "=" * 35) 30 | 31 | def print_account_info(account_num, token): 32 | print_divider() 33 | print(f"🤖 正在为账号 {account_num} 签到...") 34 | print_divider() 35 | 36 | def print_sign_success(account_num, result): 37 | print_divider() 38 | print(f"🎉 账号 {account_num} 签到成功!") 39 | print(f"💪 最大连续签到天数: {result.get('maxSignDay', '信息获取失败')}") 40 | print(f"📅 当前连续签到天数: {result.get('signDaysCount', '信息获取失败')}") 41 | print(f"🎁 抽奖机会: {result.get('lotteryCount', '信息获取失败')}") 42 | print_divider() 43 | 44 | def print_already_signed(account_num): 45 | 46 | print(f"👻 账号 {account_num} 今天已经签到过了,请明天再来!") 47 | print_divider() 48 | 49 | def print_sign_failed(account_num, message): 50 | 51 | print(f"❌ 账号 {account_num} 签到失败!错误信息: {message}") 52 | print_divider() 53 | 54 | def print_empty_token(account_num): 55 | 56 | print(f"⚠️ 账号 {account_num} 的 token 为空,跳过") 57 | print_divider() 58 | 59 | def print_request_error(account_num, error): 60 | 61 | print(f"⚠️ 账号 {account_num} 请求异常: {error}") 62 | print_divider() 63 | 64 | def get_proclamation(): 65 | try: 66 | print("\n" + "=" * 35) 67 | print("📢 公告信息") 68 | 69 | 70 | response = requests.get(primary_url, timeout=10) 71 | if response.status_code == 200: 72 | print(response.text) 73 | print("=" * 35 + "\n") 74 | print("公告获取成功,开始执行任务...\n") 75 | return 76 | else: 77 | print(f"尝试获取公告,状态码: {response.status_code}, 尝试备用链接...") 78 | except requests.exceptions.RequestException as e: 79 | print(f"获取公告时发生错误: {e}, 尝试备用链接...") 80 | 81 | try: 82 | response = requests.get(backup_url, timeout=10) 83 | if response.status_code == 200: 84 | print(response.text) 85 | print("=" * 35 + "\n") 86 | print("公告获取成功,开始执行任务...\n") 87 | else: 88 | print(f"⚠️ 获取公告失败,状态码: {response.status_code}") 89 | except requests.exceptions.RequestException as e: 90 | print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。") 91 | 92 | print_divider() 93 | print("🚀 开始执行签到任务") 94 | 95 | 96 | get_proclamation() 97 | 98 | # 添加账号编号提示 99 | for idx, token in enumerate(tokens, start=1): 100 | if not token.strip(): 101 | print_empty_token(idx) 102 | continue 103 | 104 | print_account_info(idx, token) 105 | headers["authorization"] = token.strip() 106 | 107 | try: 108 | response = requests.post(url, headers=headers, data=json.dumps({})) 109 | 110 | if response.status_code == 200: 111 | json_response = response.json() 112 | if json_response.get("code") == "200": 113 | print_sign_success(idx, json_response.get('body', {})) 114 | elif json_response.get("code") == "400": 115 | print_already_signed(idx) 116 | else: 117 | print_sign_failed(idx, json_response.get("message", "未知错误")) 118 | else: 119 | print_sign_failed(idx, f"HTTP状态码: {response.status_code}") 120 | except requests.exceptions.RequestException as e: 121 | print_request_error(idx, e) 122 | except json.JSONDecodeError: 123 | print_sign_failed(idx, "响应内容不是有效的 JSON 格式") 124 | 125 | 126 | print("🏆 所有账号签到任务完成!") 127 | print_divider() 128 | -------------------------------------------------------------------------------- /DQ点单.js: -------------------------------------------------------------------------------- 1 | /* 2 | 微信小程序DQ点单安卓版 3 | 抓包wechat.dairyqueen.com.cn域名下的cookie 4 | 变量名=dqdd 5 | 多账号用&分开或者添加多个变量名 6 | 有问题联系3288588344 7 | 频道:https://pd.qq.com/s/672fku8ge 8 | 9 | 长期套餐大额流量电话卡办理地址:https://hk.yunhaoka.cn/#/pages/micro_store/index?agent_id=669709 10 | 11 | */ 12 | 13 | 14 | const axios = require('axios'); 15 | const dqdd = process.env.dqdd.split('&'); 16 | 17 | const url = 'https://wechat.dairyqueen.com.cn/memSignIn/signIn'; 18 | 19 | async function fetchSignInfo(cookie, accountIndex) { 20 | const headers = { 21 | 'Host': 'wechat.dairyqueen.com.cn', 22 | 'Connection': 'keep-alive', 23 | 'Content-Length': '0', 24 | 'charset': 'utf-8', 25 | 'cookie': dqdd, 26 | 'channel': '202', 27 | '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.122 Mobile Safari/537.36 XWEB/1260059 MMWEBSDK/20240501 MMWEBID/3628 MicroMessenger/8.0.50.2701(0x28003252) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android', 28 | 'content-type': 'application/json', 29 | 'Accept-Encoding': 'gzip,compress,br,deflate', 30 | 'tenant': '1', 31 | 'Referer': 'https://servicewechat.com/wx22e5ce7c766b4b78/149/page-frame.html' 32 | }; 33 | 34 | try { 35 | const response = await axios.post(url, {}, { headers: headers }); 36 | if (response.data.code === 200 && response.data.message === 'success') { 37 | console.log(`账号${accountIndex}签到成功`); 38 | return { success: true, message: `账号${accountIndex}签到成功` }; 39 | } else { 40 | console.log(`账号${accountIndex}签到失败`); 41 | return { success: false, message: `账号${accountIndex}签到失败` }; 42 | } 43 | } catch (error) { 44 | console.error(error); 45 | return { success: false, message: error.message }; 46 | } 47 | } 48 | 49 | dqdd.forEach((dqdd, index) => { 50 | fetchSignInfo(dqdd, index + 1).then(result => { 51 | console.log(result); 52 | }); 53 | }); 54 | -------------------------------------------------------------------------------- /GacmotorCookies.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "AT": "", 4 | "RT": "" 5 | }, 6 | { 7 | "AT": "", 8 | "RT": "" 9 | } 10 | ] 11 | -------------------------------------------------------------------------------- /IP代理自动加白名单.py: -------------------------------------------------------------------------------- 1 | # cron: 10 */2 * * * 2 | # new Env('更新IP代理白名单'); 3 | #有问题联系3288588344 4 | #频道:https://pd.qq.com/s/672fku8ge 5 | 6 | #长期套餐大额流量电话卡办理地址:https://hk.yunhaoka.cn/#/pages/micro_store/index?agent_id=669709 7 | 8 | 9 | import requests 10 | import hashlib 11 | import urllib.parse 12 | 13 | 14 | JULIANG_KEY = '' # 填入巨量的 Key 15 | JULIANG_TRADE_NO = '' # 填入巨量的 Trade No 16 | XK_APIKEY = '' # 填入星空的 API Key 17 | XK_SIGN = '' # 填入星空的 Sign 18 | XIEQU_UID = '' # 填入携趣的 UID 19 | XIEQU_UKEY = '' # 填入携趣的 UKEY 20 | 21 | 22 | class SignKit: 23 | 24 | @staticmethod 25 | def md5_sign(params, secret): 26 | sign_content = SignKit.get_sign_content(params) 27 | return hashlib.md5((sign_content + '&key=' + secret).encode('utf-8')).hexdigest() 28 | 29 | @staticmethod 30 | def get_sign_content(params): 31 | params.pop('sign', None) # 删除 sign 32 | sorted_params = sorted(params.items()) 33 | sign_content = '&'.join([f"{k}={str(v)}" for k, v in sorted_params if str(v) is not None and not str(v).startswith('@')]) 34 | return sign_content 35 | 36 | def get_current_ip(): 37 | response = requests.get('https://myip.ipip.net/json') 38 | data = response.json() 39 | return data['data']['ip'] 40 | 41 | def update_juliang_white_list(ip, JULIANG_KEY, JULIANG_TRADE_NO): 42 | if JULIANG_KEY and JULIANG_TRADE_NO: 43 | params = { 44 | 'new_ip': ip, 45 | 'reset': '1', 46 | 'trade_no': JULIANG_TRADE_NO 47 | } 48 | sign = SignKit.md5_sign(params, JULIANG_KEY) 49 | query_string = urllib.parse.urlencode(params) + "&sign=" + sign 50 | 51 | url = f'http://v2.api.juliangip.com/dynamic/replaceWhiteIp?{query_string}' 52 | response = requests.get(url) 53 | return response.text 54 | 55 | def update_xk_white_list(ip, XK_APIKEY, XK_SIGN): 56 | if XK_APIKEY and XK_SIGN: 57 | url = f'http://api2.xkdaili.com/tools/XApi.ashx?apikey={XK_APIKEY}&type=addwhiteip&sign={XK_SIGN}&flag=8&ip={ip}' 58 | response = requests.get(url) 59 | return response.text 60 | 61 | def update_xiequ_white_list(ip, XIEQU_UID, XIEQU_UKEY): 62 | if XIEQU_UID and XIEQU_UKEY: 63 | url = f'http://op.xiequ.cn/IpWhiteList.aspx?uid={XIEQU_UID}&ukey={XIEQU_UKEY}&act=get' 64 | response = requests.get(url) 65 | data = response.text 66 | arr = data.split(',') 67 | if ip not in arr: 68 | requests.get(f'http://op.xiequ.cn/IpWhiteList.aspx?uid={XIEQU_UID}&ukey={XIEQU_UKEY}&act=del&ip=all') 69 | response = requests.get(f'http://op.xiequ.cn/IpWhiteList.aspx?uid={XIEQU_UID}&ukey={XIEQU_UKEY}&act=add&ip={ip}') 70 | return '更新xiequ白名单成功' if response.status_code == 200 else '更新xiequ白名单出错' 71 | else: 72 | return '携趣白名单ip未变化' 73 | 74 | 75 | def main(): 76 | ip = get_current_ip() 77 | print('当前ip地址:', ip) 78 | 79 | print('更新巨量白名单结果:', update_juliang_white_list(ip, JULIANG_KEY, JULIANG_TRADE_NO)) 80 | print('更新星空白名单结果:', update_xk_white_list(ip, XK_APIKEY, XK_SIGN)) 81 | print('更新携趣白名单结果:', update_xiequ_white_list(ip, XIEQU_UID, XIEQU_UKEY)) 82 | 83 | if __name__ == "__main__": 84 | main() 85 | -------------------------------------------------------------------------------- /KSOEUR.py: -------------------------------------------------------------------------------- 1 | #入口:小程序KSOEUR女装 2 | #抓包域名smp-api.iyouke.com下Authorization值,多账号换行分割 3 | #by:哆啦A梦 4 | 5 | 6 | import os 7 | import requests 8 | from datetime import datetime 9 | 10 | # 获取公告信息 11 | def get_proclamation(): 12 | primary_url = "https://github.com/3288588344/toulu/raw/refs/heads/main/tl.txt" 13 | backup_url = "https://tfapi.cn/TL/tl.json" 14 | try: 15 | response = requests.get(primary_url, timeout=10) 16 | if response.status_code == 200: 17 | print("\n" + "=" * 45) 18 | print("📢 公告信息") 19 | print("=" * 45) 20 | print(response.text) 21 | print("=" * 45 + "\n") 22 | print("公告获取成功,开始执行任务...\n") 23 | return 24 | except requests.exceptions.RequestException as e: 25 | print(f"获取公告时发生错误: {e}, 尝试备用链接...") 26 | 27 | try: 28 | response = requests.get(backup_url, timeout=10) 29 | if response.status_code == 200: 30 | print("\n" + "=" * 45) 31 | print("📢 公告信息") 32 | print("=" * 45) 33 | print(response.text) 34 | print("=" * 45 + "\n") 35 | print("公告获取成功,开始执行任务...\n") 36 | else: 37 | print(f"⚠️ 获取公告失败,状态码: {response.status_code}") 38 | except requests.exceptions.RequestException as e: 39 | print(f"⚠️ 获取公告时发生错误: {e}, 可能是网络问题或链接无效。") 40 | 41 | 42 | # 查询账号信息和积分,并处理返回值 43 | def get_account_info_and_points(authorization): 44 | # 查询账号信息 45 | user_info_url = "https://smp-api.iyouke.com/dtapi/p/user/userInfo" 46 | user_info_headers = { 47 | "Host": "smp-api.iyouke.com", 48 | "Authorization": authorization, 49 | "Appid": "wx00796053aa93af0c", 50 | "Version": "2.9.40", 51 | "EnvVersion": "release", 52 | "Xy-Extra-Data": "appid=wx00796053aa93af0c;version=2.9.40;envVersion=release;senceId=1007", 53 | "Content-Type": "application/json; charset=utf-8", 54 | "Accept-Encoding": "gzip, deflate, br" 55 | } 56 | try: 57 | user_info_response = requests.get(user_info_url, headers=user_info_headers) 58 | if user_info_response.status_code == 200: 59 | user_info = user_info_response.json() 60 | 61 | else: 62 | print(f"查询账号信息失败,状态码:{user_info_response.status_code}") 63 | print(f"返回内容:{user_info_response.text}") 64 | return None 65 | except Exception as e: 66 | print(f"查询账号信息时发生错误:{e}") 67 | print(f"返回内容:{user_info_response.text}") if 'user_info_response' in locals() else print("无法获取返回内容") 68 | return None 69 | 70 | # 查询积分 71 | points_url = "https://smp-api.iyouke.com/dtapi/points/user/centerInfo" 72 | points_headers = { 73 | "Host": "smp-api.iyouke.com", 74 | "Authorization": authorization, 75 | "Appid": "wx00796053aa93af0c", 76 | "Version": "2.9.40", 77 | "EnvVersion": "release", 78 | "Xy-Extra-Data": "appid=wx00796053aa93af0c;version=2.9.40;envVersion=release;senceId=1007", 79 | "Content-Type": "application/json; charset=utf-8", 80 | "Accept-Encoding": "gzip, deflate, br" 81 | } 82 | try: 83 | points_response = requests.get(points_url, headers=points_headers) 84 | if points_response.status_code == 200: 85 | points_info = points_response.json() 86 | 87 | else: 88 | print(f"查询积分失败,状态码:{points_response.status_code}") 89 | print(f"返回内容:{points_response.text}") 90 | points_info = None 91 | except Exception as e: 92 | print(f"查询积分时发生错误:{e}") 93 | print(f"返回内容:{points_response.text}") if 'points_response' in locals() else print("无法获取返回内容") 94 | points_info = None 95 | 96 | # 处理并打印账号和积分信息 97 | mobile = user_info.get("userMobile", "") 98 | nick_name = user_info.get("nickName", "") 99 | print(f"账号:{mobile}(昵称:{nick_name})") 100 | if points_info and points_info.get("success"): 101 | points_balance = points_info.get("data", {}).get("pointsBalance", 0) 102 | print(f"当前积分:{points_balance}") 103 | else: 104 | print("无法获取积分信息") 105 | 106 | return { 107 | "mobile": mobile, 108 | "nick_name": nick_name, 109 | "points_balance": points_info.get("data", {}).get("pointsBalance", "查询失败") if points_info else "查询失败" 110 | } 111 | 112 | 113 | # 签到功能 114 | def check_in(authorization): 115 | current_date = datetime.now().strftime("%Y-%m-%d") 116 | formatted_date = current_date.replace('-', '%2F') 117 | url = f"https://smp-api.iyouke.com/dtapi/pointsSign/user/sign?date={formatted_date}" 118 | headers = { 119 | "Host": "smp-api.iyouke.com", 120 | "Authorization": authorization, 121 | "Appid": "wx00796053aa93af0c", 122 | "Version": "2.9.40", 123 | "EnvVersion": "release", 124 | "Xy-Extra-Data": "appid=wx00796053aa93af0c;version=2.9.40;envVersion=release;senceId=1007", 125 | "Content-Type": "application/json; charset=utf-8", 126 | "Referer": "https://servicewechat.com/wx00796053aa93af0c/52/page-frame.html", 127 | "Accept-Encoding": "gzip, deflate, br" 128 | } 129 | try: 130 | response = requests.get(url, headers=headers) 131 | if response.status_code == 200: 132 | 133 | return response.json() 134 | else: 135 | print(f"签到失败,状态码:{response.status_code}") 136 | print(f"返回内容:{response.text}") 137 | return None 138 | except Exception as e: 139 | print(f"签到时发生错误:{e}") 140 | print(f"返回内容:{response.text}") if 'response' in locals() else print("无法获取返回内容") 141 | return None 142 | 143 | 144 | # 主程序 145 | if __name__ == "__main__": 146 | # 获取公告 147 | get_proclamation() 148 | 149 | # 从环境变量获取 authorization 值,支持多账号(换行分割) 150 | tokens = os.getenv("KSOEUR", "").split("\n") 151 | if not tokens or all(not token.strip() for token in tokens): 152 | print("❌ 未找到环境变量 KSOEUR 或其值为空,任务终止。") 153 | exit(1) 154 | 155 | # 遍历每个账号执行任务 156 | for token in tokens: 157 | token = token.strip() 158 | if not token: 159 | continue 160 | 161 | print(f"\n{'=' * 45}") 162 | print(f"正在执行任务中") 163 | print(f"{'=' * 45}\n") 164 | 165 | account_data = get_account_info_and_points(token) 166 | if account_data: 167 | # 签到 168 | check_in_result = check_in(token) 169 | if check_in_result and check_in_result.get("success"): 170 | print(f"签到成功,获得奖励:{check_in_result.get('data', {}).get('signReward', 0)}") 171 | else: 172 | if check_in_result and check_in_result.get("errorMsg"): 173 | print(f"签到失败,原因:{check_in_result.get('errorMsg')}") 174 | else: 175 | print("签到失败") 176 | else: 177 | print("跳过该账号。") 178 | 179 | print(f"\n{'-' * 45}\n") 180 | 181 | print("所有任务执行完成!") 182 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # toulu 2 | 拉库: 3 | https://github.com/3288588344/toulu.git 4 | 5 | tg频道:https://t.me/TLtoulu 6 | 7 | QQ频道:https://pd.qq.com/s/672fku8ge 8 | 9 | 微信机器人:kckl6688 10 | 11 | 微信公众号:哆啦A梦的藏宝箱 12 | 13 | 14 | 个人博客网站:http://tfapi.cn 15 | -------------------------------------------------------------------------------- /Ruishu.py: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | #TL库:https://github.com/3288588344/toulu.git 4 | #tg频道:https://t.me/TLtoulu 5 | #QQ频道:https://pd.qq.com/s/672fku8ge 6 | #微信机器人:kckl6688 7 | #公众号:哆啦A梦的藏宝箱 8 | */ 9 | 10 | 11 | 12 | 13 | 14 | import os 15 | import ssl 16 | import time 17 | import json 18 | import execjs 19 | import base64 20 | import random 21 | import certifi 22 | import aiohttp 23 | import asyncio 24 | import requests 25 | from http import cookiejar 26 | from Crypto.Cipher import DES3 27 | from Crypto.Util.Padding import pad, unpad 28 | from aiohttp import ClientSession, TCPConnector 29 | import httpx 30 | httpx._config.DEFAULT_CIPHERS += ":ALL:@SECLEVEL=1" 31 | diffValue = 2 32 | filename='Cache.js' 33 | if os.path.exists(filename): 34 | with open(filename, 'r', encoding='utf-8') as file: 35 | fileContent = file.read() 36 | else: 37 | fileContent='' 38 | 39 | class BlockAll(cookiejar.CookiePolicy): 40 | return_ok = set_ok = domain_return_ok = path_return_ok = lambda self, *args, **kwargs: False 41 | netscape = True 42 | rfc2965 = hide_cookie2 = False 43 | 44 | def printn(m): 45 | print(f'\n{m}') 46 | 47 | context = ssl.create_default_context() 48 | context.set_ciphers('DEFAULT@SECLEVEL=1') # 低安全级别0/1 49 | context.check_hostname = False # 禁用主机 50 | context.verify_mode = ssl.CERT_NONE # 禁用证书 51 | 52 | class DESAdapter(requests.adapters.HTTPAdapter): 53 | def init_poolmanager(self, *args, **kwargs): 54 | kwargs['ssl_context'] = context 55 | return super().init_poolmanager(*args, **kwargs) 56 | 57 | requests.DEFAULT_RETRIES = 0 58 | requests.packages.urllib3.disable_warnings() 59 | ss = requests.session() 60 | 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"} 61 | ss.mount('https://', DESAdapter()) 62 | ss.cookies.set_policy(BlockAll()) 63 | runTime = 0 64 | sleepTime = 1 65 | key = b'1234567`90koiuyhgtfrdews' 66 | iv = 8 * b'\0' 67 | 68 | def encrypt(text): 69 | cipher = DES3.new(key, DES3.MODE_CBC, iv) 70 | ciphertext = cipher.encrypt(pad(text.encode(), DES3.block_size)) 71 | return ciphertext.hex() 72 | 73 | def decrypt(text): 74 | ciphertext = bytes.fromhex(text) 75 | cipher = DES3.new(key, DES3.MODE_CBC, iv) 76 | plaintext = unpad(cipher.decrypt(ciphertext), DES3.block_size) 77 | return plaintext.decode() 78 | 79 | def initCookie(getUrl='https://wapact.189.cn:9001/gateway/standQuery/detailNew/exchange'): 80 | global js_code_ym, fileContent 81 | cookie = '' 82 | response = httpx.post(getUrl) 83 | content = response.text.split(' content="')[2].split('" r=')[0] 84 | code1 = response.text.split('$_ts=window')[1].split('