├── .gitignore ├── ACHOCK.py ├── ApiRequest.py ├── Cellcosmet.py ├── MAMMUT.py ├── Miss.py ├── NOC.py ├── README.md ├── TODO.md ├── ZOSEE.py ├── android-ssl ├── frida-server-15.2.2-android-arm64 ├── fridaRun.bat ├── getcap.bat ├── sslkey.txt ├── sslkeyfilelog.js └── ver.txt ├── auou.py ├── backup_ql.py ├── byh.py ├── changeEnv.py ├── cookiesDebug.py ├── costtime.py ├── dcjd.py ├── ffyl.py ├── gjjk.py ├── glg.py ├── hbb.py ├── hqkj.py ├── hrj.py ├── htmwg.py ├── huazhu.py ├── ikuuu.py ├── invalid ├── runPC-mshy.py ├── runPC-tyasm.py ├── yaduo.py └── 探我.py ├── js ├── bsd.js ├── 媓钻.js └── 悦秀会.js ├── kbj.py ├── ksfcys.py ├── lbdq.py ├── lbhy.py ├── lbxb.py ├── llj.py ├── mytool.py ├── notify.py ├── nx.py ├── other ├── pdd.1bat ├── qimao.js ├── qt.py ├── sangsi.js ├── tuchong.py ├── wx朵茜情调生活馆_jm.py ├── xj.js ├── yuyun.py ├── 七猫抽奖+转盘.py ├── 七猫抽奖领宝箱.py ├── 拼多多果园.js ├── 派勇.py ├── 火锅视频修复加强.py ├── 牙博士.js ├── 百事乐元.js ├── 蒙牛营养生活家.py └── 财富牛子.py ├── pc-asm ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── close.png ├── close2.png ├── finish.png ├── search.png ├── sign.png ├── signed.png └── skip.png ├── pc-fnyq ├── 20240330_070502.png ├── 20240405_105355.png ├── do.png ├── finish.png ├── jd-main.png ├── jd-start-verify.png ├── jd-verify.png ├── mytool.py ├── pc-fnyq.py ├── result.png ├── taobao-1.png ├── taobao-2.png ├── taobao-do.png ├── taobao-verify-error.png └── taobao-verify.png ├── pc-mshy ├── 1.png ├── 2.png ├── 3.png ├── 4.png ├── 5.png ├── 6.png ├── 7.png └── search.png ├── pkl2json.py ├── pskj.py ├── qchy.py ├── riqing.py ├── ryytn.py ├── sdl.py ├── sendNotify.py ├── updateCookie ├── JDLogin.py ├── listDialog.py ├── run_playwright.bat ├── server.py ├── updateCookie_JD.py ├── updateCookie_TextLoop.py ├── updateCookie_Util.py └── webio.py ├── wxpushNotify.py ├── xk.py ├── yhshCookie.py ├── yljf.py ├── yqsl.py ├── yxt.py ├── zhengjia.py ├── zippo.py ├── 三养.py ├── 三只松鼠.py ├── 五谷磨房.py ├── 卡西欧.py ├── 向太.py ├── 所有女生.py ├── 李宁CLUB.py ├── 爱依服.py ├── 特仑苏.py ├── 芈姐生活馆.py ├── 花生帮.py ├── 谷雨.py └── 陈子壹.py /.gitignore: -------------------------------------------------------------------------------- 1 | *.pkl 2 | .idea/ 3 | __pycache__/ 4 | debug.py 5 | test.py 6 | /updateCookie/config.json 7 | /updateCookie/*.txt 8 | config.json 9 | *.log 10 | *.json 11 | decode/ 12 | android-ssl/ 13 | *.bat 14 | wxapp* 15 | invalid/* 16 | other/node_modules/* 17 | demoTest.py -------------------------------------------------------------------------------- /ACHOCK.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-ACHOCK") 4 | env add wx_achock 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_achock' 13 | msg = '' 14 | 15 | 16 | class achock(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b17)XWEB/9185', 24 | 'Content-Type': 'application/json', 25 | 'Accept': '*/*', 26 | 'Sec-Fetch-Site': 'cross-site', 27 | 'Sec-Fetch-Mode': 'cors', 28 | 'Sec-Fetch-Dest': 'empty', 29 | 'Referer': 'https://servicewechat.com/wxecf8fab05dbec020/7/page-frame.html', 30 | # 'Accept-Encoding': 'gzip, deflate, br', 31 | 'Accept-Language': 'zh-CN,zh;q=0.9', 32 | } 33 | self.access_token = data.split("#")[0] 34 | self.sid = data.split("#")[1] 35 | self.uuid = data.split("#")[2] 36 | self.sec.headers['Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"2.160.6.101","client":"weapp","bizEnv":"wsc","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 37 | 38 | def login(self): 39 | params = { 40 | 'checkinId': '3520910', 41 | 'app_id': 'wxecf8fab05dbec020', 42 | 'kdt_id': '129380009', 43 | 'access_token': self.access_token, 44 | } 45 | 46 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 47 | print(rj) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, achock) 52 | -------------------------------------------------------------------------------- /ApiRequest.py: -------------------------------------------------------------------------------- 1 | import os 2 | import traceback 3 | import requests 4 | import urllib3 5 | import mytool 6 | import notify 7 | 8 | 9 | class ApiRequest: 10 | def __init__(self): 11 | urllib3.disable_warnings() 12 | self.sec = requests.session() 13 | self.sec.verify = False 14 | self.sec.trust_env = False 15 | self.sendmsg = '' 16 | self.title = '' 17 | 18 | def send(self): 19 | notify.send(self.title, self.sendmsg) 20 | 21 | 22 | class ApiMain: 23 | def __init__(self, funcName): 24 | self.funcName = funcName 25 | pass 26 | 27 | def sendWxPusher(self, msg): 28 | from wxpusher import WxPusher 29 | WxPusher.send_message(msg, 30 | topic_ids=[os.environ['wxpusherTopicId']], 31 | token=os.environ['wxpusherAppToken']) 32 | 33 | def run(self, envName, request): 34 | if os.path.exists('debug.py'): 35 | import debug 36 | debug.setDebugEnv() 37 | 38 | if mytool.getlistCk(f'{envName}') is None: 39 | print(f'请检查你的变量名称 {envName} 是否填写正确') 40 | exit(0) 41 | else: 42 | for i in mytool.getlistCk(f'{envName}'): 43 | for func in self.funcName: 44 | try: 45 | getattr(request(i), func)() 46 | except: 47 | self.sendWxPusher(traceback.format_exc()) 48 | traceback.print_exc() 49 | pass 50 | -------------------------------------------------------------------------------- /Cellcosmet.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 7 * * * 3 | new Env("微信小程序-Cellcosmet") 4 | env add wx_cellcosmet 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import json 10 | import ApiRequest 11 | from notify import send 12 | 13 | title = '微信小程序-Cellcosmet' 14 | tokenName = 'wx_cellcosmet' 15 | 16 | 17 | class cellcosmet(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'cellcosmet.haoduoke.cn', 22 | 'Connection': 'keep-alive', 23 | 'xweb_xhr': '1', 24 | 'orgClientId': '1', 25 | 'appId': 'wxa72c343870a41479', 26 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b13)XWEB/9185', 27 | 'Content-Type': 'application/json', 28 | 'Accept': '*/*', 29 | 'Sec-Fetch-Site': 'cross-site', 30 | 'Sec-Fetch-Mode': 'cors', 31 | 'Sec-Fetch-Dest': 'empty', 32 | 'Referer': 'https://servicewechat.com/wxa72c343870a41479/6/page-frame.html', 33 | 'Accept-Language': 'zh-CN,zh;q=0.9', 34 | } 35 | 36 | self.userCode = data 37 | 38 | def login(self): 39 | json_data = { 40 | 'userCode': self.userCode, 41 | 'customerId': self.userCode, 42 | 'counterId': 203652716557, 43 | 'userId': None, 44 | 'signOid': 326279852111, 45 | 'appOid': 59278884243, 46 | 'orgClientId': 1, 47 | } 48 | 49 | rj = self.sec.post('https://cellcosmet.haoduoke.cn/custom/free/memc/sign/commit', json=json_data).json() 50 | print(rj) 51 | 52 | 53 | if __name__ == '__main__': 54 | ApiRequest.ApiMain(['login']).run(tokenName, cellcosmet) 55 | -------------------------------------------------------------------------------- /MAMMUT.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-mammut") 4 | env add wx_mammut 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_mammut' 13 | msg = '' 14 | 15 | 16 | class mammut(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 24 | 'Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI ' 25 | 'MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b17)XWEB/9185', 26 | 'Content-Type': 'application/json', 27 | 'Accept': '*/*', 28 | 'Sec-Fetch-Site': 'cross-site', 29 | 'Sec-Fetch-Mode': 'cors', 30 | 'Sec-Fetch-Dest': 'empty', 31 | 'Referer': 'https://servicewechat.com/wxccbbf1b55ddaa627/30/page-frame.html', 32 | # 'Accept-Encoding': 'gzip, deflate, br', 33 | 'Accept-Language': 'zh-CN,zh;q=0.9', 34 | } 35 | self.access_token = data.split("#")[0] 36 | self.sid = data.split("#")[1] 37 | self.uuid = data.split("#")[2] 38 | self.sec.headers['Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"3.127.5.104001","client":"weapp","bizEnv":"retail","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 39 | 40 | def login(self): 41 | params = { 42 | 'checkinId': '4296415', 43 | 'app_id': 'wxccbbf1b55ddaa627', 44 | 'kdt_id': '146288343', 45 | 'access_token': self.access_token, 46 | } 47 | 48 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 49 | print(rj) 50 | 51 | 52 | if __name__ == '__main__': 53 | ApiRequest.ApiMain(['login']).run(tokenName, mammut) 54 | -------------------------------------------------------------------------------- /Miss.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-蜜丝miss") 4 | env add wx_miss = unionId#X-wx8465e1173d1e11b0-Token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'wx_miss' 14 | msg = '' 15 | 16 | 17 | class miss(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'clubwx.hm.liby.com.cn', 22 | 'Connection': 'keep-alive', 23 | 'platformCode': 'Miss', 24 | 'xweb_xhr': '1', 25 | 'appId': 'wx8465e1173d1e11b0', 26 | 'unionId': data.split('#')[0], 27 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 28 | 'X-wx8465e1173d1e11b0-Token': data.split('#')[1], 29 | 'Content-Type': 'application/json', 30 | 'Referer': 'https://servicewechat.com/wx8465e1173d1e11b0/33/page-frame.html', 31 | 'Accept-Language': 'zh-CN,zh;q=0.9', 32 | } 33 | 34 | 35 | def login(self): 36 | params = { 37 | 'taskId': '840', 38 | } 39 | response = self.sec.get( 40 | 'https://clubwx.hm.liby.com.cn/miniprogram/benefits/activity/sign/execute.htm', 41 | params=params 42 | ) 43 | print(response.text) 44 | 45 | if __name__ == '__main__': 46 | ApiRequest.ApiMain(['login']).run(tokenName, miss) 47 | -------------------------------------------------------------------------------- /NOC.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-noc") 4 | env add wx_noc 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_noc' 13 | msg = '' 14 | 15 | 16 | class noc(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'msmarket.msx.digitalyili.com', 21 | 'Connection': 'keep-alive', 22 | 'access-token': data, 23 | 'scene': '1302', 24 | 'xweb_xhr': '1', 25 | 'X-Tingyun': 'c=M|bCdGMM8G6ds', 26 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b17)XWEB/9185', 27 | 'Accept': '*/*', 28 | 'Sec-Fetch-Site': 'cross-site', 29 | 'Sec-Fetch-Mode': 'cors', 30 | 'Sec-Fetch-Dest': 'empty', 31 | 'Referer': 'https://servicewechat.com/wxb30200cb542792fe/111/page-frame.html', 32 | 'Accept-Language': 'zh-CN,zh;q=0.9', 33 | } 34 | 35 | def login(self): 36 | rj = self.sec.post('https://msmarket.msx.digitalyili.com/gateway/api/member/daily/sign', json={}).json() 37 | print(rj) 38 | 39 | 40 | if __name__ == '__main__': 41 | ApiRequest.ApiMain(['login']).run(tokenName, noc) 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ql 2 | 自己的青龙 3 | # 电脑抓包工具 4 | https://github.com/darkbfly/NetFiddler 5 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/TODO.md -------------------------------------------------------------------------------- /ZOSEE.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-ZOSEE") 4 | env add wx_zosee 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import datetime 10 | 11 | import ApiRequest 12 | 13 | tokenName = 'wx_zosee' 14 | msg = '' 15 | 16 | 17 | class ZOSEE(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | "Host": "smp-api.iyouke.com", 22 | "Connection": "keep-alive", 23 | "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(0x63090c11)XWEB/11275", 24 | "Authorization": data, 25 | "Content-Type": "application/json", 26 | "xweb_xhr": "1", 27 | "appId": "wx755f4d86f9328dce", 28 | # "xy-extra-data": "appid=wx755f4d86f9328dce;version=2.4.35;envVersion=release;senceId=1302", 29 | "envVersion": "release", 30 | "version": "2.4.35", 31 | "Accept": "*/*", 32 | "Sec-Fetch-Site": "cross-site", 33 | "Sec-Fetch-Mode": "cors", 34 | "Sec-Fetch-Dest": "empty", 35 | "Referer": "http", 36 | "Accept-Encoding": "gzip, deflate, br", 37 | "Accept-Language": "zh-CN,zh;q=0.9" 38 | } 39 | 40 | def login(self): 41 | url = f"https://smp-api.iyouke.com/dtapi/pointsSign/user/sign?date={datetime.datetime.now().year}%2F{datetime.datetime.now().month}%2F{datetime.datetime.now().day}" 42 | rj = self.sec.get(url).json() 43 | print(rj) 44 | 45 | 46 | if __name__ == '__main__': 47 | ApiRequest.ApiMain(['login']).run(tokenName, ZOSEE) 48 | -------------------------------------------------------------------------------- /android-ssl/frida-server-15.2.2-android-arm64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/android-ssl/frida-server-15.2.2-android-arm64 -------------------------------------------------------------------------------- /android-ssl/fridaRun.bat: -------------------------------------------------------------------------------- 1 | frida -U -f com.ccb.longlife --no-pause -I 123.js -------------------------------------------------------------------------------- /android-ssl/getcap.bat: -------------------------------------------------------------------------------- 1 | adb pull /sdcard/Download/capture.pcap -------------------------------------------------------------------------------- /android-ssl/sslkey.txt: -------------------------------------------------------------------------------- 1 | CLIENT_RANDOM da0b2eac474583348c9d194cacfd89ae0a5d19d29df0934bf981f6a32131a011 36536bca68728d1fb2962ae2ea60395b3a03c0b1cc523345ce803a2dba3ed6ef2777313a62bce7d073c5f8893809f64d -------------------------------------------------------------------------------- /android-ssl/sslkeyfilelog.js: -------------------------------------------------------------------------------- 1 | function startTLSKeyLogger(SSL_CTX_new, SSL_CTX_set_keylog_callback) { 2 | console.log("start----") 3 | function keyLogger(ssl, line) { 4 | console.log(new NativePointer(line).readCString()); 5 | } 6 | const keyLogCallback = new NativeCallback(keyLogger, 'void', ['pointer', 'pointer']); 7 | 8 | Interceptor.attach(SSL_CTX_new, { 9 | onLeave: function(retval) { 10 | const ssl = new NativePointer(retval); 11 | const SSL_CTX_set_keylog_callbackFn = new NativeFunction(SSL_CTX_set_keylog_callback, 'void', ['pointer', 'pointer']); 12 | SSL_CTX_set_keylog_callbackFn(ssl, keyLogCallback); 13 | } 14 | }); 15 | } 16 | startTLSKeyLogger( 17 | Module.findExportByName('libssl.so', 'SSL_CTX_new'), 18 | Module.findExportByName('libssl.so', 'SSL_CTX_set_keylog_callback') 19 | ) 20 | // https://codeshare.frida.re/@k0nserv/tls-keylogger/ -------------------------------------------------------------------------------- /android-ssl/ver.txt: -------------------------------------------------------------------------------- 1 | frida-15.2.2 frida-tools-10.6.0 -------------------------------------------------------------------------------- /auou.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-auou") 4 | env add wx_auou 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | 11 | tokenName = 'wx_auou' 12 | msg = '' 13 | 14 | 15 | class auou(ApiRequest.ApiRequest): 16 | def __init__(self, data): 17 | super().__init__() 18 | self.sec.headers = { 19 | 'Host': 'credit.app.tuiwe.com', 20 | 'Connection': 'keep-alive', 21 | 'xweb_xhr': '1', 22 | 'companyId': '9', 23 | 'Authorization': data, 24 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b)XWEB/9185', 25 | 'Content-Type': 'application/json', 26 | 'Referer': 'https://servicewechat.com/wx967ada619136dd33/11/page-frame.html', 27 | # 'Accept-Encoding': 'gzip, deflate, br', 28 | 'Accept-Language': 'zh-CN,zh;q=0.9', 29 | } 30 | 31 | def login(self): 32 | rj = self.sec.get('https://credit.app.tuiwe.com/api/v1/fan/sign').json() 33 | print(rj) 34 | 35 | 36 | if __name__ == '__main__': 37 | ApiRequest.ApiMain(['login']).run(tokenName, auou) 38 | -------------------------------------------------------------------------------- /backup_ql.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import smtplib 4 | import time 5 | from email.header import Header 6 | from email.mime.application import MIMEApplication 7 | from email.mime.multipart import MIMEMultipart 8 | from email.mime.text import MIMEText 9 | 10 | import requests 11 | 12 | url = '127.0.0.1:5700' 13 | 14 | def getToken(): 15 | if os.path.isfile('/ql/config/auth.json'): 16 | with open('/ql/config/auth.json', 'r') as f: 17 | config = json.load(f) 18 | return 'Bearer ' + config['token'] 19 | 20 | 21 | def 保存文件(file, data): 22 | with open(file, 'w') as f: 23 | json.dump(data, f) 24 | 25 | 26 | def 备份订阅信息(): 27 | newUrl = f"http://{url}/open/subscriptions" 28 | headers = { 29 | 'Authorization': getToken(), 30 | 'Content-Type': 'application/json' 31 | } 32 | sec = requests.session() 33 | sec.verify = False 34 | sec.trust_env = False 35 | rj = sec.get(newUrl, headers=headers).json() 36 | if rj['code'] == 200: 37 | 保存文件('subscription.json', rj) 38 | 39 | 40 | def 备份环境变量(): 41 | newUrl = f"http://{url}/open/envs" 42 | headers = { 43 | 'Authorization': getToken(), 44 | 'Content-Type': 'application/json' 45 | } 46 | sec = requests.session() 47 | sec.verify = False 48 | sec.trust_env = False 49 | rj = sec.get(newUrl, headers=headers).json() 50 | if rj['code'] == 200: 51 | 保存文件('envs.json', rj) 52 | 53 | 54 | def 备份依赖(): 55 | newUrl = f"http://{url}/open/dependencies" 56 | headers = { 57 | 'Authorization': getToken(), 58 | 'Content-Type': 'application/json' 59 | } 60 | sec = requests.session() 61 | sec.verify = False 62 | sec.trust_env = False 63 | rj = sec.get(newUrl, headers=headers, params={'type': 'python3'}).json() 64 | if rj['code'] == 200: 65 | 保存文件('dependencies-python3.json', rj) 66 | 67 | rj = sec.get(newUrl, headers=headers, params={'type': 'nodejs'}).json() 68 | if rj['code'] == 200: 69 | 保存文件('dependencies-nodejs.json', rj) 70 | 71 | 72 | def 邮箱发送文件(): 73 | # 邮件服务器的信息 74 | smtp_server = os.getenv("SMTP_SERVER") 75 | smtp_username = os.getenv('SMTP_USERNAME') 76 | smtp_password = os.getenv('SMTP_PASSWORD') 77 | 78 | # 发件人、收件人和主题 79 | from_email = smtp_username 80 | to_email = smtp_username 81 | subject = f"青龙备份-{time.strftime('%Y-%m-%d', time.localtime())}" 82 | 83 | # 创建一个带附件的邮件 84 | message = MIMEMultipart() 85 | 86 | message["From"] = Header(from_email) 87 | message["To"] = Header(to_email) 88 | message["Subject"] = Header(subject, 'utf-8') 89 | 90 | # 邮件正文 91 | with open('subscription.json', "rb") as attachment_file: 92 | attachment = MIMEApplication(attachment_file.read(), Name="subscription.json") 93 | attachment.add_header("Content-Disposition", "subscription.json", filename="subscription.json") 94 | message.attach(attachment) 95 | 96 | with open('dependencies-nodejs.json', "rb") as attachment_file: 97 | attachment = MIMEApplication(attachment_file.read(), Name="dependencies-nodejs.json") 98 | attachment.add_header("Content-Disposition", "dependencies-nodejs.json", filename="dependencies-nodejs.json") 99 | message.attach(attachment) 100 | 101 | with open('dependencies-python3.json', "rb") as attachment_file: 102 | attachment = MIMEApplication(attachment_file.read(), Name="dependencies-python3.json") 103 | attachment.add_header("Content-Disposition", "dependencies-python3.json", filename="dependencies-python3.json") 104 | message.attach(attachment) 105 | 106 | with open('envs.json', "rb") as attachment_file: 107 | attachment = MIMEApplication(attachment_file.read(), Name="envs.json") 108 | attachment.add_header("Content-Disposition", "envs.json", filename="envs.json") 109 | message.attach(attachment) 110 | 111 | 112 | # 连接到SMTP服务器并发送邮件 113 | try: 114 | smtpObj = smtplib.SMTP(smtp_server) 115 | # smtpObj.set_debuglevel(1) 116 | smtpObj.login(smtp_username, smtp_password) 117 | smtpObj.sendmail(from_email, [to_email], message.as_string()) 118 | print("SEND EMAIL SUCCESS") 119 | except smtplib.SMTPException: 120 | print("SEND EMAIL FAIL") 121 | 122 | 123 | if __name__ == '__main__': 124 | # print(getToken()) 125 | 备份订阅信息() 126 | 备份环境变量() 127 | 备份依赖() 128 | 邮箱发送文件() -------------------------------------------------------------------------------- /byh.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 5 * * * byh.py 3 | new Env("微信小程序-棒约翰点单") 4 | env add dcjd_data 5 | """ 6 | import json 7 | import ApiRequest 8 | from notify import send 9 | 10 | title = '微信小程序-棒约翰点单' 11 | tokenName = 'wx_byh' 12 | 13 | 14 | class byh(ApiRequest.ApiRequest): 15 | def __init__(self, data): 16 | super().__init__() 17 | self.sec.headers = { 18 | 'Host': 'wechat.dairyqueen.com.cn', 19 | 'Connection': 'keep-alive', 20 | 'xweb_xhr': '1', 21 | 'Cookie': data, 22 | 'channel': '202', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b) XWEB/9129', 24 | 'tenant': '2', 25 | 'Accept': '*/*', 26 | 'Referer': 'https://servicewechat.com/wxe12e908d0febcd9b/126/page-frame.html', 27 | 'Accept-Language': 'zh-CN,zh;q=0.9', 28 | } 29 | 30 | def login(self): 31 | print(self.sec.post('https://wechat.dairyqueen.com.cn/memSignIn/signIn', json={}).text) 32 | 33 | 34 | if __name__ == '__main__': 35 | ApiRequest.ApiMain(['login']).run(tokenName, byh) 36 | -------------------------------------------------------------------------------- /changeEnv.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 * * * * 3 | new Env("环境变量修改") 4 | """ 5 | import os 6 | import json 7 | import requests 8 | 9 | url = '127.0.0.1:5700' 10 | 11 | 12 | def getToken(): 13 | if os.path.isfile('/ql/data/config/auth.json'): 14 | with open('/ql/data/config/auth.json', 'r') as f: 15 | config = json.load(f) 16 | return 'Bearer ' + config['token'] 17 | 18 | def changeString(before, after, split): 19 | newUrl = f"http://{url}/open/envs" 20 | headers = { 21 | 'Authorization': getToken(), 22 | 'Content-Type': 'application/json' 23 | } 24 | envList = [] 25 | sec = requests.session() 26 | sec.verify = False 27 | sec.trust_env = False 28 | rj = sec.get(newUrl, headers=headers).json() 29 | if rj['code'] == 200: 30 | for x in rj['data']: 31 | if x['name'] == before: 32 | envList.append(x['value']) 33 | pass 34 | rj = sec.post(newUrl, headers=headers, json=[{ 35 | "name": after, 36 | "value": split.join(envList) 37 | }]).json() 38 | 39 | print(rj) 40 | 41 | if __name__ == '__main__': 42 | changeString('lbvip2', "lbvip", "\n") 43 | -------------------------------------------------------------------------------- /cookiesDebug.py: -------------------------------------------------------------------------------- 1 | # cron: 1 1 1 1 1 2 | import pprint 3 | 4 | import mytool 5 | 6 | if __name__ == '__main__': 7 | pprint.pprint(mytool.getlistCk('JD_COOKIE')) -------------------------------------------------------------------------------- /costtime.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from functools import wraps 3 | import time 4 | 5 | def time_counts(fn): 6 | @wraps(fn) 7 | def mesasure_time(*args,**kwargs): 8 | t1=time.time() 9 | result=fn(*args,**kwargs) 10 | t2=time.time() 11 | print('<-- '+fn.__name__+' _执行耗时: '+str(round((t2-t1),3))+' seconds -->') 12 | return result 13 | return mesasure_time 14 | 15 | 16 | if __name__ == '__main__': 17 | @time_counts 18 | def add(a, b): 19 | print('{}+{}={}'.format(a, b, a + b)) 20 | return a + b 21 | add(5,6) -------------------------------------------------------------------------------- /dcjd.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 7 * * * dcjd.py 3 | new Env("微信小程序-东呈酒店") 4 | env add dcjd_data 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import json 10 | import ApiRequest 11 | from notify import send 12 | 13 | title = '微信小程序-东呈酒店' 14 | tokenName = 'dcjd_data' 15 | 16 | 17 | class dcjd(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'campaignapi.dossen.com', 22 | 'Connection': 'keep-alive', 23 | 'Dossen-Platform': 'WxMiniApp', 24 | 'DOSSENSESSIONID': 'D778FE1C3AFB426B88ED04AB41B0B0211696665839712', 25 | 'access_token': data, 26 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8391', 27 | 'Content-Type': 'application/json', 28 | 'Referer': 'https://servicewechat.com/wxa4b8c0bda7f71cfc/255/page-frame.html', 29 | 'Accept-Language': 'zh-CN,zh', 30 | } 31 | 32 | def login(self): 33 | params = { 34 | 'blackbox': 'eyJvcyI6Ind4YXBwIiwidCI6IisxSUlrZFVCb2pUK2dOZyt6Wk1xZzhhd0xqR0dwWHdnNjBqQzgrbk9URE1md0VCN3ZPSDZHWHcrRGJZK2I4WDN3dm5UVWQxcFErVjh3WFN1NUZpWUFnPT0iLCJ2IjoiSWxKSDRrQWpUbi9lb2dGM2FrZ2phRz09IiwicGFydG5lciI6ImRvc3NlbiIsInAiOjgxfQ==', 35 | } 36 | response = self.sec.get('https://campaignapi.dossen.com/selling/checkin/do', params=params, verify=False) 37 | if response.status_code == 200: 38 | rj = response.json() 39 | if rj['code'] == 0: 40 | msg = f"签到成功\n获得{rj['results']}积分!" 41 | else: 42 | msg = f"签到失败\n" + json.dumps(rj, ensure_ascii=False) 43 | else: 44 | msg = f"签到失败\n" + json.dumps(response.json(), ensure_ascii=False) 45 | 46 | print(msg) 47 | send(title, msg) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, dcjd) -------------------------------------------------------------------------------- /ffyl.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 4 * * * 3 | new Env("微信小程序-分分有礼滴滴赏") 4 | env add wx_ffyl 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import datetime 10 | 11 | # !/usr/bin/env python3 12 | # coding: utf-8 13 | 14 | import ApiRequest 15 | 16 | title = '微信小程序-分分有礼滴滴赏' 17 | tokenName = 'wx_ffyl' 18 | msg = '' 19 | 20 | 21 | class yljf(ApiRequest.ApiRequest): 22 | def __init__(self, data): 23 | super().__init__() 24 | self.sec.headers = { 25 | 'Host': 'ucode-openapi.aax6.cn', 26 | 'Connection': 'keep-alive', 27 | 'Authorization': data.split('#')[0], 28 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b)XWEB/9185', 29 | 'Content-Type': 'application/json', 30 | 'xweb_xhr': '1', 31 | # 'serialId': data.split('#')[1], 32 | 'openId': data.split('#')[1], 33 | 'appId': 'wx2da5d5ba2087726a', 34 | 'version': '2.0.0', 35 | 'Referer': 'https://servicewechat.com/wx2da5d5ba2087726a/183/page-frame.html', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | 39 | def login(self): 40 | params = { 41 | 'promotionId': '107', 42 | 'days': str(datetime.datetime.now().day), 43 | } 44 | rj = self.sec.get('https://ucode-openapi.aax6.cn/user/checkIn', params=params).json() 45 | print(rj) 46 | 47 | 48 | 49 | if __name__ == '__main__': 50 | ApiRequest.ApiMain(['login']).run(tokenName, yljf) 51 | -------------------------------------------------------------------------------- /gjjk.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-高济健康") 3 | cron 0 7 * * * 4 | 环境变量名称 wx_gjjkpro_data 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import datetime 11 | import json 12 | import os 13 | import traceback 14 | import requests 15 | 16 | import ApiRequest 17 | import mytool 18 | from notify import send 19 | 20 | title = '微信小程序-高济健康' 21 | tokenName = 'wx_gjjkpro_data' 22 | 23 | 24 | class gjjk(ApiRequest.ApiRequest): 25 | def __init__(self, data): 26 | super().__init__() 27 | self.sec.headers = { 28 | 'Host': 'api.gaojihealth.cn', 29 | 'Connection': 'keep-alive', 30 | # 'Content-Length': '61', 31 | 'Authorization': data.split('#')[1], 32 | 'usign-group': 'bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiI0MDAzMDMwMDE5NDcxMTI5Iiwib3BlbklkIjpudWxsLCJyb2xlcyI6IltcIkdKX0FQUF9VU0VSXCJdIiwiYnVzaW5lc3NJZCI6IjcxMTI5IiwiaGVhZFVybCI6bnVsbCwiZ2pqRmxhZyI6dHJ1ZSwidHlwZSI6IjIiLCJwbGF0Zm9ybSI6ZmFsc2UsImNsaWVudF9pZCI6IndlYl9hcHAiLCJtaW5pT3BlbklkIjoib3B0eGQ1Yy0zS0dWaWd3ekNRV1JGOGM5Sk94ZyIsInBsYXRmb3JtQnVzaW5lc3NJZCI6IjIxMjc5OCIsInBsYXRmb3JtVXNlcklkIjoiNDAwMzAyNzI2MTAxMjc5OCIsInNjb3BlIjpbIm9wZW5pZCJdLCJsb2dpbk5hbWUiOjQwMDMwMzAwMTk0NzExMjksImV4cCI6MTY5OTI5MjU4NCwianRpIjoiYzI1YzdlOTYtZWYwMC00NzBiLThjZGMtMDE1YzA2MzA1ZTY1IiwidW5pb25JZCI6Im9XTXM0MU1OZFpkdFVRMzJ3elptRG1ibVZwYm8iLCJ1c2VySWQiOiI0MDAzMDMwMDE5NDcxMTI5IiwiYXV0aG9yaXRpZXMiOlsiR0pfQVBQX1VTRVIiXSwicGhvbmUiOiIxMzA1NTc4OTkyMyIsIm5hbWUiOm51bGwsImlzTmV3TWVtYmVyIjpmYWxzZSwiZW5jb2RlUGhvbmUiOiIxMzAqKioqOTkyMyIsInd4QmluZFN0YXR1cyI6dHJ1ZSwiZ3JhbnRUeXBlIjoiZ2pfYXBwX2F1dGgiLCJzdGF0dXMiOiIzIn0.a9ioxxm-uITw8Px2LfQmoV2JjCawiHp57287v99an5m5zkU8m5ZT6ALEbpEGdpIw7OOY_MID6ip3qw140PePvKOYGi3l-nqEQWvfaOzVpH2sxAHZjrmfPQaoa6IHFKJRbbx1gUR1pDys2anhFm2le9f6qVpt0MSd4eVagIhle6PiayBZ8DpJYStY5xQbkex5yEmuraaxfGt9YC0Ku5X5CjqtbNzRll4cqH_Sf8Y1WiWQT8QOyyNsc5prAcaSw9QfQ-1rrAWK82z2R6bicm8MY-YxJHGZbDrvKS0UpAbDNVkbLznxIz_mS6kHfR5V6nTOoNUjcSUJ9TxsNevH4-UlTQ', 33 | 'siteId': 'miniprogram', 34 | 'grantType': 'gj_app_auth', 35 | 'biz-market': 'undefined', 36 | 'from-channel': 'gjjk_pro', 37 | 'lastStart': '1053', 38 | 'biz-identity': 'undefined', 39 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309071d)XWEB/8461', 40 | 'Content-Type': 'application/json;charset=UTF-8;', 41 | 'xweb_xhr': '1', 42 | 'client-id': 'miniprogram', 43 | 'from-channelv2': 'gjjk_pro', 44 | 'Accept': '*/*', 45 | 'Referer': 'https://servicewechat.com/wx73ec617ea0a6c8e8/1069/page-frame.html', 46 | 'Accept-Language': 'zh-CN,zh;q=0.9', 47 | } 48 | self.userId = data.split('#')[0] 49 | 50 | def login(self): 51 | params = '' 52 | 53 | json_data = { 54 | 'businessId': 71129, 55 | 'userId': self.userId, 56 | 'taskId': 372, 57 | } 58 | rj = self.sec.post( 59 | 'https://api.gaojihealth.cn/gulosity/api/dkUserEvent/everyDaySign', 60 | params=params, 61 | json=json_data, 62 | ).json() 63 | print(json.dumps(rj, ensure_ascii=False)) 64 | 65 | 66 | if __name__ == "__main__": 67 | # DEBUG 68 | # if os.path.exists('debug.py'): 69 | # import debug 70 | # 71 | # debug.setDebugEnv() 72 | # 73 | # if mytool.getlistCk(f'{tokenName}') is None: 74 | # print(f'请检查你的变量名称 {tokenName} 是否填写正确') 75 | # exit(0) 76 | # else: 77 | # for i in mytool.getlistCk(f'{tokenName}'): 78 | # gjjk(i.split('#')).login() 79 | ApiRequest.ApiMain(['login']).run(tokenName, gjjk) 80 | -------------------------------------------------------------------------------- /glg.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-格力高") 3 | cron 0 7 * * * 4 | 环境变量名称 wx_glg 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import ApiRequest 11 | 12 | title = '微信小程序-格力高' 13 | tokenName = 'wx_glg' 14 | 15 | 16 | class glg(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'crm.glico.cn', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'X-Auth-Token': data, 24 | 'X-App-Source': 'weixin_mp', 25 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 26 | 'Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI ' 27 | 'MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) XWEB/9129', 28 | 'Referer': 'https://servicewechat.com/wx0245348276df851b/147/page-frame.html', 29 | 'Accept-Language': 'zh-CN,zh;q=0.9', 30 | } 31 | 32 | def login(self): 33 | json_data = {} 34 | response = self.sec.put('https://crm.glico.cn/miniapp/member/checkin', json=json_data) 35 | print(response.text) 36 | 37 | 38 | if __name__ == '__main__': 39 | ApiRequest.ApiMain(['login']).run(tokenName, glg) 40 | -------------------------------------------------------------------------------- /hbb.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-好爸爸") 4 | env add wx_hbb = unionId#X-wx8465e1173d1e11b0-Token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'wx_hbb' 14 | msg = '' 15 | 16 | 17 | class hbb(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'clubwx.hm.liby.com.cn', 22 | 'Connection': 'keep-alive', 23 | 'platformCode': 'HaoBaBa', 24 | 'xweb_xhr': '1', 25 | 'X-wx872a12ca93eeba47-Token': data.split('#')[1], 26 | 'appId': 'wx872a12ca93eeba47', 27 | 'unionId': data.split('#')[0], 28 | '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', 29 | 'Content-Type': 'application/json', 30 | 'Accept': '*/*', 31 | 'Sec-Fetch-Site': 'cross-site', 32 | 'Sec-Fetch-Mode': 'cors', 33 | 'Sec-Fetch-Dest': 'empty', 34 | 'Referer': 'https://servicewechat.com/wx872a12ca93eeba47/55/page-frame.html', 35 | # 'Accept-Encoding': 'gzip, deflate, br', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | 39 | def login(self): 40 | params = { 41 | 'taskId': '838', 42 | } 43 | response = self.sec.get( 44 | 'https://clubwx.hm.liby.com.cn/miniprogram/benefits/activity/sign/execute.htm', 45 | params=params 46 | ) 47 | print(response.text) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, hbb) 52 | -------------------------------------------------------------------------------- /hqkj.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-红旗空间") 4 | env add hqkj_data 5 | hqkj_data 值为cookie 内容为 JSESSIONID=XXX 即可 6 | 可能返回是报错 实际是积分加的 7 | 8 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 9 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 10 | """ 11 | 12 | import json 13 | import os 14 | import traceback 15 | import requests 16 | import urllib3 17 | 18 | import ApiRequest 19 | import mytool 20 | 21 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 22 | 23 | title = '微信小程序-红旗空间' 24 | tokenName = 'hqkj_data' 25 | 26 | 27 | class hqkj(ApiRequest.ApiRequest): 28 | def __init__(self, data): 29 | super().__init__() 30 | self.sec.headers = { 31 | 'Host': 'hqpp-gw.faw.cn', 32 | 'Connection': 'keep-alive', 33 | 'cookie': data, 34 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090819) XWEB/8531', 35 | 'Content-Type': 'application/json', 36 | 'Accept': '*/*', 37 | 'Referer': 'https://servicewechat.com/wxf076d8670405c937/166/page-frame.html', 38 | 'Accept-Language': 'zh-CN,zh;q=0.9', 39 | } 40 | 41 | def login(self): 42 | params = { 43 | '_timestamp': str(mytool.getMSecTimestamp()), 44 | } 45 | rj = self.sec.get('https://hqpp-gw.faw.cn/gimc-hongqi-webapp/f/checkin/user-checkin/', params=params).json() 46 | print(rj) # 虽然报错 但是实际上能签到成功 47 | 48 | 49 | 50 | if __name__ == '__main__': 51 | # DEBUG 52 | # if os.path.exists('debug.py'): 53 | # import debug 54 | # debug.setDebugEnv() 55 | # 56 | # if mytool.getlistCk(f'{tokenName}') is None: 57 | # print(f'请检查你的变量名称 {tokenName} 是否填写正确') 58 | # exit(0) 59 | # else: 60 | # for i in mytool.getlistCk(f'{tokenName}'): 61 | # hqkj(i).login() 62 | ApiRequest.ApiMain(['login']).run(tokenName, hqkj) -------------------------------------------------------------------------------- /hrj.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 5 * * * 3 | new Env("微信小程序-好人家") 4 | env add hrjmwshg 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | import mytool 13 | 14 | tokenName = 'hrjmwshg' 15 | msg = '' 16 | 17 | 18 | class hrj(ApiRequest.ApiRequest): 19 | def __init__(self, data): 20 | super().__init__() 21 | self.sec.headers = { 22 | 'Accept': '*/*', 23 | 'Accept-Language': 'zh-CN,zh;q=0.9', 24 | 'Connection': 'keep-alive', 25 | 'Content-Type': 'application/json', 26 | 'Sec-Fetch-Mode': 'cors', 27 | 'Sec-Fetch-Site': 'cross-site', 28 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b) XWEB/9129', 29 | 'X-WX-Token': data 30 | } 31 | 32 | def login(self): 33 | json_data = { 34 | 'appid': 'wx160c589739c6f8b0', 35 | 'basicInfo': { 36 | 'vid': 6015869513273, 37 | 'vidType': 2, 38 | 'bosId': 4021565647273, 39 | 'productId': 146, 40 | 'productInstanceId': 8689224273, 41 | 'productVersionId': '10003', 42 | 'merchantId': 2000210519273, 43 | 'tcode': 'weimob', 44 | 'cid': 505934273, 45 | }, 46 | 'extendInfo': { 47 | 'wxTemplateId': 7604, 48 | 'analysis': [], 49 | 'bosTemplateId': 1000001541, 50 | 'childTemplateIds': [ 51 | { 52 | 'customId': 90004, 53 | 'version': 'crm@0.1.23', 54 | }, 55 | { 56 | 'customId': 90002, 57 | 'version': 'ec@48.0', 58 | }, 59 | { 60 | 'customId': 90006, 61 | 'version': 'hudong@0.0.209', 62 | }, 63 | { 64 | 'customId': 90008, 65 | 'version': 'cms@0.0.440', 66 | }, 67 | { 68 | 'customId': 90060, 69 | 'version': 'elearning@0.1.1', 70 | }, 71 | ], 72 | 'quickdeliver': { 73 | 'enable': False, 74 | }, 75 | 'youshu': { 76 | 'enable': False, 77 | }, 78 | 'source': 1, 79 | 'channelsource': 5, 80 | 'refer': 'onecrm-signgift', 81 | 'mpScene': 1053, 82 | }, 83 | 'queryParameter': None, 84 | 'i18n': { 85 | 'language': 'zh', 86 | 'timezone': '8', 87 | }, 88 | 'pid': '', 89 | 'storeId': '', 90 | 'customInfo': { 91 | 'source': 0, 92 | 'wid': 11141551873, 93 | }, 94 | } 95 | 96 | rj = self.sec.post('https://xapi.weimob.com/api3/onecrm/mactivity/sign/misc/sign/activity/core/c/sign', json=json_data).json() 97 | print(rj) 98 | 99 | 100 | if __name__ == '__main__': 101 | ApiRequest.ApiMain(['login']).run(tokenName, hrj) 102 | -------------------------------------------------------------------------------- /htmwg.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-海天美味馆") 3 | cron 0 8 * * * 4 | 环境变量名称 wx_htmw_auth = Authorization#uuid 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import traceback 10 | from datetime import datetime 11 | 12 | import ApiRequest 13 | from notify import send 14 | 15 | title = '微信小程序-海天美味馆' 16 | tokenName = 'wx_htmw_auth' 17 | 18 | 19 | class htmwg(ApiRequest.ApiRequest): 20 | def __init__(self, data): 21 | super().__init__() 22 | self.sec.headers = { 23 | 'Host': 'cmallapi.haday.cn', 24 | 'Connection': 'keep-alive', 25 | # 'Content-Length': '41', 26 | 'Content-Type': 'application/json', 27 | 'xweb_xhr': '1', 28 | 'uuid': data.split('#')[1], 29 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b) XWEB/9129', 30 | 'envVersion': 'release', 31 | 'Authorization': data.split('#')[0], 32 | 'Referer': 'https://servicewechat.com/wx7a890ea13f50d7b6/595/page-frame.html', 33 | # 'Accept-Encoding': 'gzip, deflate, br', 34 | 'Accept-Language': 'zh-CN,zh;q=0.9', 35 | } 36 | 37 | def login(self): 38 | data = { 39 | 'activity_code': '202407', 40 | 'fill_date': '', 41 | } 42 | response = self.sec.post('https://cmallapi.haday.cn/buyer-api/sign/activity/sign', json=data) 43 | print(response.text) 44 | 45 | 46 | if __name__ == "__main__": 47 | ApiRequest.ApiMain(['login']).run(tokenName, htmwg) 48 | -------------------------------------------------------------------------------- /huazhu.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-华住签到") 3 | cron 0 7 * * * 4 | 环境变量名称 huazhu_cookies 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import ApiRequest 11 | import mytool 12 | 13 | title = '微信小程序-华住签到' 14 | tokenName = 'huazhu_cookies' 15 | 16 | 17 | class huazhu(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | "Host": "appgw.huazhu.com", 22 | "Connection": "keep-alive", 23 | "Accept": "application/json, text/plain, */*", 24 | "Client-Platform": "WX-MP", 25 | "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(0x63090c11)XWEB/11275", 26 | "Origin": "http", 27 | "Sec-Fetch-Site": "same-site", 28 | "Sec-Fetch-Mode": "cors", 29 | "Sec-Fetch-Dest": "empty", 30 | "Referer": "http", 31 | "Accept-Encoding": "gzip, deflate, br", 32 | "Accept-Language": "zh-CN,zh;q=0.9", 33 | "Cookie": data 34 | } 35 | pass 36 | 37 | def login(self): 38 | url = f"https://appgw.huazhu.com/game/sign_in?date={mytool.getSecTimestamp()}" 39 | rj = self.sec.get(url) 40 | print(rj.json()) 41 | 42 | if __name__ == "__main__": 43 | ApiRequest.ApiMain(['login']).run(tokenName, huazhu) 44 | -------------------------------------------------------------------------------- /ikuuu.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("WEB-ikuuu") 4 | env add web_ikuuu = user#passwd 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | 9 | """ 10 | # !/usr/bin/env python3 11 | # coding: utf-8 12 | import ApiRequest 13 | 14 | tokenName = 'web_ikuuu' 15 | msg = '' 16 | 17 | 18 | class ikuuu(ApiRequest.ApiRequest): 19 | def __init__(self, data): 20 | super().__init__() 21 | self.sec.headers = { 22 | 'authority': 'ikuuu.pw', 23 | 'accept': 'application/json, text/javascript, */*; q=0.01', 24 | 'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', 25 | 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', 26 | # 'cookie': 'lang=zh-cn; _gid=GA1.2.1830428982.1709332118; ip=e1843fa01e71e2bc761078f1d7366830; expire_in=1709420582; _ga=GA1.1.2125388976.1709033063; _ga_8HVN7928SC=GS1.1.1709334123.3.1.1709334196.0.0.0', 27 | 'origin': 'https://ikuuu.pw', 28 | 'referer': 'https://ikuuu.pw/auth/login', 29 | 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Microsoft Edge";v="120"', 30 | 'sec-ch-ua-mobile': '?0', 31 | 'sec-ch-ua-platform': '"Windows"', 32 | 'sec-fetch-dest': 'empty', 33 | 'sec-fetch-mode': 'cors', 34 | 'sec-fetch-site': 'same-origin', 35 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0', 36 | 'x-requested-with': 'XMLHttpRequest', 37 | } 38 | 39 | def login(self): 40 | data = { 41 | 'email': 'darkbfly@163.com', 42 | 'passwd': 'wlwzzfz123.', 43 | 'code': '', 44 | } 45 | response = self.sec.post('https://ikuuu.pw/auth/login', data=data) 46 | print(response.text.encode('utf-8').decode('unicode_escape')) 47 | 48 | 49 | if __name__ == '__main__': 50 | ApiRequest.ApiMain(['login']).run(tokenName, ikuuu) 51 | -------------------------------------------------------------------------------- /invalid/runPC-mshy.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import traceback 3 | 4 | from mytool import * 5 | 6 | 微信路径 = getJsonConfig("wechatPath") 7 | 8 | try: 9 | subprocess.run(微信路径) 10 | 点击图片中心(path='../pc-mshy', png="1.png") 11 | if 寻找是否存在(path='../pc-mshy', png="2.png") is False: 12 | raise Exception("未找到搜一搜图片") 13 | else: 14 | 点击图片中心("../pc-asm", "search.png") 15 | 输入中文('慕思会员') 16 | 点击图片中心(path='../pc-mshy', png="3.png") 17 | 点击图片中心(path='../pc-mshy', png="4.png") 18 | 点击图片中心(path='../pc-mshy', png="5.png") 19 | 点击图片中心(path='../pc-mshy', png="6.png") 20 | 点击图片中心(path='../pc-mshy', png="7.png") 21 | except : 22 | traceback.print_exc() 23 | pass 24 | -------------------------------------------------------------------------------- /invalid/runPC-tyasm.py: -------------------------------------------------------------------------------- 1 | import subprocess 2 | import pyautogui 3 | from mytool import * 4 | 5 | 微信路径 = getJsonConfig("wechatPath") 6 | 7 | 8 | def 打开微信(): 9 | subprocess.run(微信路径) 10 | 点击图片中心("../pc-asm", "1.png") 11 | if 寻找是否存在("../pc-asm", "2.png") is False: 12 | raise Exception("未找到搜一搜图片") 13 | else: 14 | 点击图片中心("../pc-asm", "search.png") 15 | 输入中文('统一快乐星球') 16 | 点击图片中心("../pc-asm", "3.png") 17 | 点击图片中心("../pc-asm", "4.png", 5) 18 | 19 | 点击图片中心("../pc-asm", "skip.png", 5) 20 | 点击图片中心("../pc-asm", "close2.png", 5) 21 | if 寻找是否存在("../pc-asm", "5.png", 10) is False: 22 | raise Exception("未找到阿萨姆入口") 23 | else: 24 | 点击图片中心("../pc-asm", "5.png") 25 | 点击图片中心("../pc-asm", "6.png", 10) 26 | 27 | time.sleep(1) 28 | print("开始执行签到任务") 29 | for i in list(pyautogui.locateAllOnScreen(os.path.dirname(os.path.abspath(__file__)) + "\\pc-asm\\sign.png")): 30 | print(i) 31 | pyautogui.click(pyautogui.center(i)) 32 | time.sleep(1) 33 | print("开始执行其他任务") 34 | for i in list(pyautogui.locateAllOnScreen(os.path.dirname(os.path.abspath(__file__)) + "\\pc-asm\\finish.png")): 35 | print(i) 36 | pyautogui.click(pyautogui.center(i)) 37 | 点击图片中心("../pc-asm", "close.png") 38 | time.sleep(1) 39 | pyautogui.hotkey("alt", "f4") 40 | pass 41 | 42 | 43 | if __name__ == '__main__': 44 | 打开微信() 45 | -------------------------------------------------------------------------------- /invalid/yaduo.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 6,18 * * * 3 | new Env("微信小程序-亚朵") 4 | env add yd_wxcookies 5 | """ 6 | import datetime 7 | # !/usr/bin/env python3 8 | # coding: utf-8 9 | 10 | import json 11 | import os 12 | import traceback 13 | import requests 14 | 15 | import ApiRequest 16 | import mytool 17 | from notify import send 18 | import urllib3 19 | 20 | title = '微信小程序-亚朵' 21 | tokenName = 'yd_wxcookies' 22 | 23 | 24 | class yd(ApiRequest.ApiRequest): 25 | def __init__(self, data): 26 | super().__init__() 27 | self.sec.headers = { 28 | 'Host': 'miniapp.yaduo.com', 29 | 'Connection': 'keep-alive', 30 | 'Accept': 'application/json, text/plain, */*', 31 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 32 | 'Origin': 'https://wechat.yaduo.com', 33 | 'Referer': 'https://wechat.yaduo.com/', 34 | 'Accept-Language': 'zh-CN,zh;q=0.9', 35 | } 36 | self.cookies = { 37 | 'user-valid': data[0], 38 | } 39 | self.token = data[1] 40 | 41 | def login(self): 42 | params = { 43 | 'token': self.token, 44 | 'platType': '6', 45 | 'appVer': '3.24.2', 46 | 'channelId': '300001', 47 | 'activitySource': '', 48 | 'activityId': '', 49 | 'activeId': '', 50 | } 51 | 52 | res = self.sec.get('https://miniapp.yaduo.com/atourlife/signIn/signIn', params=params, cookies=self.cookies) 53 | print(res.text) 54 | 55 | def lottery(self): 56 | params = { 57 | 'token': self.token, 58 | 'platType': '6', 59 | 'appVer': '3.24.2', 60 | 'channelId': '300001', 61 | 'activitySource': '', 62 | 'activityId': '', 63 | 'activeId': '', 64 | # 随机数0-5 65 | 'code': 0, 66 | } 67 | 68 | res = self.sec.get('https://miniapp.yaduo.com/atourlife/signIn/lottery', params=params, cookies=self.cookies) 69 | print(res.text) 70 | 71 | 72 | if __name__ == '__main__': 73 | ApiRequest.ApiMain(['login']).run(tokenName, yd) 74 | -------------------------------------------------------------------------------- /js/bsd.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | const $ = new Env("波司登小程序"); 4 | let ckName = `bosideng`; 5 | let userCookie = checkEnv( 6 | ($.isNode() ? process.env[ckName] : $.getdata(ckName)) || "" 7 | ); 8 | const notify = $.isNode() ? require("./sendNotify") : ""; 9 | 10 | !(async () => { 11 | console.log( 12 | `==================================================\n 脚本执行 - 北京时间(UTC+8): ${new Date( 13 | new Date().getTime() + 14 | new Date().getTimezoneOffset() * 60 * 1000 + 15 | 8 * 60 * 60 * 1000 16 | ).toLocaleString()} \n==================================================` 17 | ); 18 | //console.log(userCookie) 19 | if (!userCookie?.length) return console.log(`没有找到CK哦`); 20 | let index = 1; 21 | let strSplitor = "#"; 22 | 23 | for (let user of userCookie) { 24 | $.log(`\n🚀 user:【${index}】 start work\n`); 25 | index++ 26 | $.token = user.split(strSplitor)[0] 27 | $.union_id = user.split(strSplitor)[1] 28 | $.ckStatus = true; 29 | await records() 30 | } 31 | 32 | await $.sendMsg($.logs.join("\n")); 33 | })() 34 | .catch((e) => console.log(e)) 35 | .finally(() => $.done()); 36 | function getTime() { 37 | // 创建Date对象 38 | const now = new Date(); 39 | // 获取年、月、日、时、分、秒,并格式化为两位数 40 | const year = now.getFullYear(); 41 | const month = String(now.getMonth() + 1).padStart(2, '0'); // getMonth返回的是0-11,所以需要+1 42 | const day = String(now.getDate()).padStart(2, '0'); 43 | const hours = String(now.getHours()).padStart(2, '0'); 44 | const minutes = String(now.getMinutes()).padStart(2, '0'); 45 | const seconds = String(now.getSeconds()).padStart(2, '0'); 46 | const timestampStr = `${year}${month}${day}${hours}${minutes}${seconds}`; 47 | return timestampStr 48 | // 调用函数并打印结果 49 | } 50 | function MD5(data) { 51 | let crypto = require('crypto') 52 | return crypto.createHash('md5').update(data).digest('hex') 53 | } 54 | async function records() { 55 | let time = getTime() 56 | let nonce = $.uuid() 57 | let text = `${$.union_id}${$.token}${time}${nonce}` 58 | let config = { 59 | method: 'GET', 60 | url: `https://gwuop.bsdits.cn/points-mall/front/member/${$.union_id}/activities/1/records`, 61 | headers: { 62 | 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/122.0.6261.120 Mobile Safari/537.36 XWEB/1220089 MMWEBSDK/20240404 MMWEBID/8150 MicroMessenger/8.0.49.2600(0x28003156) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android', 63 | 'Accept-Encoding': 'gzip,compress,br,deflate', 64 | 'charset': 'utf-8', 65 | 'x-nonce': nonce, 66 | 'x-datadog-sampling-priority': '1', 67 | 'x-timestamp': time, 68 | 'x-datadog-origin': 'rum', 69 | 'bgno': 'BOSIDENG', 70 | 'x-signature': MD5(text).toUpperCase(), 71 | 'content-type': 'application/json', 72 | 'x-login-type': 'MiniProgram', 73 | 'x-access-token': $.token, 74 | 'Referer': 'https://servicewechat.com/wx3f8f90e766e5c545/355/page-frame.html' 75 | } 76 | }; 77 | 78 | let { data: result } = await Request(config) 79 | if (result.code == 200) { 80 | if (result.result.isSigned !== 1) { 81 | $.log(`未签到 ===> 签到ing`) 82 | await signIn() 83 | } else { 84 | $.log(`已签到 ===> 什么都不做`) 85 | } 86 | $.log(`🎉 签到信息查询成功,当前签到${result.result.signedDay}天 本次签到获得积分[${result.result.records[0].rewardPoints}]`) 87 | } else { 88 | $.log(`❌ 签到信息查询失败,原因:${result.message}`) 89 | } 90 | } 91 | async function signIn() { 92 | let data = JSON.stringify({}); 93 | let time = getTime() 94 | let nonce = $.uuid() 95 | let text = `${$.union_id}${$.token}${time}${nonce}` 96 | let config = { 97 | method: 'POST', 98 | url: 'https://gwuop.bsdits.cn/points-mall/front/points/', 99 | headers: { 100 | 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/122.0.6261.120 Mobile Safari/537.36 XWEB/1220089 MMWEBSDK/20240404 MMWEBID/8150 MicroMessenger/8.0.49.2600(0x28003156) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android', 101 | 'Accept-Encoding': 'gzip,compress,br,deflate', 102 | 'charset': 'utf-8', 103 | 'x-nonce': nonce, 104 | 'x-datadog-sampling-priority': '1', 105 | 'x-timestamp': time, 106 | 'x-datadog-origin': 'rum', 107 | 'bgno': 'BOSIDENG', 108 | 'x-signature': MD5(text).toUpperCase(), 109 | 'content-type': 'application/json', 110 | 'x-login-type': 'MiniProgram', 111 | 'x-access-token': $.token, 112 | 'Referer': 'https://servicewechat.com/wx3f8f90e766e5c545/355/page-frame.html' 113 | }, 114 | data: data 115 | }; 116 | let { data: result } = await Request(config) 117 | if (result.code == 200) { 118 | $.log(result) 119 | $.log(`🎉 签到成功`) 120 | } else { 121 | $.log(`❌ 签到失败,原因:${result.message}`) 122 | } 123 | } 124 | 125 | 126 | function checkEnv(userCookie) { 127 | const envSplitor = ["&", "\n"]; 128 | console.log(userCookie); 129 | let userList = userCookie 130 | .split(envSplitor.find((o) => userCookie.includes(o)) || "&") 131 | .filter((n) => n); 132 | console.log(`共找到${userList.length}个账号`); 133 | return userList; 134 | } 135 | // prettier-ignore 136 | function Env(t, s) { return new (class { constructor(t, s) { this.name = t; this.logs = []; this.logSeparator = "\n"; this.startTime = new Date().getTime(); Object.assign(this, s); this.log("", `\ud83d\udd14${this.name},\u5f00\u59cb!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } queryStr(options) { return Object.entries(options).map(([key, value]) => `${key}=${typeof value === "object" ? JSON.stringify(value) : value}`).join("&") } getURLParams(url) { const params = {}; const queryString = url.split("?")[1]; if (queryString) { const paramPairs = queryString.split("&"); paramPairs.forEach((pair) => { const [key, value] = pair.split("="); params[key] = value }) } return params } isJSONString(str) { try { return JSON.parse(str) && typeof JSON.parse(str) === "object" } catch (e) { return false } } isJson(obj) { var isjson = typeof obj == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; return isjson } async sendMsg(message) { if (!message) return; if (this.isNode()) { await notify.sendNotify(this.name, message) } else { this.msg(this.name, "", message) } } randomNumber(length) { const characters = "0123456789"; return Array.from({ length }, () => characters[Math.floor(Math.random() * characters.length)]).join("") } randomString(length) { const characters = "abcdefghijklmnopqrstuvwxyz0123456789"; return Array.from({ length }, () => characters[Math.floor(Math.random() * characters.length)]).join("") } uuid() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { var r = (Math.random() * 16) | 0, v = c == "x" ? r : (r & 0x3) | 0x8; return v.toString(16) }) } time(t) { let s = { "M+": new Date().getMonth() + 1, "d+": new Date().getDate(), "H+": new Date().getHours(), "m+": new Date().getMinutes(), "s+": new Date().getSeconds(), "q+": Math.floor((new Date().getMonth() + 3) / 3), S: new Date().getMilliseconds(), }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (new Date().getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in s) { new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ("00" + s[e]).substr(("" + s[e]).length))) } return t } msg(title = t, subtitle = "", body = "", options) { const formatOptions = (options) => { if (!options) { return options } else if (typeof options === "string") { if (this.isQuanX()) { return { "open-url": options } } else { return undefined } } else if (typeof options === "object" && (options["open-url"] || options["media-url"])) { if (this.isQuanX()) { return options } else { return undefined } } else { return undefined } }; if (!this.isMute) { if (this.isQuanX()) { $notify(title, subtitle, body, formatOptions(options)) } } let logs = ["", "==============📣系统通知📣=============="]; logs.push(title); subtitle ? logs.push(subtitle) : ""; body ? logs.push(body) : ""; console.log(logs.join("\n")); this.logs = this.logs.concat(logs) } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, s) { const e = !this.isQuanX(); e ? this.log("", `\u2757\ufe0f${this.name},\u9519\u8bef!`, t.stack) : this.log("", `\u2757\ufe0f${this.name},\u9519\u8bef!`, t) } wait(t) { return new Promise((s) => setTimeout(s, t)) } done(t = {}) { const s = new Date().getTime(), e = (s - this.startTime) / 1e3; this.log("", `\ud83d\udd14${this.name},\u7ed3\u675f!\ud83d\udd5b ${e}\u79d2`); this.log(); if (this.isNode()) { process.exit(1) } if (this.isQuanX()) { $done(t) } } })(t, s) } 137 | 138 | async function Request(options) { 139 | if ($.isNode()) { 140 | const axios = require("axios"); 141 | Request = async (options) => { 142 | try { 143 | return await axios.request(options); 144 | } catch (error) { 145 | return error && error.error ? error.error : "请求失败"; 146 | } 147 | }; 148 | } 149 | if ($.isQuanX()) { 150 | Request = async (options) => { 151 | try { 152 | return await $task.fetch(options); 153 | } catch (error) { 154 | return error && error.error ? error.error : "请求失败"; 155 | } 156 | }; 157 | } 158 | return await Request(options); 159 | } -------------------------------------------------------------------------------- /js/媓钻.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | ------------------------------------------ 4 | 5 | @Description: 媓钻 小程序 6 | ------------------------------------------ 7 | 变量名huangzuan_WX 8 | 变量值https://api.hzyxhfp.com/api/ 请求头Headers中authorization的值 去掉Bearer 多账号&或换行或新建同名变量 9 | [Script] 10 | http-response 11 | 12 | [MITM] 13 | hostname = 14 | 15 | */ 16 | 17 | const $ = new Env("媓钻小程序"); 18 | let ckName = `huangzuan_WX`; 19 | let userCookie = checkEnv( 20 | ($.isNode() ? process.env[ckName] : $.getdata(ckName)) || "" 21 | ); 22 | const notify = $.isNode() ? require("./sendNotify") : ""; 23 | 24 | !(async () => { 25 | console.log( 26 | `==================================================\n 脚本执行 - 北京时间(UTC+8): ${new Date( 27 | new Date().getTime() + 28 | new Date().getTimezoneOffset() * 60 * 1000 + 29 | 8 * 60 * 60 * 1000 30 | ).toLocaleString()} \n==================================================` 31 | ); 32 | //console.log(userCookie) 33 | if (!userCookie?.length) return console.log(`没有找到CK哦`); 34 | let index = 0; 35 | //let strSplitor = "#"; 36 | 37 | for (let user of userCookie) { 38 | $.log(`\n🚀 user:【${index || ++index}】 start work\n`); 39 | $.token = user 40 | $.ckStatus = false; 41 | await signIn() 42 | for (let i = 0; i < 2; i++) { 43 | await play() 44 | await $.wait(5000) 45 | 46 | if ($.ckStatus) { 47 | await lottery() 48 | 49 | } 50 | } 51 | 52 | } 53 | 54 | await $.sendMsg($.logs.join("\n")); 55 | })() 56 | .catch((e) => console.log(e)) 57 | .finally(() => $.done()); 58 | //取150-200随机数 59 | function getRandomInt(min, max) { 60 | min = Math.ceil(min); 61 | max = Math.floor(max); 62 | return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值 63 | } 64 | async function signIn() { 65 | 66 | let data = JSON.stringify({}); 67 | 68 | let config = { 69 | method: 'POST', 70 | url: 'https://api.hzyxhfp.com/api/signInLog/addSignIn', 71 | headers: { 72 | 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/122.0.6261.120 Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240404 MMWEBID/8150 MicroMessenger/8.0.49.2600(0x28003156) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android', 73 | 'Accept-Encoding': 'gzip,compress,br,deflate', 74 | 'app': 'wx3df7476c42cace5d', 75 | 'authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2FwaS5oenl4aGZwLmNvbS9hcGkveWZtR2V0QXV0aFVzZXIiLCJpYXQiOjE3MTc4MjQ4NzMsImV4cCI6MjMxNzgyNDgxMywibmJmIjoxNzE3ODI0ODczLCJqdGkiOiJxdWRGcUlLaHRxWUd3Y0dIIiwic3ViIjozMDIwMTk5LCJwcnYiOiJjNzdlYWJjNmQyOWRiY2UwYjU1ZTk4YmRlYzM5MWI1NDlhNWVmMWYwIn0.0akWVLgE0Bd8_a-EOIQiC8dB_xiiOc2Y40xIVQnBRkU', 76 | 'charset': 'utf-8', 77 | 'content-type': 'application/json;charset=UTF-8', 78 | 'Referer': 'https://servicewechat.com/wx3df7476c42cace5d/370/page-frame.html' 79 | }, 80 | data: data 81 | }; 82 | let { data: result } = await Request(config) 83 | result?.code == 0 ? ($.log(`签到成功 已签到[${result.data.cont_days}]天`)) : ($.log(`签到失败`), console.log(JSON.stringify(result))) 84 | 85 | } 86 | async function play() { 87 | let data = JSON.stringify({ 88 | "id": "1", 89 | "score": getRandomInt(150, 200) 90 | }); 91 | 92 | let config = { 93 | method: 'POST', 94 | url: 'https://api.hzyxhfp.com/api/dragonActivity/addDragonScore', 95 | headers: { 96 | 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/122.0.6261.120 Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240404 MMWEBID/8150 MicroMessenger/8.0.49.2600(0x28003156) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android', 97 | 'Accept-Encoding': 'gzip,compress,br,deflate', 98 | 'app': 'wx3df7476c42cace5d', 99 | 'authorization': 'Bearer ' + $.token, 100 | 'charset': 'utf-8', 101 | 'content-type': 'application/json;charset=UTF-8', 102 | 'Referer': 'https://servicewechat.com/wx3df7476c42cace5d/370/page-frame.html' 103 | }, 104 | data: data 105 | }; 106 | let { data: result } = await Request(config) 107 | result?.code == 0 ? ($.log(`游戏成功`), $.ckStatus = true) : ($.log(`游戏失败`), console.log(JSON.stringify(result))) 108 | } 109 | async function lottery() { 110 | let data = JSON.stringify({ 111 | "id": "1" 112 | }); 113 | 114 | let config = { 115 | method: 'POST', 116 | url: 'https://api.hzyxhfp.com/api/dragonActivity/getDragonPrizeResult', 117 | headers: { 118 | 'User-Agent': 'Mozilla/5.0 (Linux; Android 10; MI 8 Lite Build/QKQ1.190910.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/122.0.6261.120 Mobile Safari/537.36 XWEB/1220067 MMWEBSDK/20240404 MMWEBID/8150 MicroMessenger/8.0.49.2600(0x28003156) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 MiniProgramEnv/android', 119 | 'Accept-Encoding': 'gzip,compress,br,deflate', 120 | 'app': 'wx3df7476c42cace5d', 121 | 'authorization': 'Bearer ' + $.token, 122 | 'charset': 'utf-8', 123 | 'content-type': 'application/json;charset=UTF-8', 124 | 'Referer': 'https://servicewechat.com/wx3df7476c42cace5d/370/page-frame.html' 125 | }, 126 | data: data 127 | }; 128 | let { data: result } = await Request(config) 129 | result?.code == 0 ? $.log(`抽奖[${result.data.title}]`) : ($.log(`抽奖失败`), console.log(JSON.stringify(result))) 130 | } 131 | 132 | function checkEnv(userCookie) { 133 | const envSplitor = ["&", "\n"]; 134 | console.log(userCookie); 135 | let userList = userCookie 136 | .split(envSplitor.find((o) => userCookie.includes(o)) || "&") 137 | .filter((n) => n); 138 | console.log(`共找到${userList.length}个账号`); 139 | return userList; 140 | } 141 | // prettier-ignore 142 | function Env(t, s) { return new (class { constructor(t, s) { this.name = t; this.logs = []; this.logSeparator = "\n"; this.startTime = new Date().getTime(); Object.assign(this, s); this.log("", `\ud83d\udd14${this.name},\u5f00\u59cb!`) } isNode() { return "undefined" != typeof module && !!module.exports } isQuanX() { return "undefined" != typeof $task } queryStr(options) { return Object.entries(options).map(([key, value]) => `${key}=${typeof value === "object" ? JSON.stringify(value) : value}`).join("&") } getURLParams(url) { const params = {}; const queryString = url.split("?")[1]; if (queryString) { const paramPairs = queryString.split("&"); paramPairs.forEach((pair) => { const [key, value] = pair.split("="); params[key] = value }) } return params } isJSONString(str) { try { return JSON.parse(str) && typeof JSON.parse(str) === "object" } catch (e) { return false } } isJson(obj) { var isjson = typeof obj == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length; return isjson } async sendMsg(message) { if (!message) return; if (this.isNode()) { await notify.sendNotify(this.name, message) } else { this.msg(this.name, "", message) } } randomNumber(length) { const characters = "0123456789"; return Array.from({ length }, () => characters[Math.floor(Math.random() * characters.length)]).join("") } randomString(length) { const characters = "abcdefghijklmnopqrstuvwxyz0123456789"; return Array.from({ length }, () => characters[Math.floor(Math.random() * characters.length)]).join("") } uuid() { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) { var r = (Math.random() * 16) | 0, v = c == "x" ? r : (r & 0x3) | 0x8; return v.toString(16) }) } time(t) { let s = { "M+": new Date().getMonth() + 1, "d+": new Date().getDate(), "H+": new Date().getHours(), "m+": new Date().getMinutes(), "s+": new Date().getSeconds(), "q+": Math.floor((new Date().getMonth() + 3) / 3), S: new Date().getMilliseconds(), }; /(y+)/.test(t) && (t = t.replace(RegExp.$1, (new Date().getFullYear() + "").substr(4 - RegExp.$1.length))); for (let e in s) { new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? s[e] : ("00" + s[e]).substr(("" + s[e]).length))) } return t } msg(title = t, subtitle = "", body = "", options) { const formatOptions = (options) => { if (!options) { return options } else if (typeof options === "string") { if (this.isQuanX()) { return { "open-url": options } } else { return undefined } } else if (typeof options === "object" && (options["open-url"] || options["media-url"])) { if (this.isQuanX()) { return options } else { return undefined } } else { return undefined } }; if (!this.isMute) { if (this.isQuanX()) { $notify(title, subtitle, body, formatOptions(options)) } } let logs = ["", "==============📣系统通知📣=============="]; logs.push(title); subtitle ? logs.push(subtitle) : ""; body ? logs.push(body) : ""; console.log(logs.join("\n")); this.logs = this.logs.concat(logs) } log(...t) { t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) } logErr(t, s) { const e = !this.isQuanX(); e ? this.log("", `\u2757\ufe0f${this.name},\u9519\u8bef!`, t.stack) : this.log("", `\u2757\ufe0f${this.name},\u9519\u8bef!`, t) } wait(t) { return new Promise((s) => setTimeout(s, t)) } done(t = {}) { const s = new Date().getTime(), e = (s - this.startTime) / 1e3; this.log("", `\ud83d\udd14${this.name},\u7ed3\u675f!\ud83d\udd5b ${e}\u79d2`); this.log(); if (this.isNode()) { process.exit(1) } if (this.isQuanX()) { $done(t) } } })(t, s) } 143 | 144 | async function Request(options) { 145 | if ($.isNode()) { 146 | const axios = require("axios"); 147 | Request = async (options) => { 148 | try { 149 | return await axios.request(options); 150 | } catch (error) { 151 | throw error && error.error ? error.error : "请求失败"; 152 | } 153 | }; 154 | } 155 | if ($.isQuanX()) { 156 | Request = async (options) => { 157 | try { 158 | return await $task.fetch(options); 159 | } catch (error) { 160 | throw error && error.error ? error.error : "请求失败"; 161 | } 162 | }; 163 | } 164 | return await Request(options); 165 | } -------------------------------------------------------------------------------- /kbj.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 6,18 * * * kbj.py 3 | new Env("微信小程序-康佰家") 4 | env add kbj_token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import datetime 10 | # !/usr/bin/env python3 11 | # coding: utf-8 12 | 13 | import json 14 | import os 15 | import traceback 16 | import requests 17 | 18 | import ApiRequest 19 | import mytool 20 | import urllib3 21 | 22 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 23 | 24 | title = '微信小程序-康佰家' 25 | tokenName = 'kbj_token' 26 | 27 | 28 | class kbj(ApiRequest.ApiRequest): 29 | def __init__(self, data): 30 | super().__init__() 31 | self.sec.headers = { 32 | 'Host': 'app.fjxzj.com', 33 | 'Connection': 'keep-alive', 34 | 'xweb_xhr': '1', 35 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309071d)XWEB/8461', 36 | 'token': data, 37 | 'Content-Type': 'application/x-www-form-urlencoded', 38 | 'Accept': '*/*', 39 | 'Referer': 'https://servicewechat.com/wxe727824701ee66d4/162/page-frame.html', 40 | # 'Accept-Encoding': 'gzip, deflate, br', 41 | 'Accept-Language': 'zh-CN,zh;q=0.9', 42 | } 43 | 44 | def login(self): 45 | params = { 46 | 'api': 'signin', 47 | } 48 | data = '{}' 49 | rj = self.sec.post('https://app.fjxzj.com/wxscrm/api/member.php', params=params, data=data).json() 50 | print(rj) 51 | 52 | 53 | if __name__ == '__main__': 54 | ApiRequest.ApiMain(['login']).run(tokenName, kbj) 55 | -------------------------------------------------------------------------------- /ksfcys.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 7 * * * 3 | new Env("微信小程序-康师傅畅饮社") 4 | env add ksfcys_data 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import json 10 | import os 11 | import traceback 12 | import requests 13 | 14 | import ApiRequest 15 | import mytool 16 | from notify import send 17 | import urllib3 18 | 19 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 20 | title = '微信小程序-康师傅畅饮社' 21 | tokenName = 'ksfcys_data' 22 | 23 | 24 | class ksfcys(ApiRequest.ApiRequest): 25 | def __init__(self, data): 26 | super().__init__() 27 | self.sec.headers = { 28 | 'Host': 'club.gdshcm.com', 29 | 'Connection': 'keep-alive', 30 | 'Accept': 'application/json, text/plain, */*', 31 | 'xweb_xhr': '1', 32 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309080f)XWEB/8501', 33 | 'Token': data, 34 | 'Content-Type': 'application/x-www-form-urlencoded;', 35 | 'Referer': 'https://servicewechat.com/wx54f3e6a00f7973a7/470/page-frame.html', 36 | } 37 | 38 | def login(self): 39 | response = self.sec.post('https://club.gdshcm.com/api/signIn/integralSignIn', params='', data='{}') 40 | if response.status_code == 200: 41 | rj = response.json() 42 | if rj['code'] == 0: 43 | msg = f"签到成功" 44 | else: 45 | msg = f"签到失败\n" + json.dumps(rj, ensure_ascii=False) 46 | else: 47 | msg = f"签到失败\n" + json.dumps(response.text, ensure_ascii=False) 48 | print(msg) 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, ksfcys) -------------------------------------------------------------------------------- /lbdq.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-老板电器") 3 | cron 0 8 * * * 4 | 环境变量名称 wx_lbdq 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import ApiRequest 11 | import mytool 12 | 13 | title = '微信小程序-老板电器' 14 | tokenName = 'wx_lbdq' 15 | 16 | 17 | class lbdq(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'vip.foxech.com', 22 | 'Connection': 'keep-alive', 23 | 'xweb_xhr': '1', 24 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) XWEB/9129', 25 | 'Content-Type': 'application/json', 26 | 'Referer': 'https://servicewechat.com/wxc8c90950cf4546f6/150/page-frame.html', 27 | 'Accept-Language': 'zh-CN,zh;q=0.9', 28 | } 29 | self.openid = data 30 | def login(self): 31 | s = mytool.getMSecTimestamp() 32 | json_data = { 33 | 'timestamp': s, 34 | 'token': mytool.calculate_md5(str(s) + 'wqewq' + self.openid), 35 | 'openid': self.openid, 36 | } 37 | 38 | response = self.sec.post('https://vip.foxech.com/index.php/api/member/user_sign', json=json_data) 39 | print(response.text) 40 | 41 | 42 | if __name__ == '__main__': 43 | ApiRequest.ApiMain(['login']).run(tokenName, lbdq) 44 | -------------------------------------------------------------------------------- /lbhy.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-立白会员") 4 | env add wx_lbhy = unionId#X-wx8465e1173d1e11b0-Token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'wx_lbhy' 14 | msg = '' 15 | 16 | 17 | class lbhy(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'clubwx.hm.liby.com.cn', 22 | 'Connection': 'keep-alive', 23 | 'platformCode': 'LiBy', 24 | 'xweb_xhr': '1', 25 | 'appId': 'wxc503ab22be5af334', 26 | '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', 27 | 'unionId': data.split('#')[0], 28 | 'X-wxc503ab22be5af334-Token': data.split('#')[1], 29 | 'Content-Type': 'application/json', 30 | 'Accept': '*/*', 31 | 'Sec-Fetch-Site': 'cross-site', 32 | 'Sec-Fetch-Mode': 'cors', 33 | 'Sec-Fetch-Dest': 'empty', 34 | 'Referer': 'https://servicewechat.com/wxc503ab22be5af334/56/page-frame.html', 35 | # 'Accept-Encoding': 'gzip, deflate, br', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | 39 | def login(self): 40 | params = { 41 | 'taskId': '262', 42 | } 43 | response = self.sec.get( 44 | 'https://clubwx.hm.liby.com.cn/miniprogram/benefits/activity/sign/execute.htm', 45 | params=params 46 | ) 47 | print(response.text) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, lbhy) 52 | -------------------------------------------------------------------------------- /lbxb.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-立白小白") 4 | env add lbvip2 = unionId#X-wx8465e1173d1e11b0-Token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'lbvip2' 14 | msg = '' 15 | 16 | 17 | class lbxb(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = headers = { 21 | 'Host': 'clubwx.hm.liby.com.cn', 22 | 'Connection': 'keep-alive', 23 | 'platformCode': 'XiaoBaiBai', 24 | 'xweb_xhr': '1', 25 | 'appId': 'wxde54fd27cb59db51', 26 | 'unionId': data.split('#')[0], 27 | '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', 28 | 'X-wxde54fd27cb59db51-Token': data.split('#')[1], 29 | 'Content-Type': 'application/json', 30 | 'Accept': '*/*', 31 | 'Sec-Fetch-Site': 'cross-site', 32 | 'Sec-Fetch-Mode': 'cors', 33 | 'Sec-Fetch-Dest': 'empty', 34 | 'Referer': 'https://servicewechat.com/wxde54fd27cb59db51/41/page-frame.html', 35 | # 'Accept-Encoding': 'gzip, deflate, br', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | 39 | def login(self): 40 | params = { 41 | 'taskId': '839', 42 | } 43 | response = self.sec.get( 44 | 'https://clubwx.hm.liby.com.cn/miniprogram/benefits/activity/sign/execute.htm', 45 | params=params 46 | ) 47 | print(response.text) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, lbxb) 52 | -------------------------------------------------------------------------------- /llj.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-立乐家") 4 | env add wx_llj = unionId#X-wx8465e1173d1e11b0-Token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'wx_llj' 14 | msg = '' 15 | 16 | 17 | class llj(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'clubwx.hm.liby.com.cn', 22 | 'Connection': 'keep-alive', 23 | 'Content-Type': 'application/json', 24 | 'platformCode': 'LiLeJia', 25 | 'xweb_xhr': '1', 26 | 'appId': 'wxb9f68ca2da513bb2', 27 | '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', 28 | 'unionId': data.split('#')[0], 29 | 'X-wxb9f68ca2da513bb2-Token': data.split('#')[1], 30 | 'Accept': '*/*', 31 | 'Sec-Fetch-Site': 'cross-site', 32 | 'Sec-Fetch-Mode': 'cors', 33 | 'Sec-Fetch-Dest': 'empty', 34 | 'Referer': 'https://servicewechat.com/wxb9f68ca2da513bb2/107/page-frame.html', 35 | # 'Accept-Encoding': 'gzip, deflate, br', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | 39 | def login(self): 40 | params = { 41 | 'taskId': '503', 42 | } 43 | response = self.sec.get( 44 | 'https://clubwx.hm.liby.com.cn/miniprogram/benefits/activity/sign/execute.htm', 45 | params=params 46 | ) 47 | print(response.text) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, llj) 52 | -------------------------------------------------------------------------------- /mytool.py: -------------------------------------------------------------------------------- 1 | import uuid 2 | import hashlib 3 | import os 4 | import random 5 | import re 6 | import time 7 | from datetime import datetime 8 | from zoneinfo import ZoneInfo 9 | 10 | 11 | def getlistCk(ckname): 12 | if os.getenv(ckname) is None: 13 | return None 14 | # 字符串用回车或@符号分开为list 15 | return re.split(r'\n|@|&', os.getenv(ckname)) 16 | 17 | 18 | # 获取北京时间 带时区 19 | def gettime(): 20 | return datetime.now(tz=ZoneInfo('Asia/Shanghai')) 21 | 22 | def getdate(strf = "%Y-%m-%d"): 23 | return datetime.now(tz=ZoneInfo('Asia/Shanghai')).strftime(strf) 24 | 25 | def getSecTimestamp(): 26 | return int(time.time()) 27 | 28 | 29 | def getMSecTimestamp(): 30 | return int(time.time() * 1000) 31 | 32 | 33 | # 随机休眠几秒 随机数为float 34 | def sleep(x, y): 35 | a = random.uniform(x, y) 36 | print(f"随机休眠 {a} 秒") 37 | time.sleep(a) 38 | 39 | 40 | def 输入中文(text): 41 | import pyautogui 42 | import pyperclip 43 | time.sleep(1) 44 | pyperclip.copy(text) 45 | pyautogui.hotkey("ctrl", "v") 46 | 47 | 48 | def 点击图片中心(path="", png="", timeout=3): 49 | import pyautogui 50 | time.sleep(1) 51 | if 寻找是否存在(path, png, timeout): 52 | print(f"找到{png}, 开始执行") 53 | pyautogui.click(pyautogui.center( 54 | pyautogui.locateOnScreen(os.path.dirname(os.path.abspath(__file__)) + f'\\{path}\\{png}', confidence=0.8))) 55 | 56 | 57 | def 寻找是否存在(path="", png="", timeout=3): 58 | import pyautogui 59 | while timeout > 0: 60 | if pyautogui.locateOnScreen(os.path.dirname(os.path.abspath(__file__)) + f'\\{path}\\{png}', 61 | confidence=0.8) is None: 62 | timeout -= 1 63 | time.sleep(1) 64 | continue 65 | else: 66 | return True 67 | return False 68 | 69 | 70 | def getJsonConfig(name): 71 | import json 72 | with open(os.path.dirname(os.path.abspath(__file__)) + f'\\config.json', 'r') as f: 73 | return json.load(f)[name] 74 | 75 | def randomint(len): 76 | return random.randint(10 ** (len - 1), 10 ** len - 1) 77 | 78 | def randomint(max, min=0): 79 | return random.randint(min, max) 80 | 81 | def calculate_md5(input_string): 82 | md5_hash = hashlib.md5() 83 | md5_hash.update(input_string.encode()) 84 | return md5_hash.hexdigest() 85 | 86 | def getUUID(): 87 | return str(uuid.uuid4()) 88 | 89 | if __name__ == '__main__': 90 | print(getdate()) 91 | print(getSecTimestamp()) 92 | print(getMSecTimestamp()) 93 | -------------------------------------------------------------------------------- /nx.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-奈雪") 4 | env add wx_miss = Authorization#lat#lng#openId 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import base64 11 | import hashlib 12 | import hmac 13 | import ApiRequest 14 | import mytool 15 | 16 | tokenName = 'wx_nx' 17 | msg = '' 18 | class nx(ApiRequest.ApiRequest): 19 | def sign(self, nonce, openId, timestamp): 20 | msg = f"nonce={nonce}&openId={openId}×tamp={timestamp}" 21 | print(msg) 22 | key = 'sArMTldQ9tqU19XIRDMWz7BO5WaeBnrezA' 23 | return base64.b64encode(hmac.new(key.encode(), msg.encode(), hashlib.sha1).digest()).decode() 24 | 25 | def __init__(self, data): 26 | super().__init__() 27 | self.sec.headers = { 28 | 'Host': 'tm-web.pin-dao.cn', 29 | 'Connection': 'keep-alive', 30 | 'Accept': 'application/json, text/plain, */*', 31 | 'Authorization': data.split('#')[0], 32 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) XWEB/9129', 33 | 'Content-Type': 'application/json', 34 | 'Origin': 'https://tm-web.pin-dao.cn', 35 | # 'Referer': 'https://tm-web.pin-dao.cn/naixue/sign-in?sf=&accessToken=eyJhbGciOiJIUzI1NiJ9.eyJ1bmlvbkNvZGUiOiJQNjQ4NDAyMzkyNDA4NzA3MDgwMSIsInVzZXJJZCI6IjE5ODU4ODgzNCIsImJyYW5kIjoiMjYwMDAyNTIiLCJwaG9uZSI6Im9iOXlBNHNVRktCd0hEUS1ER1lzbGZnYUpNNDAiLCJpc3MiOiJwZC1wYXNzcG9ydCIsInN1YiI6IjE5ODU4ODgzNCIsImlhdCI6MTcxNDE1OTUzNSwiZXhwIjoxNzI0NTI3NTM1fQ.cyu6ky5gv6dyj539-RWYpqlvj0NvEOLS0d0GCOX3RbQ&commonParams=%257B%2522common%2522%253A%257B%2522platform%2522%253A%2522wxapp%2522%252C%2522version%2522%253A%25225.2.22%2522%252C%2522imei%2522%253A%2522%2522%252C%2522osn%2522%253A%2522microsoft%2522%252C%2522sv%2522%253A%2522Windows%252010%2520x64%2522%252C%2522lat%2522%253A26.081350326538086%252C%2522lng%2522%253A119.32842254638672%252C%2522lang%2522%253A%2522zh_CN%2522%252C%2522currency%2522%253A%2522CNY%2522%252C%2522timeZone%2522%253A%2522%2522%252C%2522nonce%2522%253A405605%252C%2522openId%2522%253A%2522QL6ZOftGzbziPlZwfiXM%2522%252C%2522timestamp%2522%253A1714609483%252C%2522signature%2522%253A%2522ui9tudCqCAjoE1TbNIWIIoRusZE%253D%2522%257D%252C%2522params%2522%253A%257B%2522businessType%2522%253A1%252C%2522brand%2522%253A26000252%252C%2522tenantId%2522%253A1%252C%2522channel%2522%253A2%252C%2522stallType%2522%253A%2522PD_S_004%2522%252C%2522storeId%2522%253A26074341%252C%2522storeType%2522%253A1%252C%2522cityId%2522%253A350100%252C%2522appId%2522%253A%2522wxab7430e6e8b9a4ab%2522%257D%257D&static_time=1714609483772', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | self.lat = data.split('#')[1] 39 | self.lng = data.split('#')[2] 40 | self.openId = data.split('#')[3] 41 | def login(self): 42 | signDate = f"{mytool.gettime().year}-{mytool.gettime().month}-{mytool.gettime().day}" 43 | timestamp = mytool.getSecTimestamp() 44 | nonce = mytool.randomint(6) 45 | json_data = { 46 | 'common': { 47 | 'platform': 'wxapp', 48 | 'version': '5.2.22', 49 | 'imei': '', 50 | 'osn': 'microsoft', 51 | 'sv': 'Windows 10 x64', 52 | 'lat': float(self.lat), 53 | 'lng': float(self.lng), 54 | 'lang': 'zh_CN', 55 | 'currency': 'CNY', 56 | 'timeZone': '', 57 | 'nonce': nonce, 58 | 'openId': self.openId, 59 | 'timestamp': timestamp, 60 | 'signature': self.sign(nonce, self.openId, timestamp), 61 | }, 62 | 'params': { 63 | 'businessType': 1, 64 | 'brand': 26000252, 65 | 'tenantId': 1, 66 | 'channel': 2, 67 | 'stallType': 'PD_S_004', 68 | 'storeId': 26074341, 69 | 'storeType': 1, 70 | 'cityId': 350100, 71 | 'appId': 'wxab7430e6e8b9a4ab', 72 | 'signDate': signDate, 73 | }, 74 | } 75 | response = self.sec.post('https://tm-web.pin-dao.cn/user/sign/save', json=json_data) 76 | print(response.text) 77 | 78 | 79 | if __name__ == '__main__': 80 | ApiRequest.ApiMain(['login']).run(tokenName, nx) -------------------------------------------------------------------------------- /other/pdd.1bat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/other/pdd.1bat -------------------------------------------------------------------------------- /other/qt.py: -------------------------------------------------------------------------------- 1 | #项目入口https://jpg.dog/i/cjVSu 2 | #变量名qt填 session_id#scene 多账号使用@分开 3 | #更新了签到 100积分=1r 4 | #设置了随机延迟防止检测 5 | #本次更新了多任务执行 部分为一次性任务 运行得1-2r后续金额自测 6 | import lzma, base64 7 | exec(lzma.decompress(base64.b64decode('/Td6WFoAAATm1rRGAgAhARYAAAB0L+Wj4AWlAv9dADSbSme4Ujxz9PXzugT+YU2Lu+CYRc0VOrtKbp+heCobCV+DT4m79U/aHlyxY2KisZ80O8uh7lxVmaJ7/DgqXBxd+pJ2TOEA+pTlwY/iC6r7wN3IVpZRZMNiC0bRv5iQ5tGSmbPbtEUQT/JNxs2FE4o2g7YFIwh880e//zyZ38zQePm8Abj3CV7uERg50dfoZSCcb64ey1e9T/Lkw/mVLeyal1Mk2XljECA+ZTRCa/FGEiyqiP0yaj0zSRwugASg67qc/66rzUJME+lAM2NsiohdF5GDxyTAYfDbrOSKgvkumnAIuIZvTUNyQhh9GPayqEPOcFr52OjIYtGD+VEl2M+x74CbGp23E6tAa7SgChBix4Q0zBy0vYWAIGuvINeTc3Rga9r3Gmo8cnFjlPKcAeB7gMn6KuiUXQwaL6CBfpKrmtU63UteF5ekIpNTsXyt6kG75d0j/1I3DqfIeBtHGHRHYS75xcnonuiq6x2YX/9rpdiRskR+o+sxQ6iYfW0EfsHUuAZthA4KNRHR08sNaFu50OdBRftywIBeenLyHieuvnNlvqJlfMzTNAZ3pa6k+fp3ar9iuZrVUadCLuvpeRmV62i6dZ0Wl7gK7M7kFqrntx2pSulp0Xc5DI5XZQbhUopfzDLzPhpTUJQBtA+eOoQwehZclMDqBHhIe8USKvYuSSvbEjnyX550+9ul9XkgYljNH7NQvDqAv0FbFhmQ2OcAUBln9BLeSkd/Rr7ET2IlHuZIpTTYPqLhe7ClIiyTWSgimkJWOP7EtECq0O2cORFKqsFTmZ9IbfuuPzvQ4vnHa++Bkt9p7qp1dc2ZUa5e1RkoikRgFMrvZpq6slLsFtqDKWbb25iZc+A7uUtQyVqaV+Q4+Im7FRZV2fWNzYv13jNNLlPF4aEi7WBS9nVc8QNqALI2zN2NIYdIBtsfm9pR+3n04E6vdVRabd2WntZBGuZxJvCTNhbEW9kvHNDLLl4+xUS5LPJHN319c34l/MYXvDdK/ghl8SldZzeSpL5uAAAj1aG71PZ9OAABmwamCwAAxW7hX7HEZ/sCAAAAAARZWg=='))) -------------------------------------------------------------------------------- /other/wx朵茜情调生活馆_jm.py: -------------------------------------------------------------------------------- 1 | # -- coding:UTF-8 -- 2 | import datetime 3 | import json 4 | import time, sys # re 用于正规则处理,os可能要用于文件路径读取与判断 5 | import requests as req 6 | import multiprocessing as mp 7 | 8 | import mytool 9 | from costtime import time_counts # 用来统计时间 10 | import sendNotify # 发通知 11 | 12 | ################################# 13 | ''' 14 | 作者:newhackerman 15 | 日期:2023-10-13 16 | 功能 朵茜情调生活馆签到 积分换实物 17 | 抓包:搜checkin - url中的 access_token header-extra-data中的 sid,uuid, 18 | 变量格式:export dqqdshgck='access_token&sid&uuid' 19 | 定时:1天一次 20 | cron: 2 8 * * * 21 | 无邀请码 22 | 用于青龙,其它平台未测试 23 | [task_local] 24 | 25 | [rewrite_local] 26 | 27 | [MITM] 28 | 29 | new Env("微信小程序-朵茜情调生活馆") 30 | ''' 31 | ################################# 32 | 33 | import os, sys # line:1 34 | 35 | configfile = '/ql/data/config/config.sh' # line:4 36 | configfile1 = './config.sh' # line:5 37 | configdict = {} # line:7 38 | 39 | 40 | def get_configdict(): # line:8 41 | if os.path.exists(configfile): # line:9 42 | with open(configfile, 'r', encoding='utf8') as O00O0O000O000O0O0: # line:10 43 | O0OO0O00OOOO00OOO = O00O0O000O000O0O0.readlines() # line:11 44 | if O0OO0O00OOOO00OOO is None: # line:12 45 | sys.exit() # line:13 46 | for OO0OO0OO0O00000O0 in O0OO0O00OOOO00OOO: # line:14 47 | OO0OO0OO0O00000O0 = str(OO0OO0OO0O00000O0).replace('\n', '').replace('\'', '', -1).replace('\"', '', 48 | -1) # line:15 49 | if OO0OO0OO0O00000O0 == '' or OO0OO0OO0O00000O0 is None: # line:16 50 | continue # line:17 51 | if OO0OO0OO0O00000O0.strip()[0] == '#': # line:18 52 | continue # line:19 53 | if 'export' in OO0OO0OO0O00000O0.strip(): # line:20 54 | OO0OO0OO0O00000O0 = OO0OO0OO0O00000O0.replace('export', '', -1) # line:21 55 | OO0OO0OO0O00000O0 = OO0OO0OO0O00000O0.split('=', 1) # line:22 56 | if len(OO0OO0OO0O00000O0) < 2: # line:23 57 | continue # line:24 58 | OOO0O0000OOOOOOO0 = OO0OO0OO0O00000O0[0].strip() # line:25 59 | O00OO0O0OO00OO00O = OO0OO0OO0O00000O0[1].strip() # line:26 60 | configdict[OOO0O0000OOOOOOO0] = O00OO0O0OO00OO00O # line:27 61 | elif os.path.exists(configfile1): # line:28 62 | with open(configfile1, 'r', encoding='utf8') as O00O0O000O000O0O0: # line:29 63 | O0OO0O00OOOO00OOO = O00O0O000O000O0O0.readlines() # line:30 64 | if O0OO0O00OOOO00OOO is None: # line:31 65 | sys.exit() # line:32 66 | for OO0OO0OO0O00000O0 in O0OO0O00OOOO00OOO: # line:33 67 | OO0OO0OO0O00000O0 = str(OO0OO0OO0O00000O0).replace('\n', '').replace('\'', '', -1).replace('\"', '', 68 | -1) # line:34 69 | if OO0OO0OO0O00000O0 == '' or OO0OO0OO0O00000O0 is None: # line:35 70 | continue # line:36 71 | if OO0OO0OO0O00000O0.strip()[0] == '#': # line:37 72 | continue # line:38 73 | if 'export' in OO0OO0OO0O00000O0.strip(): # line:39 74 | OO0OO0OO0O00000O0 = OO0OO0OO0O00000O0.replace('export', '', -1) # line:40 75 | OO0OO0OO0O00000O0 = OO0OO0OO0O00000O0.split('=', 1) # line:41 76 | if len(OO0OO0OO0O00000O0) < 2: # line:42 77 | continue # line:43 78 | OOO0O0000OOOOOOO0 = OO0OO0OO0O00000O0[0].strip() # line:44 79 | O00OO0O0OO00OO00O = OO0OO0OO0O00000O0[1].strip() # line:45 80 | configdict[OOO0O0000OOOOOOO0] = O00OO0O0OO00OO00O # line:46 81 | else: # line:47 82 | print('未找到配置文件!!,请检查配置文件路径与文件名') # line:48 83 | 84 | 85 | get_configdict() # line:50 86 | 87 | 88 | def getconfig(O0000O0OOO0000O0O): # line:52 89 | return configdict[O0000O0OOO0000O0O] # line:53 90 | 91 | 92 | def setconfig(OO0OO0O0O0O0O0O00, O0OOO00OOOOO0O000): # line:56 93 | configdict[OO0OO0O0O0O0O0O00] = O0OOO00OOOOO0O000 # line:57 94 | 95 | 96 | def change_param_value_tofile(OO0O0O000O0O00O0O, OO000OOOOO0O00O0O): # line:59 97 | if os.path.exists(configfile): # line:61 98 | O00O000O00OO0O00O = [] # line:62 99 | with open(configfile, 'r', encoding='utf8') as O0000OOOO0OOOO0OO: # line:63 100 | O0O00OOO0O0000O00 = O0000OOOO0OOOO0OO.readlines() # line:64 101 | for O00OO0O00O00OOO00 in O0O00OOO0O0000O00: # line:65 102 | if OO0O0O000O0O00O0O in O00OO0O00O00OOO00.strip(): # line:66 103 | OOOO0000OO0OO0OO0 = getconfig(OO0O0O000O0O00O0O) # line:67 104 | O00OO0O00O00OOO00 = O00OO0O00O00OOO00.replace(OOOO0000OO0OO0OO0, OO000OOOOO0O00O0O) # line:68 105 | O00O000O00OO0O00O.append(O00OO0O00O00OOO00) # line:69 106 | else: # line:70 107 | O00O000O00OO0O00O.append(O00OO0O00O00OOO00) # line:71 108 | if len(O00O000O00OO0O00O) > 0: # line:73 109 | with open(configfile, 'r', encoding='utf8') as OOOO00O0OOO0O000O: # line:74 110 | OOOO00O0OOO0O000O.writelines(O00O000O00OO0O00O) # line:75 111 | elif os.path.exists(configfile1): # line:77 112 | O00O000O00OO0O00O = [] # line:78 113 | with open(configfile1, 'r', encoding='utf8') as O0000OOOO0OOOO0OO: # line:79 114 | O0O00OOO0O0000O00 = O0000OOOO0OOOO0OO.readlines() # line:80 115 | for O00OO0O00O00OOO00 in O0O00OOO0O0000O00: # line:81 116 | if OO0O0O000O0O00O0O in O00OO0O00O00OOO00: # line:83 117 | OOOO0000OO0OO0OO0 = getconfig(OO0O0O000O0O00O0O) # line:84 118 | print('替换前:', O00OO0O00O00OOO00) # line:85 119 | O00OO0O00O00OOO00 = O00OO0O00O00OOO00.replace(OOOO0000OO0OO0OO0, OO000OOOOO0O00O0O) # line:86 120 | print('替换后:', O00OO0O00O00OOO00) # line:87 121 | O00O000O00OO0O00O.append(O00OO0O00O00OOO00) # line:88 122 | else: # line:89 123 | O00O000O00OO0O00O.append(O00OO0O00O00OOO00) # line:90 124 | if len(O00O000O00OO0O00O) > 0: # line:93 125 | with open(configfile1, 'w', encoding='utf8') as OOOO00O0OOO0O000O: # line:94 126 | OOOO00O0OOO0O000O.writelines(O00O000O00OO0O00O) # line:95 127 | else: # line:96 128 | print('未找到配置文件') # line:97 129 | 130 | 131 | def getcookies(OO00000000O00O0O0): # line:99 132 | O000OOO0000O0000O = [] # line:100 133 | OO0O00000O000OOOO = '' # line:101 134 | if mytool.getlistCk(OO00000000O00O0O0) is None: 135 | O00O0O000OO0O0000 = configdict[OO00000000O00O0O0] # line:102 136 | O00O0O000OO0O0000 = str(O00O0O000OO0O0000).strip().split('#') # line:103 137 | return O00O0O000OO0O0000 # line:104 138 | else: 139 | return mytool.getlistCk(OO00000000O00O0O0) 140 | 141 | 142 | def dict_to_str(OO0000O000O0000O0): # line:106 143 | O0OOO0OOO0OOO00O0 = '' # line:107 144 | if OO0000O000O0000O0: # line:108 145 | if isinstance(OO0000O000O0000O0, dict): # line:109 146 | for O00000OOO0OO00OOO, O00O0O00OO0O000O0 in OO0000O000O0000O0.items(): # line:111 147 | O0O0O0OO0000OOO0O = f'%s: %s \n' % (O00000OOO0OO00OOO, O00O0O00OO0O000O0) # line:112 148 | O0OOO0OOO0OOO00O0 += O0O0O0OO0000OOO0O # line:113 149 | else: # line:114 150 | return OO0000O000O0000O0 # line:115 151 | return O0OOO0OOO0OOO00O0 152 | 153 | 154 | # ------------------------------ 155 | session = req.session() # 156 | 157 | 158 | def starttask(OO0O0O0OOOO0OO0O0, OO0OOO00OO00OOOOO, OO00O000O00O000OO, O00OO00O0O0OO0OO0): # 159 | OOO000O0000OOO0O0 = tasks(OO0O0O0OOOO0OO0O0, OO0OOO00OO00OOOOO, OO00O000O00O000OO, O00OO00O0O0OO0OO0) # 160 | OOO000O0000OOO0O0.runtasklist() # 161 | 162 | 163 | class tasks(): # 164 | def __init__(O0O00O00000O00O0O, O00OOO0OOOOOOO00O, O0O0OOO0O00OO0OOO, OOO00O0O0000OO000, O0O0O0O00000O0O0O): # 165 | O0OO0O0O0OOOOO00O = '第%s 个账号:%s' % (O0O0O0O00000O0O0O, O0O0OOO0O00OO0OOO) # 166 | O0O00O00000O00O0O.resultdict = {} # 167 | O0O00O00000O00O0O.resultdict['说明'] = '签到积分换实物' # 168 | O0O00O00000O00O0O.resultdict[O0OO0O0O0OOOOO00O] = '->' # 169 | OO0O0O0O0OOO0OOOO = time.time() # 170 | O0O00O00000O00O0O.st = str(round(OO0O0O0O0OOO0OOOO * 1000)) # 171 | O0O0OO000O0O000OO = time.strftime('%Y%m%d', time.localtime()) # 172 | O0O00O00000O00O0O.access_token = O00OOO0OOOOOOO00O # 173 | O0O00O00000O00O0O.sid = O0O0OOO0O00OO0OOO # 174 | O0O00O00000O00O0O.uuid = OOO00O0O0000OO000 # 175 | O00OO00OO0O0O0O0O = {"is_weapp": 1, "sid": O0O00O00000O00O0O.sid, "version": "2.149.9.101", "client": "weapp", 176 | "bizEnv": "wsc", "uuid": O0O00O00000O00O0O.uuid, "ftime": O0O00O00000O00O0O.st} # 177 | O0O00O00000O00O0O.headers = {'extra-data': json.dumps(O00OO00OO0O0O0O0O), 178 | 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8391', 179 | 'content-type': 'application/json', 'accept': '*/*', 180 | 'sec-fetch-site': 'cross-site', 181 | 'referer': 'https://servicewechat.com/wx46d8e6f162c5deba/85/page-frame.html', 182 | 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'zh-CN,zh', 183 | 'cookie': 'KDTWEAPPSESSIONID=' + O0O00O00000O00O0O.sid} # 184 | 185 | @time_counts # 186 | def runtasklist(OO00O00OO0O00OOOO): # 187 | OO00O0OOO00O0OOO0 = OO00O00OO0O00OOOO.dqqdshgck_sign() # 188 | time.sleep(2) # 189 | OO00O0OOO00O0OOO0 = OO00O00OO0O00OOOO.dqqdshgck_select() # 190 | print(OO00O00OO0O00OOOO.resultdict) # 191 | sendNotify.send('朵茜情调生活馆执行结果:', OO00O00OO0O00OOOO.resultdict) # 192 | 193 | def dqqdshgck_sign(OOOOO00O0OOOO000O): # 194 | OO00000000000O0O0 = time.strftime('%Y-%m-%d', time.localtime()) # 195 | OO00O00OO0000O00O = time.time() # 196 | OOOOO00O0OOOO000O.st = str(int(OO00O00OO0000O00O)) # 197 | O0000OOO00O0OOO0O = f"https://h5.youzan.com/wscump/checkin/checkinV2.json?checkinId=3262&app_id=wx46d8e6f162c5deba&kdt_id=2741062&access_token={OOOOO00O0OOOO000O.access_token}" # 198 | try: # 199 | OO0O0O0O0000OO0OO = session.get(url=O0000OOO00O0OOO0O, headers=OOOOO00O0OOOO000O.headers, timeout=5) # 200 | if OO0O0O0O0000OO0OO.status_code == 200: # 201 | O000OOOOOOO00OOO0 = OO0O0O0O0000OO0OO.json() # 202 | if O000OOOOOOO00OOO0['msg'] == 'ok': # 203 | try: # 204 | if O000OOOOOOO00OOO0.get('data'): # 205 | OOOOO00O0OOOO000O.resultdict['签到积分'] = O000OOOOOOO00OOO0['data']['list'][0]['infos'][ 206 | 'title'] # 207 | except BaseException as OOOO0O0OOO0OO0OO0: # 208 | print(OOOO0O0OOO0OO0OO0) # 209 | else: # 210 | OOOOO00O0OOOO000O.resultdict['签到'] = O000OOOOOOO00OOO0['msg'] # 211 | else: # 212 | print(OO0O0O0O0000OO0OO.content.decode('utf8')) # 213 | except BaseException as O0OO0OO0O00OOOO0O: # 214 | print(O0OO0OO0O00OOOO0O) # 215 | 216 | def dqqdshgck_select(OO0OOOO0OO0OO00OO): # 217 | O0OOO0OOOOO000000 = time.strftime('%Y-%m-%d', time.localtime()) # 218 | O00O0OO000OO0O000 = time.time() # 219 | OO0OOOO0OO0OO00OO.st = str(int(O00O0OO000OO0O000 * 1000)) # 220 | O000OO0O0OOO00O0O = f"https://h5.youzan.com/wscump/pointstore/getCustomerPoints.json" # 221 | try: # 222 | OO0OOOO0OOO000000 = session.get(url=O000OO0O0OOO00O0O, headers=OO0OOOO0OO0OO00OO.headers, timeout=5) # 223 | if OO0OOOO0OOO000000.status_code == 200: # 224 | O000OO00000O0O000 = OO0OOOO0OOO000000.json() # 225 | if O000OO00000O0O000['msg'] == 'ok': # 226 | OO0OOOO0OO0OO00OO.resultdict['当前积分'] = O000OO00000O0O000['data']['currentAmount'] # 227 | else: # 228 | OO0OOOO0OO0OO00OO.resultdict['当前积分'] = O000OO00000O0O000.get('msg') # 229 | except BaseException as O0OO0O0O0OO0O00O0: # 230 | print(O0OO0O0O0OO0O00O0) # 231 | return OO0OOOO0OO0OO00OO.resultdict # 232 | 233 | 234 | if __name__ == '__main__': # 235 | if os.path.exists('../debug.py'): 236 | import debug 237 | 238 | debug.setDebugEnv() 239 | cookies = getcookies('dqqdshgck') # 240 | if len(cookies) > 5: # 241 | print('请勿一次性跑太多账号,造成服端与本机压力!') # 242 | i = 0 # 243 | if cookies is not None: # 244 | for cookie1 in cookies: # 245 | cookie = str(cookie1).split('#') # 246 | access_token = cookie[0] # 247 | sid = cookie[1] # 248 | uuid = cookie[2] # 249 | i += 1 # 250 | process = mp.Process(target=starttask, args=(access_token, sid, uuid, i,)) # 251 | process.start() # 252 | if i % 5 == 0: # 253 | time.sleep(120) # 254 | sys.exit() # 255 | else: # 256 | print('未配置cookies') # 257 | sys.exit(0) # 258 | -------------------------------------------------------------------------------- /other/yuyun.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # @Time: 2023年04月06日14时26分 3 | """ 4 | 0 7 * * * yljf.py 5 | new Env("WEB-雨云") 6 | env add yljf_token 7 | """ 8 | import os 9 | 10 | import requests 11 | from datetime import datetime, timedelta, timezone 12 | from pathlib import Path 13 | import logging 14 | import json 15 | 16 | import mytool 17 | 18 | ''''脚本使用说明: 19 | 后缀名改成py 20 | 21 | 白嫖的项目:签到白嫖游戏服务器或者稳定的虚拟主机,攒着提现也可以(2018年以来一直稳定运行的,自己可以查一查资料) 22 | 23 | 第一步:上传本脚本到青龙(本脚本是py不是js 别搞错了) 24 | 第二步:去 https://www.rainyun.cc/?ref=MzUxMzA= 注册一个账号(不提现只抢游戏云和主机的话不用实名) 25 | 想提现的话6万积分起提现...绑定支付宝提现(稳到,亲测过,也有官方用户群)。 26 | 第三步:本脚本里第121行122行里设置一下自己注册的账号和密码!!! 27 | 本脚本里第121行122行里设置一下自己注册的账号和密码!!! 28 | 本脚本里第121行122行里设置一下自己注册的账号和密码!!! 29 | 第四步:时间规则:0 0 23 * * ?    #每天 23 点执行一次 (可以按自己的需求,每天执行一次) 30 | 31 | 积分规则及说明:本脚本是每天实现自动签到(每天300个积分),入门级游戏云或者虚拟主机2000积分一周。 32 | 这样下来一直用积分续费,想提现的话6万积分起提现...绑定支付宝提现(稳到)。 33 | 34 | 35 | 注册地址: 36 | https://www.rainyun.cc/?ref=rain 37 | 38 | https://www.rainyun.cc/?ref=rain 39 | 40 | 41 | 提现规则:6万积分起提现(稳到,不过建议用来续费游戏云比较划算) 42 | 43 | 新人完成积分任务以后大概会有7000积分(积分商城每天20点刷新,自己抢一下一个主机或者游戏云)。 44 | 而2000积分就可以领取一个免费的MC服务器或者主机,而且可以用积分进行续费!续费也只需要2000积分! 45 | 前期积分任务做完加上每日签到,足够免费续费一个月了!后面一直用积分续费。 46 | 47 | 48 | 注册地址: 49 | https://www.rainyun.cc/?ref=rain 50 | 51 | ''' 52 | 53 | tokenName = 'yuyun_userInfo' 54 | # 忽略 不验证ssl的提示 55 | import warnings 56 | warnings.filterwarnings('ignore') 57 | 58 | class RainYun(): 59 | 60 | def __init__(self, user: str, pwd: str) -> None: 61 | # 认证信息 62 | self.user = user.lower() 63 | self.pwd = pwd 64 | self.json_data = json.dumps({ 65 | "field": self.user, 66 | "password": self.pwd, 67 | }) 68 | # 日志输出 69 | self.logger = logging.getLogger(self.user) 70 | formatter = logging.Formatter(datefmt='%Y/%m/%d %H:%M:%S', 71 | fmt="%(asctime)s 雨云 %(levelname)s: 用户<%(name)s> %(message)s") 72 | handler = logging.StreamHandler() 73 | handler.setFormatter(formatter) 74 | self.logger.addHandler(handler) 75 | self.logger.setLevel(logging.INFO) 76 | # 签到结果初始化 77 | self.signin_result = False 78 | # 请求设置 79 | self.session = requests.Session() 80 | self.session.headers.update({ 81 | "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36", 82 | "Origin": "https://api.rainyun.com", 83 | "Referer": "https://api.rainyun.com" 84 | }) 85 | self.login_url = "https://api.v2.rainyun.com/user/login" 86 | self.signin_url = "https://api.v2.rainyun.com/user/reward/tasks" 87 | self.logout_url = "https://api.v2.rainyun.com/user/logout" 88 | self.query_url = "https://api.v2.rainyun.com/user/" 89 | # 忽略 .cc ssl错误 90 | self.session.verify = False 91 | 92 | def login(self) -> None: 93 | """登录""" 94 | res = self.session.post( 95 | url=self.login_url, headers={"Content-Type": "application/json"}, data=self.json_data) 96 | if res.text.find("200") > -1: 97 | self.logger.info("登录成功") 98 | self.session.headers.update({ 99 | "X-CSRF-Token": res.cookies.get("X-CSRF-Token", "") 100 | }) 101 | else: 102 | self.logger.error(f"登录失败,响应信息:{res.text}") 103 | 104 | def signin(self) -> None: 105 | """签到""" 106 | res = self.session.post(url=self.signin_url, headers={"Content-Type": "application/json"}, data=json.dumps({ 107 | "task_name": "每日签到", 108 | "verifyCode": "" 109 | })) 110 | self.signin_date = datetime.utcnow() 111 | if res.text.find("200") > -1: 112 | self.logger.info("成功签到并领取积分") 113 | self.signin_result = True 114 | else: 115 | self.logger.error(f"签到失败,响应信息:{res.text}") 116 | self.signin_result = False 117 | 118 | def logout(self) -> None: 119 | res = self.session.post(url=self.logout_url) 120 | if res.text.find("200") > -1: 121 | self.logger.info('已退出登录') 122 | else: 123 | self.logger.warning(f"退出登录时出了些问题,响应信息:{res.text}") 124 | 125 | def query(self) -> None: 126 | res = self.session.get(url=self.query_url) 127 | self.points = None 128 | if res.text.find("200") > -1: 129 | data = res.json()["data"] 130 | self.points = data.get("Points", None) or data["points"] 131 | self.logger.info("积分查询成功为 " + repr(self.points)) 132 | else: 133 | self.logger.error(f"积分信息失败,响应信息:{res.text}") 134 | 135 | def log(self, log_file: str, max_num=5) -> None: 136 | """存储本次签到结果的日志""" 137 | # 北京时间 138 | time_string = self.signin_date.replace(tzinfo=timezone.utc).astimezone( 139 | timezone(timedelta(hours=8))).strftime("%Y/%m/%d %H:%M:%S") 140 | file = Path(log_file) 141 | record = { 142 | "date": time_string, 143 | "result": self.signin_result, 144 | "points": self.points 145 | } 146 | previous_records = {} 147 | if file.is_file(): 148 | try: 149 | with open(log_file, 'r') as f: 150 | previous_records = json.load(f) 151 | if not previous_records.get(self.user): 152 | previous_records[self.user] = [] 153 | previous_records[self.user].insert(0, record) 154 | previous_records[self.user] = previous_records[self.user][:max_num] 155 | except Exception as e: 156 | self.logger.error("序列化日志时出错:"+repr(e)) 157 | else: 158 | previous_records[self.user] = [record] 159 | with open(log_file, 'w', encoding='utf-8') as f: 160 | json.dump(previous_records, f, indent=4) 161 | self.logger.info('日志保存成功') 162 | 163 | 164 | if __name__ == '__main__': 165 | if os.path.exists('../debug.py'): 166 | import debug 167 | 168 | debug.setDebugEnv() 169 | 170 | if mytool.getlistCk(f'{tokenName}') is None: 171 | print(f'请检查你的变量名称 {tokenName} 是否填写正确') 172 | exit(0) 173 | else: 174 | for i in mytool.getlistCk(f'{tokenName}'): 175 | ry = RainYun(i.split("#")[0], i.split("#")[1]) # 实例 176 | ry.login() # 登录 177 | ry.signin() # 签到 178 | ry.query() # 查询积分 179 | ry.logout() # 登出 -------------------------------------------------------------------------------- /other/七猫抽奖+转盘.py: -------------------------------------------------------------------------------- 1 | # 例如 AUTHORIZATION#qm-params 2 | 3 | # 变量名 qmreadck 多账号@或者回车分割 4 | #幸运大转盘+幸运7抽奖 5 | #抓包过程+抓包教程:https://www.bilibili.com/video/BV1Wm4y1678j/?spm_id_from=333.999.0.0&vd_source=d2bc76339a6a058a723333a49361bd97 6 | import json,os 7 | 8 | import requests,time 9 | def xydzp(au,qm): 10 | for i in range(5): 11 | url = 'https://xiaoshuo.wtzw.com/api/v2/lucky-draw/do-extracting?activity_id=0&version=2021010401&apiVersion=20190309143259-1.9&t=' + str(int(time.time())) 12 | headers = { 13 | "Host": "xiaoshuo.wtzw.com", 14 | "accept": "application/json, text/plain, */*", 15 | "user-agent": "Mozilla/5.0 (Linux; Android 7.1.2; 21051182C Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/81.0.4044.117 Safari/537.36 webviewversion/71700 webviewpackagename/com.kmxs.reader", 16 | "x-requested-with": "com.kmxs.reader", 17 | "referer": "https://xiaoshuo.wtzw.com/app-h5/freebook/wheelSurf?activity_id=0", 18 | "accept-encoding": "gzip, deflate", 19 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 20 | "authorization": au, 21 | "qm-params": qm 22 | } 23 | resp = requests.get(url=url, headers=headers) 24 | if '金币' in str(resp.text): 25 | print('幸运大转盘' + json.loads(resp.text)['data']['prize_title']) 26 | else: 27 | print('今日抽奖次数已用完,请明日再来') 28 | time.sleep(2) 29 | xyqcz(au,qm) 30 | def xyqcz(au,qm): 31 | url = 'https://api-gw.wtzw.com/lucky-seven/h5/v1/lottery' 32 | headers = { 33 | "Host": "api-gw.wtzw.com", 34 | "Connection": "keep-alive", 35 | "Accept": "application/json, text/plain, */*", 36 | "Origin": "https://xiaoshuo.wtzw.com", 37 | "User-Agent": "Mozilla/5.0 (Linux; Android 7.1.2; 21051182C Build/N2G47H; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045435 Safari/537.36 webviewversion/71700 webviewpackagename/com.kmxs.reader", 38 | "Referer": "https://xiaoshuo.wtzw.com/app-h5/freebook/lucky7/index?enable_close=1", 39 | "authorization": au, 40 | "qm-params": qm 41 | # "authorization": "eyJhbGciOiJSUzI1NiIsImNyaXQiOlsiaXNzIiwianRpIiwiaWF0IiwiZXhwIl0sImtpZCI6IjE1MzEyMDM3NjkiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2ODA2OTAzOTgsImlhdCI6MTY3OTM5NDM5OCwiaXNzIjoiIiwianRpIjoiY2Y3MzExMmYzMzM4ODE0OTIzOTY2OWM2NjkxY2UwNjUiLCJ1c2VyIjp7InVpZCI6NDQyNTU3NzQ5LCJuaWNrbmFtZSI6IuS4g-eMq-S5puWPi18wMzExNTA5ODU3MTAiLCJpbWVpIjoiIiwidXVpZCI6IiIsImRldmljZUlkIjoiIiwicmVnVGltZSI6MTY3ODUyNjE2MiwidmlwRXhwaXJlQXQiOjAsInNtX2lkIjoiMjAyMzAzMTExNzE1MjZlNWM0MWJiZmMxZDU3ZGRmY2Y5NjJiMzFhZTgyN2JjOTAwYzAzZDA4ZmQ4ZjVmZmQiLCJudXQiOjE2Nzg1MjYxNjIsImlmdSI6MCwiaXNfcmJmIjowLCJhY3RfaWQiOjAsImJpbmRfYXQiOjAsInRpZCI6IkRVMTF2bV9pZWQzTHJwWWtyMXA5OXdSVC00VWIxalJJUDQ2ZlJGVXhNWFp0WDJsbFpETk1jbkJaYTNJeGNEazVkMUpVTFRSVllqRnFVa2xRTkRabWMyaDEiLCJ0X21vZGUiOjJ9fQ.WM5YxHoMUPf8vTdOTnaRJlcIFP-oVO6ZqsXlZ2C-kifSe70EXl0CjowPlAhK-_qeUQr0ia5B3ev7NJVZnaba0JU1ULCsD_iBPZ4nD8OfupzLRer1jmVipaaET8zZukWJIS8yupB5qqjsK8YyYZHccx5QG2HooegaLjGgyhI3clg", 42 | # "qm-params": "cLGEByHQmqU2m3HWHT0nghHwAhHENh0MNegEg5HjHSsZBlY2tqn2uzRjHTZ53aHjHzUx4LHWHT9LAT9wAT9wAT9wAT9wAT9LH5w5uCR1paHWHzpzpzpzpzpztq0LAI-QgTFEgLMwgI9wth9wgI9ENTOn4eOLgaHjHSNDuCGTpCR1paHWHTfLNhHEglp-gTs2pIpTNIF5taGTBy22BSFQmqF5A5HngIOYpI0e4zHwNhHMgzfLH5w5OEkxuy2TCENTBEG2HTZ5garlNeOnNh0wAIgYNI4LgTK5taGD4q2-HTZ5H5w5u_GUOEk2paU1paHWH-kRgholBRJ1pqFeh_GwqqQLgC9YACu3RaMMRqHnm2GGfIFlp2GyRCxNqo1MqIGjBo10h-UTB-Gm4hNGcyN0meR-gf1Rhok3R22VkSoRmlnkh-kmBqgLmI05taG-pCp14lfQmqF5A5HLgIHegIgngh0Egh-wAqkzAqp-4TKlNefrph0EAhoxphxzghGxAhp-NyfEpTN-gI0YNIo2NTfe4qN54lfwp3HjHz2Qpq-5A5Hngh0LgI-LNefnNIOeNeH5taG5Ozo7paHWH2x14qJQm3HjHSuj45UUmqF5A5G0Rh0nuzU6mqR-gMnLOo2vOTowAh2Ef2FQNoR5gq133R9MNzp3k2RrhRxmuoKLBynmk0YN4lYaqz0e3CxTkyjUpIoiRfnff2ppm-pnRqQjffY0qzUTgzKnH5w5OE2etCp2O5HWHTO7g3rLH5w5BqJ-pqw5A5HLgh9Ugh0rg-g56F==" 43 | 44 | } 45 | ds=[0,2,5,1,3] 46 | for jk in ds: 47 | data = { 48 | # source 2 7天VIP会员减2元券 0 七猫3个会员碎片 随机0-5吧 49 | 'source': str(jk), 50 | 'apiVersion': '20190309143259-1.9', 51 | 't': str(int(time.time())) 52 | } 53 | resp = requests.post(url=url, headers=headers, data=data) 54 | if 'data' in resp.text: 55 | print('七猫幸运抽奖' + json.loads(resp.text)['data']['title']) 56 | else: 57 | print('七猫幸运抽奖' + json.loads(resp.text)['errors']['title']) 58 | time.sleep(2) 59 | if os.environ.get("qmreadck"): 60 | dvm = os.environ["qmreadck"] 61 | if dvm != '': 62 | if "@" in dvm: 63 | Coo = dvm.split("@") 64 | elif "&" in dvm: 65 | Coo = dvm.split('&') 66 | else: 67 | Coo = dvm.split('\n') 68 | adv=1 69 | for j in Coo: 70 | au=str(j).split('#')[0] 71 | qm=str(j).split('#')[1] 72 | xydzp(au,qm) 73 | time.sleep(2) 74 | -------------------------------------------------------------------------------- /other/七猫抽奖领宝箱.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import random 4 | import requests 5 | import time 6 | 7 | # 只需要Authorization,写在脚本里就行了,手动挂满听书180分钟就可以,一天跑一次,一定先挂满180分钟再跑 8 | AuthorizationList = os.getenv('qimao_treasure_run') 9 | AuthorizationList = AuthorizationList.split('\n') 10 | 11 | 12 | 13 | # 查余额 14 | def coin(Authorization, t): 15 | url = "https://api-gw.wtzw.com/welf/h5/v1/task-list" 16 | headers = { 17 | "Authorization": eyJhbGciOiJSUzI1NiIsImNyaXQiOlsiaXNzIiwianRpIiwiaWF0IiwiZXhwIl0sImtpZCI6IjE1MzEyMDM3NjkiLCJ0eXAiOiJKV1QifQ.eyJleHAiOjE2OTY2NTA5OTYsImlhdCI6MTY5NTM1NDk5NiwiaXNzIjoiaHR0cHM6Ly94aWFvc2h1by53dHp3LmNvbS9hcGkvdjEvbG9naW4vaW5kZXgiLCJqdGkiOiJjMGIzZGUzNmFmNzI3NWExZjA1ODdlYTg4OWZiNTJiZiIsInVzZXIiOnsidWlkIjo0Mzk2MTc1MDgsIm5pY2tuYW1lIjoi5LiD54yr5Lmm5Y-LXzAyMjc1NTUyNTcxMCIsImltZWkiOiIiLCJ1dWlkIjoiMDAwMDAwMDAtNzkxNy00ZjA3LTAwMDAtMDAwMDAwMDAwMDAwIiwiZGV2aWNlSWQiOiIyMDIzMDcyOTIyMzIwMDllOTlkMGQ5ZDQ3MmM5M2YyYTdhM2MzMDRjOGVlY2ViMDFlNzI5NTU1OTI5ZjhmMyIsInJlZ1RpbWUiOjE2Nzc0OTk5MjEsInZpcEV4cGlyZUF0IjowLCJzbV9pZCI6IjIwMjMwMjI3MjAxMTU5YzgxNDE5MmRjOTQ4YzIwNTdlZDFmZTk4YjIxNTZlZTIwMDk2MDI5NzFjYzA5Mjc2IiwibnV0IjowLCJpZnUiOjAsImlzX3JiZiI6MCwiYWN0X2lkIjowLCJiaW5kX2F0IjowLCJ0aWQiOiJEVUt2QVREOHM2Z0VQS2hTRWlDLS1EVVo3SUN1RGVEYmlUZmZSRlZMZGtGVVJEaHpObWRGVUV0b1UwVnBReTB0UkZWYU4wbERkVVJsUkdKcFZHWm1jMmgxIiwidF9tb2RlIjoyfX0.Jehq7wHc9ZlANKBXuzs8EnU6POEOlILwnQBr1RTie7Vu4MI7OKHT7KNPEXSN77pBfOhaFNNLVY2r_XRhfwq4lu7E651m_vqy-alYf43TAFQZB4ZAdlQAoRiDPrBbubbW8BlC_JdOPUVOUqnnaolFFKDRdVqFJjHrDesjpsOwuPE 18 | } 19 | data = { 20 | "module_sign": [ 21 | { 22 | "sign": "9fdefb36c2ec66942d79b1a9a0a8d85d", 23 | "category": "time_limit" 24 | }, 25 | { 26 | "sign": "0d7debfbc25c2184926b23b480bd2450", 27 | "category": "daily_task" 28 | } 29 | ], 30 | "t": t 31 | } 32 | getJson = json.dumps(data).encode("utf-8") 33 | response = requests.post(url=url, headers=headers, data=getJson) 34 | # print(response.text) 35 | jsondata = json.loads(response.text) 36 | result = jsondata["user"]["coin_data"] 37 | print("余额是" + result + "金币") 38 | 39 | 40 | # 五次幸运抽奖 41 | def lucky_draw(Authorization, t): 42 | print("=======开始幸运抽奖=======\r") 43 | url = "https://xiaoshuo.wtzw.com/api/v2/lucky-draw/do-extractin" 44 | headers = { 45 | "Authorization": Authorization 46 | } 47 | data = { 48 | "t": t, 49 | "apiVersion": 20190309143259 - 1.9 50 | } 51 | for i in range(0, 5): 52 | response = requests.get(url=url, headers=headers, params=data) 53 | print(response.text) 54 | time.sleep(random.randint(1, 5)) 55 | 56 | 57 | # 五次幸运7抽奖 58 | def lucky_draw_seven(Authorization, t): 59 | print("=======开始幸运7抽奖=======\r") 60 | url = "https://api-gw.wtzw.com/lucky-seven/h5/v1/lottery" 61 | querystring = {"t": t} 62 | payload = "source=3&apiVersion=20190309143259 - 1.9" 63 | headers = { 64 | "Authorization": Authorization, 65 | "content-type": "application/x-www-form-urlencoded" 66 | } 67 | for i in range(0, 5): 68 | response = requests.post(url=url, data=payload, headers=headers, params=querystring) 69 | jsondata = json.loads(response.text) 70 | #result = jsondata["data"]["title"] 71 | print(jsondata) 72 | time.sleep(random.randint(1, 5)) 73 | 74 | 75 | # 领宝箱 76 | def box(Authorization,t): 77 | print("=======开始领宝箱=======\r") 78 | url = "https://api-gw.wtzw.com/welf/h5/v1/task/treasure/reward" 79 | headers = { 80 | "Authorization": Authorization, 81 | "content-type": "multipart/form-data;" 82 | } 83 | querystring_box = {"t": t} 84 | response_box = requests.post(url=url, headers=headers, params=querystring_box) 85 | print(response_box.text) 86 | time.sleep(random.randint(1, 5)) 87 | 88 | 89 | # 领宝箱视频 90 | def box_video(Authorization,t): 91 | print("=======开始领宝箱视频=======\r") 92 | url = "https://api-gw.wtzw.com/welf/h5/v1/task/treasure/video/reward" 93 | headers = { 94 | "Authorization": Authorization, 95 | "content-type": "application/json" 96 | } 97 | querystring = {"t": t} 98 | payload = { 99 | "position": "welfare_treasurebox_timely", 100 | "video_prefix": "task_video_two" 101 | } 102 | 103 | response = requests.request("POST", url, json=payload, headers=headers, params=querystring) 104 | print(response.text) 105 | time.sleep(random.randint(1, 5)) 106 | 107 | 108 | # 100次金币 109 | def coin_150(): 110 | print("=======开始领取100次150金币=======\r") 111 | url = "https://api-ks.wtzw.com/api/v1/coin/add" 112 | payload = "position_id=inchapter_top&type=6&sign=1" 113 | headers = { 114 | "Authorization": Authorization, 115 | "Host": "api-ks.wtzw.com", 116 | "Content-Type": "application/x-www-form-urlencoded" 117 | } 118 | for i in range(0, 101): 119 | response = requests.post(url=url, data=payload, headers=headers) 120 | jsondata = json.loads(response.text) 121 | print("增加了" + jsondata["data"]["coin"] + "金币", "剩余" + jsondata["data"]["times"] + "次") 122 | time.sleep(random.randint(1, 5)) 123 | 124 | 125 | def finish_reward(Authorization,t): 126 | # 113,161 127 | task_id = [22, 24, 154, 155, 156, 157, 158, 159, 160, 100, 105, 111, 113, 115, 116, 161, 42, 43, 44, 45, 46, 47] 128 | url = "https://api-gw.wtzw.com/welf/h5/v1/task/finish-task" 129 | do_url = "https://api-gw.wtzw.com/welf/h5/v1/task/reward" 130 | headers = { 131 | "Authorization": Authorization 132 | } 133 | for id in task_id: 134 | data = { 135 | "t": t, 136 | "task_id": id 137 | 138 | } 139 | task_data = { 140 | "t": t, 141 | "task_id": id, 142 | "type_prefix": "task" 143 | } 144 | video_data = { 145 | "t": t, 146 | "task_id": id, 147 | "type_prefix": "video" 148 | } 149 | if id == 113: 150 | for i in range(0, 5): 151 | r4 = requests.post(url=url, headers=headers, data=data) 152 | print(r4.text) 153 | time.sleep(random.randint(1, 5)) 154 | r5 = requests.post(url=do_url, headers=headers, data=task_data) 155 | print(r5.text) 156 | time.sleep(random.randint(1, 5)) 157 | r6 = requests.post(url=do_url, headers=headers, data=video_data) 158 | print(r6.text) 159 | time.sleep(random.randint(1, 5)) 160 | else: 161 | r1 = requests.post(url=url, headers=headers, data=data) 162 | print(r1.text) 163 | time.sleep(random.randint(1, 5)) 164 | r2 = requests.post(url=do_url, headers=headers, data=task_data) 165 | print(r2.text) 166 | time.sleep(random.randint(1, 5)) 167 | r3 = requests.post(url=do_url, headers=headers, data=video_data) 168 | print(r3.text) 169 | time.sleep(random.randint(1, 5)) 170 | 171 | 172 | if __name__ == '__main__': 173 | # lucky_draw() 174 | # coin_150() 175 | i = 1 176 | for Authorization in AuthorizationList: 177 | print(f'------------第{i}个用户------------') 178 | t = time.time() 179 | lucky_draw_seven(Authorization,t) 180 | box(Authorization,t) 181 | box_video(Authorization,t) 182 | finish_reward(Authorization,t) 183 | if i < len(AuthorizationList): 184 | i += 1 185 | time.sleep(random.uniform(30,60)) 186 | # coin() 187 | -------------------------------------------------------------------------------- /other/派勇.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | """ 3 | new Env('甬派'); 4 | 先运行脚本,有问题到群里问 http://t.me/xiaoymgroup 5 | 通知模块请复制青龙的notify.py到脚本同级目录 6 | """ 7 | import zlib 8 | import base64 9 | exec(zlib.decompress(base64.b64decode('eJzNWntvE9kV/z+fYuptGBuc8YzfDmshWqnd1S7rVFCtkEmtiX1tD7FnpjPjJCaKBK3YhtdCyxb2kS5FYrtVhRaoKK8Q+l12Yyf5i6/Q+57HHYegrtQ6UeJM7jnndx73nHPvsdG3LceTWroHPKMPpHd6hglmS1MGeX7WtUz6rMyeWS59UmFPHN1sWX36VFP5Y8ZO09gjr+sAvWWYHfaf7FTbgaS/HYABkOiiX+E/6IIcJ/XhaXlfBKR0PYZIK0y1QFvqAK/RdztSMjVLn5enJPiq1VT0hb5V9L4mVVcTv3aBM3O8A0wvMZs4YZ0zej09U1BUKfmxAdVadqWPTkmaqqhHJfigmD8qrRTzKem4bffAx2DhA8PLFHIlJVeUkh+8d+rEh2mpZywC6ZeguWilpJ93oXogo2mQI/qSTupt3TEoSWKN4MuqHB+Gh36jn1KVK6hApaSk3PU8253NZM4a3UFPX1CaVj+zYpzrGroBf+vWsJ+ZyTj6cqavG2ZmCTgKcqGc7kKzA8eVqqINUngJNBbFomEsDvAGjhkDia7KTjXII/ID/5SqvuXpMuKQNnYed0eWuaPGUBD2UpXHoeK/M61lSKq4nkPZyNOnZ6b7M9Mtafq92ekTs9MnZSauEsYe5U9W5VQMqmfprYZpeUZ76EPL5TCHTs9a0HuSC8wWI8rjf3jOUGJLC/gJeuEYpqxoZAZJi3yh7RgmdGNidPmvu1tbe+e/3LnzzXjj2ujy3fH6jdHlO69fXkhQXXIlTkX1OeXwbZEjFgQrTWB7HFAlKkcW5YzuPdp9/E1698HT0b1ro/Un28/Ob29u7f3lT3uvviAaKPZwtP5wdOPqzotvx7f+sL35ZHTvObNwXo2i+oXecxmsvDbV7OmuK52eOz43x3DliemQzRsNwzS8RkNKYudg/+DYgc5JEy+pNKRQPKXZEr5YYo7K+9YXWSkucF0DBnVg/7BHLDTzxf0YtMCS0QRGC24YAYLi2j0DWfcdOVVXpXnKr7QfP89oLsIN/CZuGudWPoh6Ct/Wq7Kfx+RZ2VpEiSKTVyqKJhttlIqVvu41u1LSkX9T12fOqTOV+cM/ldP76Z4CyLXy3IenLbMzpxtzjnUWNL0MzIaaoklJY65rmeCoZNROSjDBlZTKUelkU++BTFZR1ZSclnXbhjkIYYWgCBl8Sowhz062U1pmIGJXcYRpmkAL+0YDzONgBds+El+UeN9IMMGy+34LmrhOXVPY19Fu04LGrnLe+/pxAH2GYuwjaEZGUNmPAOXWqiyTpUWV7yuUdzEzs23BvUVIeJr3d00x63NXA2mdZG9eXYY2dJzSNE1cYOCbzDJYmDEXms1MH/QXgMN+IXkMTS7AmsY4y77I9lFIfhDjyibCidSlYj5oGJUzJHUcL1VQSncRr6h8Wj1hUdHlFGNYCNkigo65RpRFeaEF77dYXiwGY4j6i1ZMqH17H8sO4d6ydWMG8cvotpHBb/rDRg8sgd4xIqa6KkCkCNeY+Ush8zMMGMJBzC+Ajpq/vJ+1aNSLkkOGp3/gxdxwfrzDPDXZETSAS379mUxC0LxbUDmVFqLiRqKdAWaAvPTD+Rs7X2yOtv78w/k/1ncf/210/WmM4XE6WZuXyFJSuNM7nz4cb1za+fbBaP2TGBoMifmqlA3BwVmWIc39fyB9/fLq6N6d3a378Hvnq8+3X3zCsOdDAGmjIWKk7i0VpsK6CM5CKe1IVWRwRD5jMpnFEBOxHSr5wR8yZjki/L825O6nT0fXb5Fl2/++O77wgPRTDGjlrYxTVn8E45S1OOMEu7JyNlQnUEEzSJpklYXK5WWinI8kE76hUa7FSpHenPb1hzXUyTCtfJcvd40ekHrAjBPGK2sqsFPLYVe3LUeieZclJojAMNGRswMlF3zIJXHjhOonLhMHScQIFk7ES9kMft8zXO9Ys6ubJuiRVBwBtHaoOXAc2HnN6R1Q1Q4hq7ie3rfx2rD5WA4ol+M2uu/pGi4cMVaL5u2ojpG8Xa4IcnDSjIqiublptWBq/kmVO6SiCvSB0JbJhhjferh3e5NuBSq4IuZc9GpapmeYfOdWsjFuU/0TJ257qiLcOikp83UZMURNL+3OKmICxUHEnMb2GAoiURJTOh+LHRlO4EMNR4JZZuFYKcRyIG6euBMUGJPo3JgUxdSZhHlm32JMAE3kXEVBLCVd1mpN2oqMeYmnDHRhg3MGJuQHfmw1dkCr0e6NnNlqNW5SvIzv0UollFZ4n1Cjufgt9iZ+0wKebvSOEfBwr0UFrx0KdE9h5JHuCeavSGOsMgraPkUUF7rXqDqRbaipWrTPCcsI7b+qv/80NRtXU3Dh2vv84u6DzXDhiqjJO4D791cFX62N798lPEbfXYXdgczB5rj7obxzgAZk8PBE/MyyINE5TZWnCIKu19RItx2gPWiD3Gli19uObrgg4+pLAMflMXIaJBEQQclPimuHQlESxBiIEoE8GiXhk2KNWZQma8FGMWecsOJClJRCUSLImBwl5YlRsvO757v/+joYJYKaoSiJuhVFyaoApZ5ACTgxX0840MRgOTGPekZUDl7dZr3lJBqkRTKBG81Eas2PukpsF6dp6v9eNw5S0/zMOCB9DdvINAHykNdykS0fWaiET+0+XT7aFsYR8jaOIwuXHHopr7jdQbvdA3FI/bTPWBQjkmtqoHtBMc65wu4GMaV9GGvxJgpIpQuqL6b0BjGKi65Qfc3KMU1hoCXAmSbNHqksC6ISD8xBHzi6B2iODolJwyYNyqlqAZ+J7VKMWkJNFIBMsENdBMnquZYVOy3SZLs9AGwpqXH7ZeOOs4JMlrl/PIBirxYCmPUB5g4SwYHQZ3ThyGf3+CI5OhcxGjJiGNrYw7VaIMniZoT2xcwGvqvpFIKcUUzLk0RyBfRtLzAd0LKh2zk/lyOAWFhAlqrSzjXCE6dwpnEu0HfU/H4AY5Wq5Bo9eSBRnKMW4hhWXrEH/mVPQJKCc1mK88jyOVokN9GhB5tjVBOH4b4+0obH0e83LnYMrztYeP3yS1bMyQM8pFpccbOqVqZDKrx8/PWFnSs3tjdvjl7cnH3zYAvT/Gw4O/79xvbzK3sXH53xznheZ+fVPSoRUntKHzCyjmMNbHhMPiLPyIcD2YcOVlgZSUCuq+IsC9coGcaZnKrLO5/dHz9+Jc+vJTgTOsLi6YQWHakqL2mKyhoGOpLxvUVfUjVmelaX2V35vC+STTzVIGiqEbb7aOvm6NK1nUvr4w3S4oXwoKJMLMxWRKGsYbvGWKCeGNhoCtfoWR1UCwmiYC3Mk1Cj58mwHd4VdWYxlPfzCNPn+68+e/3sOhpKrT8kcLefXdnd2hpvnIdnSwJ9sTG0FXvoS8/FhCL/Zx5HMJqCBqKXzmgCcc3+4U8k2R4jya9qkdErMJcgzKHdXPTlV5j2OHkIpExoQRXUHf/z7njjEjk7Q42JZQOsC/4eBitGIF0Usjzs2NEVv/A9dUQ+rFJ2T2+igekhOY0ujFJ81oT+YCxzTHV2Nqjxy7HRxUcc5Cqs8UlBcGpt+9k/SO91xuR3UlohH9pjb8vIB1fwJ8V+GkUnBvIhAd8wRWYYWurot7iwxBdSdVXKkc13NDqzYdcGKj9QqarKjj37thkR38S0GfFTHqobSdL1A8nmxZkOg+JBx12YacVQoQgWKWQN/5Mayin8VkpCLVDtqsJSm4ZvXamaFMGnRRfwshKcPgkSFWIl7qjoPCnkrMhFSZAPp88HDELLJG+B0OWPwJQbJjpMDFIqZy0jcGCjc59QExFRX2giiqEBYmTX0dveMAfSMgQufTU6jjEmfIxBC4xV8CcRkrSgwH5ie3NzdPku+UwAnv9GEaCqcsaEGZesWRgerKJ7nd3v/r773Qu/ILt+RUZLaEGmn0a4/WTv9mO4cBV/qiMZOAeWtCkDfVTA1Pug0ZCqVbnRQIm80ZCZenQKQdM7e1iY+g9q4usT')).decode('utf-8')) -------------------------------------------------------------------------------- /other/火锅视频修复加强.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 火锅视频 v1.3 update add 提现功能 3 | 变量 hgsp_cookie 账号和密码以@隔开 账号@密码 4 | 多账号以&隔开 账号1@密码1 & 账号2@密码2 5 | 开启自动提现功能 设置变量 export hgsp_wd="true" 默认不开启 6 | 开启自动兑换储蓄金 设置变量 export hgsp_es="true" 默认不开启 7 | 注册链接:http://www.huoguo.video/h5/reg.html?invite_code=L7KXVD 8 | ''' 9 | import requests 10 | import time 11 | import os 12 | import sys 13 | 14 | 15 | class HgSp(): 16 | VIDEO_F:int = 13 #视频次数 17 | def __init__(self,account,hgsp_wd,hgsp_es,video_f=VIDEO_F): 18 | account=account.split('@') 19 | self.video_f=video_f 20 | self.hgsp_wd=hgsp_wd 21 | self.hgsp_es=hgsp_es 22 | self.session = requests.Session() 23 | self.headers={ 24 | 'os': 'android', 25 | 'Version-Code': '1', 26 | 'Client-Version': '1.0.0', 27 | 'datetime': '2023-10-20 16:19:59.694', 28 | 'Content-Type': 'application/x-www-form-urlencoded', 29 | 'Host': 'www.huoguo.video', 30 | 'Connection': 'Keep-Alive', 31 | 'User-Agent': 'okhttp/3.12.13', 32 | } 33 | self.data = { 34 | 'login': account[0], 35 | 'type': '2', 36 | 'verifiable_code': '', 37 | 'password': account[1] 38 | } 39 | 40 | # 登录 41 | def login(self): 42 | login_response = self.session.post('http://www.huoguo.video/api/v2/auth/login', headers=self.headers, data=self.data).json() 43 | if "access_token" in login_response: 44 | token = login_response['access_token'] 45 | del self.headers['Content-Type'] 46 | self.headers['Authorization']=f"Bearer {token}" 47 | response = self.session.get('http://www.huoguo.video/api/v2/user', headers=self.headers).json() 48 | print(f"✅✅登录成功,当前用户:{response['name']}") 49 | self.main() 50 | else: 51 | print(f"{login_response['message']}") 52 | 53 | # 观看视频 54 | def watch_video(self): 55 | for i in range(self.video_f): 56 | response = self.session.get('http://www.huoguo.video/api/v2/hgb/recive', headers=self.headers).json() 57 | print(f'【观看视频】{response["message"]}') 58 | if '火锅币' not in response['message']: 59 | break 60 | time.sleep(16) 61 | self.get_today_info() 62 | 63 | # 获取今日信息 64 | def get_today_info(self): 65 | response = self.session.get('http://www.huoguo.video/api/v2/hgb/detail', headers=self.headers).json() 66 | self.coin = response['coin'] 67 | self.today_coin = response['today_coin'] 68 | print(f"【观看视频】今日获得火锅币:{self.today_coin},当前总火锅币:{self.coin}") 69 | 70 | # 兑换储蓄金 71 | def exchange_saving(self): 72 | data = {'count': self.coin} 73 | response = self.session.post('http://www.huoguo.video/api/v2/hgb/exchange-savings', headers=self.headers, data=data).json() 74 | if "amount" in response: 75 | print(f"【兑换储蓄金】获得储蓄金{response['amount']}") 76 | else: 77 | print(f"【兑换储蓄金】{response['message']}") 78 | 79 | # 查询信息 80 | def get_info(self): 81 | response = self.session.get('http://www.huoguo.video/api/v2/hgb/piggy', headers=self.headers).json() 82 | self.balance = response['balance'] 83 | print(f"【查询信息】当前总储蓄金:{response['saving']} 可提现余额为:{response['balance']}") 84 | 85 | # 提现 86 | def withdraw(self): 87 | balance_float = float(self.balance) 88 | amount = "{:.2f}".format(balance_float) 89 | data = {'amount': amount} 90 | response = self.session.post("http://www.huoguo.video/api/v2/wallet/withdraw", headers=self.headers,data=data).json() 91 | print(response) 92 | 93 | 94 | 95 | def main(self): 96 | self.watch_video() 97 | if self.hgsp_es == 'true': 98 | self.exchange_saving() 99 | self.get_info() 100 | if self.hgsp_wd == 'true': 101 | self.withdraw() 102 | 103 | 104 | 105 | # 主程序 106 | def main(): 107 | global account_list 108 | account_list=os.getenv("hgsp_cookie").split('&') 109 | hgsp_wd=os.getenv("hgsp_wd") 110 | hgsp_es=os.getenv("hgsp_es") 111 | if not account_list: 112 | print('没有获取到账号!') 113 | return 114 | print(f'⭐⭐获取到{len(account_list)}个账号') 115 | for index,account in enumerate(account_list): 116 | print(f'=================== 第{index + 1}个账号 ======================') 117 | HgSp(account,hgsp_wd,hgsp_es).login() 118 | 119 | if __name__ == '__main__': 120 | main() 121 | sys.exit() 122 | -------------------------------------------------------------------------------- /pc-asm/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/1.png -------------------------------------------------------------------------------- /pc-asm/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/2.png -------------------------------------------------------------------------------- /pc-asm/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/3.png -------------------------------------------------------------------------------- /pc-asm/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/4.png -------------------------------------------------------------------------------- /pc-asm/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/5.png -------------------------------------------------------------------------------- /pc-asm/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/6.png -------------------------------------------------------------------------------- /pc-asm/close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/close.png -------------------------------------------------------------------------------- /pc-asm/close2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/close2.png -------------------------------------------------------------------------------- /pc-asm/finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/finish.png -------------------------------------------------------------------------------- /pc-asm/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/search.png -------------------------------------------------------------------------------- /pc-asm/sign.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/sign.png -------------------------------------------------------------------------------- /pc-asm/signed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/signed.png -------------------------------------------------------------------------------- /pc-asm/skip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-asm/skip.png -------------------------------------------------------------------------------- /pc-fnyq/20240330_070502.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/20240330_070502.png -------------------------------------------------------------------------------- /pc-fnyq/20240405_105355.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/20240405_105355.png -------------------------------------------------------------------------------- /pc-fnyq/do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/do.png -------------------------------------------------------------------------------- /pc-fnyq/finish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/finish.png -------------------------------------------------------------------------------- /pc-fnyq/jd-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/jd-main.png -------------------------------------------------------------------------------- /pc-fnyq/jd-start-verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/jd-start-verify.png -------------------------------------------------------------------------------- /pc-fnyq/jd-verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/jd-verify.png -------------------------------------------------------------------------------- /pc-fnyq/mytool.py: -------------------------------------------------------------------------------- 1 | import uuid 2 | import hashlib 3 | import os 4 | import random 5 | import re 6 | import time 7 | from datetime import datetime 8 | from zoneinfo import ZoneInfo 9 | 10 | 11 | def getlistCk(ckname): 12 | if os.getenv(ckname) is None: 13 | return None 14 | # 字符串用回车或@符号分开为list 15 | return re.split(r'\n|@|&', os.getenv(ckname)) 16 | 17 | 18 | # 获取北京时间 带时区 19 | def gettime(): 20 | return datetime.now(tz=ZoneInfo('Asia/Shanghai')) 21 | 22 | def getSecTimestamp(): 23 | return int(time.time()) 24 | 25 | 26 | def getMSecTimestamp(): 27 | return int(time.time() * 1000) 28 | 29 | 30 | # 随机休眠几秒 随机数为float 31 | def sleep(x, y): 32 | a = random.uniform(x, y) 33 | print(f"随机休眠 {a} 秒") 34 | time.sleep(a) 35 | 36 | 37 | def 输入中文(text): 38 | import pyautogui 39 | import pyperclip 40 | time.sleep(1) 41 | pyperclip.copy(text) 42 | pyautogui.hotkey("ctrl", "v") 43 | 44 | 45 | def 点击图片中心(path="", png="", timeout=3): 46 | import pyautogui 47 | time.sleep(1) 48 | if 寻找是否存在(path, png, timeout): 49 | print(f"找到{png}, 开始执行") 50 | pyautogui.click(pyautogui.center( 51 | pyautogui.locateOnScreen(os.path.dirname(os.path.abspath(__file__)) + f'\\{path}\\{png}', confidence=0.8))) 52 | 53 | 54 | def 寻找是否存在(path="", png="", timeout=3): 55 | import pyautogui 56 | while timeout > 0: 57 | if pyautogui.locateOnScreen(os.path.dirname(os.path.abspath(__file__)) + f'\\{path}\\{png}', 58 | confidence=0.8) is None: 59 | timeout -= 1 60 | time.sleep(1) 61 | continue 62 | else: 63 | return True 64 | return False 65 | 66 | 67 | def getJsonConfig(name): 68 | import json 69 | with open(os.path.dirname(os.path.abspath(__file__)) + f'\\config.json', 'r') as f: 70 | return json.load(f)[name] 71 | 72 | def randomint(len): 73 | return random.randint(10 ** (len - 1), 10 ** len - 1) 74 | 75 | def calculate_md5(input_string): 76 | md5_hash = hashlib.md5() 77 | md5_hash.update(input_string.encode()) 78 | return md5_hash.hexdigest() 79 | 80 | def getUUID(): 81 | return str(uuid.uuid4()) 82 | 83 | if __name__ == '__main__': 84 | print(getUUID()) 85 | -------------------------------------------------------------------------------- /pc-fnyq/pc-fnyq.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import os 3 | import time 4 | import traceback 5 | 6 | import keyboard 7 | import win32con 8 | import win32gui 9 | import mytool 10 | 11 | bPuase = False 12 | def toggle_pause(): 13 | global bPuase 14 | bPuase = not bPuase 15 | print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') + "循环" + ("暂停" if bPuase else "恢复")) 16 | 17 | 18 | def 点击图片中心(path="", png="", timeout=3): 19 | import pyautogui 20 | time.sleep(1) 21 | if len(path) > 0: 22 | filename = os.path.dirname(os.path.abspath(__file__)) + f'\\{path}\\{png}' 23 | else: 24 | filename = os.path.dirname(os.path.abspath(__file__)) + f'\\{png}' 25 | if 寻找是否存在(path, png, timeout): 26 | print(f"找到{png}, 开始执行") 27 | pyautogui.click(pyautogui.center( 28 | pyautogui.locateOnScreen(filename, confidence=0.8))) 29 | 30 | 31 | def 淘宝拖动(): 32 | import pyautogui 33 | png = 'taobao-do.png' 34 | filename = os.path.dirname(os.path.abspath(__file__)) + f'\\{png}' 35 | icount = 0 36 | while icount < 3: 37 | if 寻找是否存在(path='', png=png, timeout=1): 38 | print(f"找到{png}, 开始执行") 39 | 点击图片中心(path='', png='do.png', timeout=1) 40 | start_x, start_y = pyautogui.center(pyautogui.locateOnScreen(filename, confidence=0.8)) 41 | pyautogui.moveTo(start_x, start_y, duration=0.1) 42 | time.sleep(1) 43 | end_x = start_x + 500 + mytool.randomint(2) 44 | end_y = start_y + 20 + mytool.randomint(1) 45 | pyautogui.dragTo(end_x, end_y, duration=0.3) 46 | icount += 1 47 | time.sleep(1) 48 | if 寻找是否存在(path='', png='taobao-verify-error.png', timeout=1): 49 | 点击图片中心(path='', png='taobao-verify-error.png', timeout=1) 50 | time.sleep(1) 51 | continue 52 | else: 53 | 点击图片中心(path='', png='finish.png', timeout=1) 54 | break 55 | 56 | 57 | 58 | def 寻找是否存在(path="", png="", timeout=3): 59 | import pyautogui 60 | try: 61 | while timeout > 0: 62 | if len(path) > 0: 63 | filename = os.path.dirname(os.path.abspath(__file__)) + f'\\{path}\\{png}' 64 | else: 65 | filename = os.path.dirname(os.path.abspath(__file__)) + f'\\{png}' 66 | if pyautogui.locateOnScreen(filename, confidence=0.8) is None: 67 | timeout -= 1 68 | time.sleep(1) 69 | continue 70 | else: 71 | return True 72 | return False 73 | except Exception: 74 | traceback.print_exc() 75 | return False 76 | 77 | 78 | def find_windows_by_title(title): 79 | def callback(hwnd, hwnds): 80 | if win32gui.IsWindowVisible(hwnd) and title in win32gui.GetWindowText(hwnd): 81 | hwnds.append(hwnd) 82 | return True 83 | hwnds = [] 84 | win32gui.EnumWindows(callback, hwnds) 85 | return hwnds 86 | 87 | def 保存图片(): 88 | import pyautogui 89 | filename = os.path.dirname(os.path.abspath(__file__)) + f'\\{datetime.datetime.now().strftime("%Y%m%d%H%M%S")}.png' 90 | pyautogui.screenshot(filename) 91 | 92 | def run_jd(): 93 | print("开始查找京东窗口") 94 | for x in find_windows_by_title("京东"): 95 | # 设置窗口状态为最前 96 | win32gui.SetForegroundWindow(x) 97 | # 最大化 98 | win32gui.ShowWindow(x, win32con.SW_MAXIMIZE) 99 | time.sleep(1) 100 | if 寻找是否存在(path="", png="do.png"): 101 | print("找到 手工处理") 102 | if 寻找是否存在(path="", png="jd-verify.png"): 103 | print("需要验证") 104 | 点击图片中心(path="", png="do.png") 105 | time.sleep(5) 106 | 点击图片中心(path="", png="jd-verify.png") 107 | time.sleep(5) 108 | if 寻找是否存在(path="", png="jd-start-verify.png"): 109 | 110 | 保存图片() 111 | 点击图片中心(path="", png="finish.png") 112 | win32gui.ShowWindow(x, win32con.SW_MINIMIZE) 113 | 114 | 115 | def run_taobao(): 116 | print("开始查找淘宝窗口") 117 | for x in find_windows_by_title("淘宝"): 118 | time.sleep(1) 119 | if bPuase: 120 | continue 121 | try: 122 | # 设置窗口状态为最前 123 | win32gui.SetForegroundWindow(x) 124 | # 最大化 125 | win32gui.ShowWindow(x, win32con.SW_MAXIMIZE) 126 | if 寻找是否存在(path="", png="taobao-verify.png", timeout=1) or 寻找是否存在(path="", png="taobao-do.png", 127 | timeout=1): 128 | print("找到 手工处理") 129 | 淘宝拖动() 130 | # win32gui.ShowWindow(x, win32con.SW_MINIMIZE) 131 | except Exception: 132 | pass 133 | 134 | 135 | 136 | if __name__ == '__main__': 137 | keyboard.add_hotkey('p', toggle_pause) 138 | while True: 139 | run_taobao() 140 | -------------------------------------------------------------------------------- /pc-fnyq/result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/result.png -------------------------------------------------------------------------------- /pc-fnyq/taobao-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/taobao-1.png -------------------------------------------------------------------------------- /pc-fnyq/taobao-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/taobao-2.png -------------------------------------------------------------------------------- /pc-fnyq/taobao-do.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/taobao-do.png -------------------------------------------------------------------------------- /pc-fnyq/taobao-verify-error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/taobao-verify-error.png -------------------------------------------------------------------------------- /pc-fnyq/taobao-verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-fnyq/taobao-verify.png -------------------------------------------------------------------------------- /pc-mshy/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/1.png -------------------------------------------------------------------------------- /pc-mshy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/2.png -------------------------------------------------------------------------------- /pc-mshy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/3.png -------------------------------------------------------------------------------- /pc-mshy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/4.png -------------------------------------------------------------------------------- /pc-mshy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/5.png -------------------------------------------------------------------------------- /pc-mshy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/6.png -------------------------------------------------------------------------------- /pc-mshy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/7.png -------------------------------------------------------------------------------- /pc-mshy/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/pc-mshy/search.png -------------------------------------------------------------------------------- /pkl2json.py: -------------------------------------------------------------------------------- 1 | import json 2 | import pickle 3 | 4 | if __name__ == '__main__': 5 | # pkl文件转JSON 6 | with open('huazhu.pkl', 'rb') as f: 7 | data = pickle.load(f) 8 | for i in data: 9 | print(f"{i['name']}={i['value']};") 10 | 11 | pass -------------------------------------------------------------------------------- /pskj.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-攀升科技") 3 | cron 0 8 * * * 4 | 环境变量名称 wx_pskj 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import ApiRequest 11 | import mytool 12 | 13 | title = '微信小程序-攀升科技' 14 | tokenName = 'wx_pskj' 15 | 16 | 17 | class pskj(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'psjia.ipason.com', 22 | 'Connection': 'keep-alive', 23 | 'xweb_xhr': '1', 24 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) XWEB/9129', 25 | 'token': data, 26 | 'Referer': 'https://servicewechat.com/wxb0cd377dac079028/18/page-frame.html', 27 | 'Accept-Language': 'zh-CN,zh;q=0.9', 28 | } 29 | 30 | def login(self): 31 | json_data = {} 32 | response = self.sec.post('https://psjia.ipason.com/api/v2.member.score_shop/signSub', json=json_data) 33 | print(response.text) 34 | 35 | 36 | if __name__ == '__main__': 37 | ApiRequest.ApiMain(['login']).run(tokenName, pskj) 38 | -------------------------------------------------------------------------------- /qchy.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-雀巢会员俱乐部") 4 | env add wx_qchy = Authorization 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import requests 10 | 11 | # !/usr/bin/env python3 12 | # coding: utf-8 13 | import ApiRequest 14 | import ssl 15 | 16 | tokenName = 'wx_qchy' 17 | msg = '' 18 | 19 | # 创建自定义适配器 20 | class TLSAdapter(requests.adapters.HTTPAdapter): 21 | def init_poolmanager(self, *args, **kwargs): 22 | context = ssl.create_default_context() 23 | context.check_hostname = False 24 | context.set_ciphers("DEFAULT") 25 | kwargs['ssl_context'] = context 26 | return super().init_poolmanager(*args, **kwargs) 27 | 28 | 29 | class qchy(ApiRequest.ApiRequest): 30 | def __init__(self, data): 31 | super().__init__() 32 | self.sec.headers = { 33 | 'Host': 'crm.nestlechinese.com', 34 | 'Connection': 'keep-alive', 35 | # 'Content-Length': '14', 36 | 'xweb_xhr': '1', 37 | 'Authorization': data, 38 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b11)XWEB/9185', 39 | 'Content-Type': 'application/json', 40 | 'Accept': '*/*', 41 | 'Sec-Fetch-Site': 'cross-site', 42 | 'Sec-Fetch-Mode': 'cors', 43 | 'Sec-Fetch-Dest': 'empty', 44 | 'Referer': 'https://servicewechat.com/wxc5db704249c9bb31/301/page-frame.html', 45 | # 'Accept-Encoding': 'gzip, deflate, br', 46 | 'Accept-Language': 'zh-CN,zh;q=0.9', 47 | } 48 | 49 | def login(self): 50 | json_data = { 51 | 'task_id': 17, 52 | } 53 | # session = requests.Session() 54 | # session.mount('https://', TLSAdapter()) 55 | # session.verify = False 56 | # response = session.post('https://crm.nestlechinese.com/openapi/activityservice/api/task/add', headers=self.sec.headers, json=json_data).text 57 | response = self.sec.post('https://crm.nestlechinese.com/openapi/activityservice/api/task/add', json=json_data) 58 | if response.status_code == 200: 59 | print(response.json()) 60 | else: 61 | print(response.status_code) 62 | 63 | 64 | if __name__ == '__main__': 65 | ApiRequest.ApiMain(['login']).run(tokenName, qchy) 66 | -------------------------------------------------------------------------------- /riqing.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-日清食品体验馆") 4 | env add wx_riqing = unionId#X-wx8465e1173d1e11b0-Token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | from datetime import datetime 10 | 11 | # !/usr/bin/env python3 12 | # coding: utf-8 13 | import ApiRequest 14 | 15 | tokenName = 'wx_riqing' 16 | msg = '' 17 | 18 | 19 | class riqing(ApiRequest.ApiRequest): 20 | def __init__(self, data): 21 | super().__init__() 22 | self.sec.headers = { 23 | 'Host': 'prod-api.nissinfoodium.com.cn', 24 | 'Connection': 'keep-alive', 25 | 'User-Id': data.split("#")[0], 26 | 'Ep-Version': '1', 27 | 'App-Path': 'my/sign-in/sign-in', 28 | 'Extra': '{"scene":1053}', 29 | # 'Tag': 'prod/default', 30 | 'Enterprise-Hash': '1246b9ecd0972c7b0e50b4c9cdad9f0c', 31 | 'App-Name': '%E6%97%A5%E6%B8%85%E9%A3%9F%E5%93%81%E4%BD%93%E9%AA%8C%E9%A6%86', 32 | 'Content-Type': 'application/json', 33 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 34 | 'xweb_xhr': '1', 35 | 'Api-Version': 'v1.0', 36 | 'Token': data.split("#")[1], 37 | 'App-Version': 'V2.3.6', 38 | 'Referer': 'https://servicewechat.com/wx21b71db59d93bd6d/66/page-frame.html', 39 | # 'Accept-Encoding': 'gzip, deflate, br', 40 | 'Accept-Language': 'zh-CN,zh;q=0.9', 41 | } 42 | 43 | def login(self): 44 | 日期 = datetime.now().strftime("%Y-%m-") + str(datetime.now().day) 45 | response = self.sec.get(f'https://prod-api.nissinfoodium.com.cn/gw-shop/app/v1/signs/sign?date={日期}&type=1&').json() 46 | print(response) 47 | 48 | 49 | if __name__ == '__main__': 50 | ApiRequest.ApiMain(['login']).run(tokenName, riqing) 51 | -------------------------------------------------------------------------------- /ryytn.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * ryytn.py 3 | new Env("微信小程序-认养一头牛商城") 4 | env add ryytn_data 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import json 11 | import os 12 | import traceback 13 | import requests 14 | import urllib3 15 | 16 | import ApiRequest 17 | import mytool 18 | 19 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 20 | 21 | title = '微信小程序-认养一头牛商城' 22 | tokenName = 'ryytn_data' 23 | 24 | 25 | class ryytn(ApiRequest.ApiRequest): 26 | def __init__(self, data): 27 | super().__init__() 28 | self.sec.headers = { 29 | 'Host': 'www.milkcard.mall.ryytngroup.com', 30 | 'Connection': 'keep-alive', 31 | 'xweb_xhr': '1', 32 | 'X-Auth-Token': data, 33 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309071d)XWEB/8461', 34 | 'Accept': '*/*', 35 | 'Referer': 'https://servicewechat.com/wx0408f3f20d769a2f/234/page-frame.html', 36 | 'Accept-Language': 'zh-CN,zh;q=0.9', 37 | } 38 | 39 | def login(self): 40 | response = self.sec.post('https://www.milkcard.mall.ryytngroup.com/mall/xhr/task/checkin/save', json={}).json() 41 | print(response) 42 | 43 | 44 | if __name__ == '__main__': 45 | # DEBUG 46 | # if os.path.exists('debug.py'): 47 | # import debug 48 | # 49 | # debug.setDebugEnv() 50 | # 51 | # if mytool.getlistCk(f'{tokenName}') is None: 52 | # print(f'请检查你的变量名称 {tokenName} 是否填写正确') 53 | # exit(0) 54 | # else: 55 | # for i in mytool.getlistCk(f'{tokenName}'): 56 | # ryytn(i).login() 57 | ApiRequest.ApiMain(['login']).run(tokenName, ryytn) -------------------------------------------------------------------------------- /sdl.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-三得利") 4 | env add wx_sdl 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'wx_sdl' 14 | msg = '' 15 | 16 | 17 | class sdl(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'xiaodian.miyatech.com', 22 | 'Connection': 'keep-alive', 23 | # 'Content-Length': '17', 24 | 'X-VERSION': '2.1.3', 25 | 'Authorization': data, 26 | 'HH-VERSION': '0.2.8', 27 | 'HH-FROM': '20230130307725', 28 | 'componentSend': '1', 29 | 'HH-APP': 'wxb33ed03c6c715482', 30 | 'appPublishType': '1', 31 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b11)XWEB/9185', 32 | 'Content-Type': 'application/json;charset=UTF-8', 33 | 'xweb_xhr': '1', 34 | 'store': ',:,', 35 | 'HH-CI': 'saas-wechat-app', 36 | 'Accept': '*/*', 37 | 'Sec-Fetch-Site': 'cross-site', 38 | 'Sec-Fetch-Mode': 'cors', 39 | 'Sec-Fetch-Dest': 'empty', 40 | 'Referer': 'https://servicewechat.com/wxb33ed03c6c715482/28/page-frame.html', 41 | # 'Accept-Encoding': 'gzip, deflate, br', 42 | 'Accept-Language': 'zh-CN,zh;q=0.9', 43 | } 44 | 45 | def login(self): 46 | json_data = { 47 | 'miniappId': 159, 48 | } 49 | 50 | rj = self.sec.post('https://xiaodian.miyatech.com/api/coupon/auth/signIn', json=json_data).json() 51 | print(rj) 52 | 53 | 54 | if __name__ == '__main__': 55 | ApiRequest.ApiMain(['login']).run(tokenName, sdl) 56 | -------------------------------------------------------------------------------- /updateCookie/JDLogin.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | import time 4 | import traceback 5 | 6 | import click 7 | import pyperclip 8 | from playwright.sync_api import sync_playwright 9 | 10 | 11 | # @click.command() 12 | # @click.option('--account', help='帐号', required=True) 13 | def run(account): 14 | with sync_playwright() as playwright: 15 | pyperclip.copy("") 16 | browser = playwright.chromium.launch(headless=False) 17 | context = browser.new_context() 18 | 19 | # Open new page 20 | page = context.new_page() 21 | 22 | # Go to https://plogin.m.jd.com/login/login?appid=300&returnurl=https%3A%2F%2Fwq.jd.com%2Fpassport%2FLoginRedirect%3Fstate%3D2404625993%26returnurl%3Dhttps%253A%252F%252Fhome.m.jd.com%252FmyJd%252Fnewhome.action%253Fsceneval%253D2%2526ufc%253D%2526&source=wq_passport 23 | page.goto("https://home.m.jd.com/myJd/home.action") 24 | # page.wait_for_selector('//html/body/div[1]/div/div[3]/p[1]/input') 25 | page.wait_for_load_state('networkidle') 26 | page.get_by_placeholder("请输入手机号").fill(account) 27 | # page.fill('//html/body/div[1]/div/div[3]/p[1]/input', account) 28 | page.check("input[type=\"checkbox\"]") 29 | time.sleep(1) 30 | page.get_by_role("button", name="获取验证码").click() 31 | 32 | jsonData = {} 33 | # iCount = 0 34 | while True: 35 | for x in context.cookies(): 36 | if x['name'] == 'pt_key': 37 | jsonData['PT_KEY'] = x['value'] 38 | print("cookie.pt_key : " + x['value']) 39 | if x['name'] == 'pt_pin': 40 | jsonData['PT_PIN'] = x['value'] 41 | print("cookie.pt_pin : " + x['value']) 42 | if 'PT_KEY' in jsonData and 'PT_PIN' in jsonData: 43 | break 44 | else: 45 | if browser.is_connected(): 46 | page.wait_for_timeout(1 * 1000) 47 | try: 48 | print(len(page.query_selector('//html/body/div[2]/div/div[3]/p[2]/input').input_value())) 49 | if len(page.query_selector('//html/body/div[2]/div/div[3]/p[2]/input').input_value()) == 6: 50 | page.get_by_text("登 录").click() 51 | except: 52 | pass 53 | context.close() 54 | browser.close() 55 | # pyperclip.copy() 56 | 文件路径 = os.path.dirname(os.path.abspath(__file__)) + "\\" + account + '-' + "JD.txt" 57 | with open(文件路径, 'w') as f: 58 | content = {'name': 'JD_COOKIE', 'value': f"pt_key={jsonData['PT_KEY']};pt_pin={jsonData['PT_PIN']};", 'remark': account, 'run': False, 'taskName': ''} 59 | json.dump(content, f) 60 | return 0 61 | 62 | if __name__ == '__main__': 63 | with open('config.json', 'r') as f: 64 | config = json.load(f) 65 | 电话号码列表 = config['phoneList'] 66 | for x in 电话号码列表: 67 | try: 68 | run(x) 69 | except: 70 | traceback.print_exc() 71 | # run() -------------------------------------------------------------------------------- /updateCookie/listDialog.py: -------------------------------------------------------------------------------- 1 | import tkinter as tk 2 | 3 | 返回值 = -99 4 | win = tk.Tk() 5 | 6 | def myfunction(data): 7 | global 返回值 8 | 返回值 = data 9 | win.quit() 10 | 11 | def runDialog(jsonData): 12 | n = len(jsonData) 13 | win.title("列表界面") 14 | win.attributes('-topmost', True) # 将顶层窗口置于最前 15 | win.geometry('{width}x{high}'.format(width=300, high=n * 50)) 16 | 17 | for x in jsonData: 18 | button = tk.Button(win, text=x, padx=10, pady=10, command=lambda j=x: myfunction(jsonData[j])) 19 | button.pack() 20 | tk.mainloop() 21 | return 返回值 22 | 23 | 24 | if __name__ == '__main__': 25 | print(runDialog({'按钮1': 1, '按钮2': 3})) -------------------------------------------------------------------------------- /updateCookie/run_playwright.bat: -------------------------------------------------------------------------------- 1 | C:\Python39\python.exe -m playwright codegen --target=python -o test.py -------------------------------------------------------------------------------- /updateCookie/updateCookie_JD.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/updateCookie/updateCookie_JD.py -------------------------------------------------------------------------------- /updateCookie/updateCookie_TextLoop.py: -------------------------------------------------------------------------------- 1 | import datetime 2 | import json 3 | import os 4 | import traceback 5 | 6 | from listDialog import runDialog 7 | from updateCookie_Util import * 8 | from watchdog.observers import Observer 9 | from watchdog.events import FileSystemEventHandler 10 | from plyer import notification 11 | 12 | with open('config.json', 'r') as f: 13 | config = json.load(f) 14 | 电话号码列表 = config['phoneList'] 15 | 16 | 17 | def find_txt(path): 18 | data = [] 19 | for root, dirs, files in os.walk(path): 20 | for file in files: 21 | if file.endswith(".txt"): 22 | data.append(os.path.join(root, file)) 23 | return data 24 | 25 | 26 | class MyHandler(FileSystemEventHandler): 27 | def on_modified(self, event): 28 | if not event.is_directory and event.src_path.endswith(".txt"): 29 | print(f'文件 {event.src_path} 已经被修改') 30 | changeenv(event.src_path) 31 | 32 | 33 | def changeenv(src_path): 34 | updateFlag = True 35 | try: 36 | with open(src_path, 'r') as f: 37 | json_data = json.load(f) 38 | data = searchEnvs(json_data['name']) 39 | for y in data: 40 | if y['value'] == json_data['value']: 41 | print("无需更新") 42 | updateFlag = False 43 | 44 | if updateFlag: 45 | if json_data['remark'] == '': 46 | json_data['remark'] = 电话号码列表[runDialog(dialogMsg)] 47 | for y in data: 48 | if json_data['remark'] == y['remarks']: 49 | deleteEnv(y['id']) 50 | if postEnv(json_data['name'], json_data['value'], json_data['remark']): 51 | if json_data['run']: 52 | # 执行脚本 53 | runTask(searchTask(json_data['taskName'])) 54 | notification.notify( 55 | title=f'更新{json_data["taskName"]}', 56 | message="更新成功", 57 | timeout=5, 58 | ) 59 | except: 60 | traceback.print_exc() 61 | pass 62 | 63 | if __name__ == '__main__': 64 | 65 | 隐藏cmd对话框() 66 | dialogMsg = {} 67 | count = 0 68 | for x in 电话号码列表: 69 | dialogMsg[x] = count 70 | count += 1 71 | 72 | # 单次运行 73 | # changeenv('13055789923-pepcoinnew.pepcoinbypepsico.com.cn.txt') 74 | 75 | path_to_watch = os.path.dirname(os.path.abspath(__file__)) 76 | event_handler = MyHandler() 77 | observer = Observer() 78 | observer.schedule(event_handler, path_to_watch, recursive=False) 79 | 80 | print(f"开始监听 {path_to_watch}...") 81 | observer.start() 82 | 83 | try: 84 | while True: 85 | time.sleep(1) 86 | except KeyboardInterrupt: 87 | observer.stop() 88 | 89 | observer.join() 90 | -------------------------------------------------------------------------------- /updateCookie/updateCookie_Util.py: -------------------------------------------------------------------------------- 1 | import ctypes 2 | import json 3 | import time 4 | from enum import Enum 5 | from functools import wraps 6 | 7 | import requests 8 | 9 | 10 | class UpdateMode(Enum): 11 | NEWENV = 1 12 | MODIFY = 2 13 | 14 | 15 | def time_counts(fn): 16 | @wraps(fn) 17 | def mesasure_time(*args, **kwargs): 18 | t1 = time.time() 19 | result = fn(*args, **kwargs) 20 | t2 = time.time() 21 | print('<-- ' + fn.__name__ + ' _执行耗时: ' + str(round((t2 - t1), 3)) + ' seconds -->') 22 | return result 23 | 24 | return mesasure_time 25 | 26 | 27 | def login_file(): 28 | with open('config.json', 'r') as f: 29 | config = json.load(f) 30 | token = login_ql(config['client_id'], config['client_secret']) 31 | config['token'] = token 32 | with open('config.json', 'w') as f: 33 | f.write(json.dumps(config, ensure_ascii=False)) 34 | return token 35 | 36 | 37 | def getToken(): 38 | with open('config.json', 'r') as f: 39 | config = json.load(f) 40 | if config['token'] == '': 41 | return login_file() 42 | else: 43 | return config['token'] 44 | 45 | 46 | def login_ql(client_id, client_secret): 47 | url = f"http://120.77.63.151:3041/open/auth/token?client_id={client_id}&client_secret={client_secret}" 48 | headers = { 49 | 'Content-Type': 'application/json' 50 | } 51 | sec = requests.session() 52 | sec.verify = False 53 | sec.trust_env = False 54 | rj = sec.get(url, headers=headers).json() 55 | if rj['code'] == 200: 56 | return 'Bearer ' + rj['data']['token'] 57 | else: 58 | return None 59 | 60 | 61 | def searchEnvs(name): 62 | data = [] 63 | url = f"http://120.77.63.151:3041/open/envs" 64 | headers = { 65 | 'Authorization': getToken(), 66 | 'Content-Type': 'application/json' 67 | } 68 | sec = requests.session() 69 | sec.verify = False 70 | sec.trust_env = False 71 | rj = sec.get(url, headers=headers).json() 72 | if rj['code'] == 200: 73 | for i in rj['data']: 74 | if i['name'] == name: 75 | data.append(i) 76 | return data 77 | else: 78 | return None 79 | 80 | 81 | def updateEnvByid(id, name, value, remark=''): 82 | deleteEnv(id) 83 | postEnv(name, value, remark) 84 | pass 85 | 86 | 87 | def deleteEnv(id): 88 | url = f"http://120.77.63.151:3041/open/envs" 89 | headers = { 90 | 'Authorization': getToken(), 91 | 'Content-Type': 'application/json' 92 | } 93 | sec = requests.session() 94 | sec.verify = False 95 | sec.trust_env = False 96 | rj = sec.delete(url, headers=headers, data=json.dumps([id], ensure_ascii=False)).json() 97 | if rj['code'] == 200: 98 | print("删除环境变量成功") 99 | return True 100 | else: 101 | print("删除环境变量失败\n" + json.dumps(rj, ensure_ascii=False)) 102 | return False 103 | 104 | 105 | def postEnv(name, value, remark=''): 106 | url = f"http://120.77.63.151:3041/open/envs" 107 | headers = { 108 | 'Authorization': getToken(), 109 | 'Content-Type': 'application/json' 110 | } 111 | sec = requests.session() 112 | sec.verify = False 113 | sec.trust_env = False 114 | rj = sec.post(url, headers=headers, 115 | data=json.dumps([{'value': value, 'name': name, 'remarks': remark}])).json() 116 | print(rj) 117 | if rj['code'] == 200: 118 | print("新增环境变量成功") 119 | return True 120 | else: 121 | print("新增环境变量失败\n" + json.dumps(rj, ensure_ascii=False)) 122 | return False 123 | 124 | 125 | def 隐藏cmd对话框(): 126 | whnd = ctypes.windll.kernel32.GetConsoleWindow() 127 | if whnd != 0: 128 | ctypes.windll.user32.ShowWindow(whnd, 0) 129 | ctypes.windll.kernel32.CloseHandle(whnd) 130 | 131 | 132 | def searchTask(name): 133 | url = f"http://120.77.63.151:3041/open/crons" 134 | headers = { 135 | 'Authorization': getToken(), 136 | 'Content-Type': 'application/json' 137 | } 138 | sec = requests.session() 139 | sec.verify = False 140 | sec.trust_env = False 141 | rj = sec.get(url, headers=headers).json() 142 | if rj['code'] == 200: 143 | for i in rj['data']['data']: 144 | if i['name'] == name and i['isDisabled'] == 0: 145 | return i['id'] 146 | return None 147 | else: 148 | 149 | return None 150 | 151 | 152 | def runTask(id): 153 | if id is None: 154 | return False 155 | url = f"http://120.77.63.151:3041/open/crons/run" 156 | headers = { 157 | 'Authorization': getToken(), 158 | 'Content-Type': 'application/json' 159 | } 160 | sec = requests.session() 161 | sec.verify = False 162 | sec.trust_env = False 163 | rj = sec.put(url, headers=headers, data=json.dumps([id])).json() 164 | if rj['code'] == 200: 165 | print("执行成功") 166 | return True 167 | else: 168 | print("执行失败\n" + json.dumps(rj, ensure_ascii=False)) 169 | return False 170 | 171 | 172 | if __name__ == '__main__': 173 | print(searchEnvs('JD_COOKIE')) 174 | pass 175 | -------------------------------------------------------------------------------- /updateCookie/webio.py: -------------------------------------------------------------------------------- 1 | import asyncio 2 | import os 3 | import subprocess 4 | 5 | import pyperclip 6 | from pywebio import start_server, config 7 | from pywebio.input import * 8 | from pywebio.output import * 9 | from pywebio.session import * 10 | 11 | from updateCookie_Util import * 12 | 13 | 电话号码列表 = [] 14 | 15 | 16 | @config(title='饿了么ck更新') 17 | def 饿了么ck更新(): 18 | ckname = 'elmck' 19 | info = input_group('', 20 | [ 21 | input('cookies值', name='val', required=True), 22 | input('备注[一般写电话号码]', name='remark', datalist=电话号码列表, required=True), 23 | ] 24 | ) 25 | value = info['val'] 26 | USERID = value.split('USERID=')[1].split(";")[0] 27 | for i in searchEnvs(name=ckname): 28 | USERID2 = i['value'].split('USERID=')[1].split(";")[0] 29 | if USERID2 == USERID: 30 | put_text(f'已经存在 {i["id"]} {USERID}') 31 | deleteEnv(i['id']) 32 | if postEnv(ckname, value, info['remark']): 33 | put_text('更新成功') 34 | else: 35 | put_text('更新失败') 36 | time.sleep(5) 37 | go_app('饿了么ck更新', new_window=False) 38 | pass 39 | 40 | 41 | def 京东登录(x): 42 | pyperclip.copy("") 43 | cmd = 'python.exe JDLogin.py --account ' + x 44 | st = subprocess.STARTUPINFO() 45 | st.dwFlags |= subprocess.STARTF_USESHOWWINDOW 46 | st.wShowWindow = subprocess.SW_HIDE 47 | p = subprocess.Popen(cmd, 48 | bufsize=1, 49 | creationflags=subprocess.CREATE_NEW_CONSOLE, 50 | startupinfo=st) 51 | p.wait() 52 | put_text(f'运行结束 {x}返回{pyperclip.paste()}') 53 | if len(pyperclip.paste()) != 0: 54 | return pyperclip.paste() 55 | else: 56 | return None 57 | 58 | 59 | @config(title='京东ck更新') 60 | def 京东ck更新(): 61 | ckname = 'JD_COOKIE' 62 | info = input_group('', 63 | [ 64 | checkbox('选择需要更新的账号', name='phoneList', options=电话号码列表, value=电话号码列表) 65 | ] 66 | ) 67 | for x in info['phoneList']: 68 | put_text(f'开始更新{x}') 69 | value = 京东登录(x) 70 | if value is not None and 'pt_pin=' in value: 71 | USERID = value.split('pt_pin=')[1].split(";") 72 | for i in searchEnvs(name=ckname): 73 | USERID2 = i['value'].split('pt_pin=')[1].split(";") 74 | if USERID2 == USERID: 75 | put_text(f'已经存在 {i["id"]} {USERID}') 76 | deleteEnv(i['id']) 77 | if postEnv(ckname, value, x): 78 | put_text(x + ' 更新成功') 79 | else: 80 | put_text(x + '更新失败') 81 | else: 82 | continue 83 | 84 | # time.sleep(5) 85 | # go_app('京东ck更新', new_window=False) 86 | 87 | 88 | if __name__ == '__main__': 89 | with open('config.json', 'r') as f: 90 | config = json.load(f) 91 | 电话号码列表 = config['phoneList'] 92 | 93 | os.environ['PYWEBIO_THEME'] = 'dark' 94 | 隐藏cmd对话框() 95 | asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) 96 | start_server( 97 | [ 98 | 饿了么ck更新, 99 | 京东ck更新 100 | ], 101 | port=28989 102 | ) 103 | -------------------------------------------------------------------------------- /wxpushNotify.py: -------------------------------------------------------------------------------- 1 | from wxpusher import WxPusher 2 | import re, sys, os 3 | from collections import deque 4 | 5 | 6 | def sendpush(arrayObject, msg): 7 | if arrayObject: 8 | msg = msg + "\n" + "\n".join(arrayObject) 9 | WxPusher.send_message( 10 | msg, 11 | topic_ids=[os.environ["wxpusherTopicId"]], 12 | token=os.environ["wxpusherAppToken"], 13 | ) 14 | 15 | 16 | def get_ql_path(): 17 | if re.search("/ql/data/", sys.path[0]): 18 | return "/ql/data/" 19 | else: 20 | return "/ql/" 21 | 22 | 23 | def get_ql_logfile(name): 24 | for path, dir_list, file_list in os.walk(get_ql_path() + "log/"): 25 | if name in path: 26 | files = [ 27 | f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f)) 28 | ] 29 | # 如果文件夹为空,返回 None 30 | if not files: 31 | return None 32 | # 根据文件的修改时间进行排序 33 | files.sort( 34 | key=lambda x: os.path.getmtime(os.path.join(path, x)), reverse=True 35 | ) 36 | # 返回最新的文件名 37 | return os.path.join(path, files[0]) 38 | 39 | 40 | def split_file_by_delimiter( 41 | file_path, delimiter="----------------------------------------" 42 | ): 43 | """ 44 | 读取文件并根据指定的分隔符分割内容。 45 | 46 | :param file_path: 文件路径 47 | :param delimiter: 分隔符,默认为 "-------------------" 48 | :return: 分割后的字符串列表 49 | """ 50 | try: 51 | # 打开文件并读取内容 52 | with open(file_path, "r", encoding="utf-8") as file: 53 | content = file.read() 54 | 55 | # 使用分隔符分割内容 56 | parts = content.split(delimiter) 57 | 58 | # 去除每部分的多余空白字符(如换行符、空格等) 59 | parts = [part.strip() for part in parts if part.strip()] 60 | 61 | return parts 62 | 63 | except FileNotFoundError: 64 | print(f"文件未找到: {file_path}") 65 | return [] 66 | except Exception as e: 67 | print(f"读取文件时发生错误: {e}") 68 | return [] 69 | 70 | 71 | class checkObject: 72 | def __init__(self, name, logfile_name, keyword): 73 | self.err_list = [] 74 | self.msg = f"检查{name}发现异常" 75 | self.logfile_name = logfile_name 76 | self.keyword = keyword 77 | 78 | def checkLogfile(self, beforeLine=0): 79 | queue = None 80 | if beforeLine > 0: 81 | queue = deque(maxlen=beforeLine) 82 | file_name = get_ql_logfile(self.logfile_name) 83 | if file_name: 84 | with open(file_name, "r") as file: 85 | for line_number, line in enumerate(file, start=1): 86 | if queue is not None: 87 | queue.append(line) 88 | # 使用正则表达式查找包含关键字的行 89 | if re.search(self.keyword, line): 90 | if queue is not None: 91 | self.err_list.append("".join(queue)) 92 | queue.clear() 93 | else: 94 | self.err_list.append(line.strip()) 95 | else: 96 | self.msg += "\n未检测到日志文件" 97 | print(self.err_list) 98 | sendpush(self.err_list, self.msg) 99 | 100 | 101 | if __name__ == "__main__": 102 | checkObject("京东", "jd_CheckCK", "已失效").checkLogfile(0) 103 | checkObject("饿了么", "elm_", "需要登录").checkLogfile(2) 104 | checkObject("植白说", "植白说_", "undefined").checkLogfile(0) 105 | checkObject("百事乐元", "百事乐元_", "请重新登录").checkLogfile(0) 106 | checkObject("朵茜", "朵茜_", "invalid session").checkLogfile(0) 107 | checkObject("zippo", "zippo_", "Unauthorized").checkLogfile(0) 108 | checkObject("好人家美味生活馆", "hrj_", "获取登录信息失败,请重新登录").checkLogfile( 109 | 0 110 | ) 111 | checkObject("拼多多果园", "拼多多果园_", "失效").checkLogfile(0) 112 | checkObject("Tank", "Tank_", "token已失效,请重新登录").checkLogfile(0) 113 | checkObject("北京汽车", "bjqc_", "登录失败").checkLogfile(0) 114 | checkObject("立白", "立白VIP_", "undefined").checkLogfile(0) 115 | checkObject("zhengjia", "zhengjia_", "失败").checkLogfile(0) 116 | checkObject("骁龙骁友会", "wx_xlxyh_", "非法请求").checkLogfile(0) 117 | checkObject("海天美味馆", "htmwg_", "登录状态已失效").checkLogfile(0) 118 | checkObject("三只松鼠", "三只松鼠_", "invalid").checkLogfile(0) 119 | checkObject("蜜丝miss", "Miss_", "token无效").checkLogfile(0) 120 | checkObject("MAMMUT", "MAMMUT_", "invalid").checkLogfile(0) 121 | checkObject("伊利积分", "yljf_", "Token已过期").checkLogfile(0) 122 | checkObject("爱依服", "爱依服_", "invalid").checkLogfile(0) 123 | checkObject("三养", "三养_", "invalid").checkLogfile(0) 124 | 125 | # jd资产推送 126 | file_name = get_ql_logfile("shufflewzc_faker3_main_jd_bean_change_") 127 | if file_name: 128 | for x in split_file_by_delimiter(file_name): 129 | # print("内容为:\n" + x) 130 | WxPusher.send_message( 131 | x, 132 | topic_ids=[os.environ["wxpusherTopicId"]], 133 | token=os.environ["wxpusherAppToken"], 134 | ) 135 | -------------------------------------------------------------------------------- /xk.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("WEB-星空代理IP") 3 | cron 0 7 * * * 4 | 环境变量名称 xk_data 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | import datetime 11 | import json 12 | import os 13 | import traceback 14 | import ApiRequest 15 | import mytool 16 | from notify import send 17 | 18 | title = 'WEB-星空代理IP' 19 | tokenName = 'xk_data' 20 | 21 | 22 | class xk(ApiRequest.ApiRequest): 23 | def __init__(self, data): 24 | super().__init__() 25 | self.sec.headers = { 26 | 'Host': 'www.xkdaili.com', 27 | 'Connection': 'keep-alive', 28 | 'sec-ch-ua': '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"', 29 | 'Accept': 'application/json, text/javascript, */*; q=0.01', 30 | 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 31 | 'X-Requested-With': 'XMLHttpRequest', 32 | 'sec-ch-ua-mobile': '?0', 33 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 34 | 'sec-ch-ua-platform': '"Windows"', 35 | 'Origin': 'https://www.xkdaili.com', 36 | 'Referer': 'https://www.xkdaili.com/', 37 | 'Accept-Language': 'zh-CN,zh;q=0.9', 38 | } 39 | self.username = data[0] 40 | self.password = data[1] 41 | 42 | def login(self): 43 | 44 | data = { 45 | 'username': self.username, 46 | 'password': self.password, 47 | 'remember': '1', 48 | 'code': '', 49 | } 50 | 51 | rj = self.sec.post('https://www.xkdaili.com/tools/submit_ajax.ashx?action=user_login&site_id=1&', data=data).json() 52 | if rj['status'] == 1: 53 | print('登录成功') 54 | self.sign() 55 | else: 56 | print('登录失败\n' + json.dumps(rj, ensure_ascii=False)) 57 | 58 | def sign(self): 59 | data = { 60 | 'type': 'login', 61 | } 62 | 63 | rj = self.sec.post( 64 | 'http://www.xkdaili.com/tools/submit_ajax.ashx?action=user_receive_point&', 65 | data=data, 66 | ) 67 | print(rj.text) 68 | 69 | 70 | if __name__ == "__main__": 71 | ApiRequest.ApiMain(['login']).run(tokenName, xk) -------------------------------------------------------------------------------- /yhshCookie.py: -------------------------------------------------------------------------------- 1 | import json 2 | import os 3 | 4 | import requests 5 | 6 | url = '127.0.0.1:5700' 7 | 8 | 9 | def getToken(): 10 | if os.path.isfile('/ql/data/config/auth.json'): 11 | with open('/ql/data/config/auth.json', 'r') as f: 12 | config = json.load(f) 13 | return 'Bearer ' + config['token'] 14 | 15 | 16 | if __name__ == '__main__': 17 | newUrl = f"http://{url}/open/envs" 18 | headers = { 19 | 'Authorization': getToken(), 20 | 'Content-Type': 'application/json' 21 | } 22 | yhsh = [] 23 | sec = requests.session() 24 | sec.verify = False 25 | sec.trust_env = False 26 | rj = sec.get(newUrl, headers=headers).json() 27 | if rj['code'] == 200: 28 | for x in rj['data']: 29 | if x['name'] == 'yhsh_cookies': 30 | yhsh.append(f"{x['value']}#{x['remarks']}") 31 | pass 32 | 33 | newUrl = f"http://{url}/open/envs" 34 | headers = { 35 | 'Authorization': getToken(), 36 | 'Content-Type': 'application/json' 37 | } 38 | pupu = [] 39 | sec = requests.session() 40 | sec.verify = False 41 | sec.trust_env = False 42 | rj = sec.get(newUrl, headers=headers).json() 43 | if rj['code'] == 200: 44 | for x in rj['data']: 45 | if x['name'] == 'pupu_cookies': 46 | pupu.append(f"{x['value']}#{x['remarks']}") 47 | pass 48 | 49 | with open('/ql/data/scripts/yang7758258_ohhh_QL-Script/pupuCookie.txt', 'w') as f: 50 | f.write('\n'.join(pupu)) 51 | 52 | 53 | -------------------------------------------------------------------------------- /yljf.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * yljf.py 3 | new Env("微信小程序-伊利积分") 4 | env add yljf_token 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import os 12 | import requests 13 | import urllib3 14 | 15 | import ApiRequest 16 | import mytool 17 | from notify import send 18 | import json 19 | 20 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 21 | title = '微信小程序-伊利积分' 22 | tokenName = 'yljf_token' 23 | msg = '' 24 | 25 | 26 | class yljf(ApiRequest.ApiRequest): 27 | def __init__(self, data): 28 | super().__init__() 29 | self.sec.headers = { 30 | 'Host': 'msmarket.msx.digitalyili.com', 31 | 'Connection': 'keep-alive', 32 | 'access-token': data, 33 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8447', 34 | 'Referer': 'https://servicewechat.com/wx1fb666a33da7ac88/13/page-frame.html', 35 | 'Accept-Language': 'zh-CN,zh;q=0.9', 36 | } 37 | 38 | def login(self): 39 | global msg 40 | rj = self.sec.post('https://msmarket.msx.digitalyili.com/gateway/api/member/daily/sign', json={}).json() 41 | if rj['status']: 42 | msg = f"登录成功\n获得积分:{rj['data']['dailySign']['bonusPoint']}" 43 | else: 44 | msg = f"登录失败\n" + json.dumps(rj, ensure_ascii=False) 45 | print(msg) 46 | send(title, msg) 47 | 48 | 49 | if __name__ == '__main__': 50 | ApiRequest.ApiMain(['login']).run(tokenName, yljf) -------------------------------------------------------------------------------- /yqsl.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-元气森林") 4 | env add yqsl 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'yqsl' 14 | msg = '' 15 | 16 | 17 | class yqsl(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | 'Host': 'api.yqslmall.com', 22 | 'Connection': 'keep-alive', 23 | 'xweb_xhr': '1', 24 | 'ch': '0401', 25 | 'p_id': '0', 26 | 'appv': '1.6.69', 27 | 'Authorization': f'Bearer {data}', 28 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 29 | 'Content-Type': 'application/json', 30 | 'Referer': 'https://servicewechat.com/wxb736479133333676/376/page-frame.html', 31 | # 'Accept-Encoding': 'gzip, deflate, br', 32 | 'Accept-Language': 'zh-CN,zh;q=0.9', 33 | } 34 | 35 | def login(self): 36 | params = '' 37 | 38 | json_data = { 39 | 'scene': 1053, 40 | 'sid': 'QsWyiZbO', 41 | 'ch': '0401', 42 | } 43 | 44 | response = self.sec.post('https://api.yqslmall.com/mall-member/daily/save', params=params, json=json_data) 45 | print(response.text) 46 | 47 | if __name__ == '__main__': 48 | ApiRequest.ApiMain(['login']).run(tokenName, yqsl) 49 | -------------------------------------------------------------------------------- /yxt.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * yxt.py 3 | new Env("微信小程序-一心堂") 4 | env add yxtGUid 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | 12 | import json 13 | import os 14 | import traceback 15 | import requests 16 | 17 | import ApiRequest 18 | import mytool 19 | from notify import send 20 | import urllib3 21 | 22 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 23 | title = '微信小程序-一心堂' 24 | tokenName = 'yxtGUid' 25 | msg = '' 26 | 27 | 28 | class yxt(ApiRequest.ApiRequest): 29 | def __init__(self, data): 30 | super().__init__() 31 | self.sec.headers = { 32 | 'Host': 'shopapi.yxtmart.cn', 33 | 'Connection': 'keep-alive', 34 | 'xweb_xhr': '1', 35 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF XWEB/8447', 36 | 'Content-Type': 'application/x-www-form-urlencoded', 37 | 'Accept': '*/*', 38 | 'Referer': 'https://servicewechat.com/wx0730cf00e5f0de87/18/page-frame.html', 39 | 'Accept-Language': 'zh-CN,zh;q=0.9', 40 | } 41 | self.UserGuid = data 42 | 43 | def login(self): 44 | data = { 45 | 'QueryType': 'User_signin', 46 | 'UserGuid': self.UserGuid, 47 | 'Params': '{"CRMCUSTOMERID":"1072014230"}', 48 | } 49 | rj = self.sec.post('https://shopapi.yxtmart.cn/PointsHandle', data=data).json() 50 | if rj['CODE'] == '1000': 51 | msg = f"登录成功\n" 52 | else: 53 | msg = f"登录失败\n" + json.dumps(rj, ensure_ascii=False) 54 | print(msg) 55 | send(title, msg) 56 | 57 | 58 | if __name__ == '__main__': 59 | # DEBUG 60 | if os.path.exists('debug.py'): 61 | import debug 62 | debug.setDebugEnv() 63 | 64 | if mytool.getlistCk(f'{tokenName}') is None: 65 | print(f'请检查你的变量名称 {tokenName} 是否填写正确') 66 | exit(0) 67 | else: 68 | for i in mytool.getlistCk(f'{tokenName}'): 69 | yxt(i).login() 70 | -------------------------------------------------------------------------------- /zhengjia.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 8 * * * 3 | new Env("微信小程序-正佳") 4 | env add wx_zj 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | 12 | import ApiRequest 13 | 14 | title = '微信小程序-正佳' 15 | tokenName = 'wx_zj' 16 | 17 | 18 | class zj(ApiRequest.ApiRequest): 19 | def __init__(self, data): 20 | super().__init__() 21 | self.sec.headers = { 22 | 'Host': 'member-pro.zhengjiamax.com', 23 | 'Connection': 'keep-alive', 24 | 'xweb_xhr': '1', 25 | 'MemberSession': data, 26 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 27 | 'Referer': 'https://servicewechat.com/wxca39f7dc54b49819/315/page-frame.html', 28 | 'Accept-Language': 'zh-CN,zh;q=0.9', 29 | } 30 | 31 | def login(self): 32 | response = self.sec.post( 33 | 'https://member-pro.zhengjiamax.com/memberSign/memberSign', 34 | params='', 35 | json={}, 36 | ) 37 | print(response.text) 38 | 39 | 40 | if __name__ == '__main__': 41 | ApiRequest.ApiMain(['login']).run(tokenName, zj) 42 | -------------------------------------------------------------------------------- /zippo.py: -------------------------------------------------------------------------------- 1 | 2 | """ 3 | cron: 30 7 * * * 4 | new Env("微信小程序-zippo") 5 | env add zippo_auth 6 | 未完成 7 | """ 8 | #!/usr/bin/env python3 9 | # coding: utf-8 10 | import json 11 | import os 12 | import time 13 | import traceback 14 | import requests 15 | 16 | import ApiRequest 17 | import mytool 18 | from notify import send 19 | import urllib3 20 | urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) 21 | title = '微信小程序-zippo' 22 | tokenName = 'zippo_auth' 23 | 24 | 25 | class zippo(ApiRequest.ApiRequest): 26 | def __init__(self, data): 27 | super().__init__() 28 | self.sec.headers = { 29 | 'Host': 'wx-center.zippo.com.cn', 30 | 'Connection': 'keep-alive', 31 | 'x-app-id': 'zippo', 32 | 'x-platform-id': 'wxaa75ffd8c2d75da7', 33 | 'x-platform-env': 'release', 34 | 'x-platform': 'wxmp', 35 | 'Authorization': data, 36 | 'Content-Type': 'application/json;charset=UTF-8', 37 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090819) XWEB/8531', 38 | 'xweb_xhr': '1', 39 | 'Referer': 'https://servicewechat.com/wxaa75ffd8c2d75da7/69/page-frame.html', 40 | 'Accept-Language': 'zh-CN,zh;q=0.9', 41 | } 42 | 43 | def login(self): 44 | rj = self.sec.post('https://wx-center.zippo.com.cn/api/daily-signin', params='', json={}).json() 45 | print(rj) 46 | pass 47 | 48 | def favorited(self): 49 | jsonData = { 50 | "targetType": "sku", 51 | "targetId": "265", 52 | "favorited": True 53 | } 54 | rj = self.sec.post('https://wx-center.zippo.com.cn/api/favorites', params='', json=jsonData).json() 55 | print(rj) 56 | 57 | rj = self.sec.post('https://wx-center.zippo.com.cn/api/missions/5/rewards', params='', json={"id":5}).json() 58 | print(rj) 59 | pass 60 | 61 | def unfavorited(self): 62 | jsonData = { 63 | "targetType": "sku", 64 | "targetId": "265", 65 | "favorited": False 66 | } 67 | rj = self.sec.post('https://wx-center.zippo.com.cn/api/favorites', params='', json=jsonData).json() 68 | print(rj) 69 | pass 70 | 71 | 72 | 73 | if __name__ == '__main__': 74 | ApiRequest.ApiMain(['login', 'unfavorited', 'favorited']).run(tokenName, zippo) -------------------------------------------------------------------------------- /三养.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 5 * * * 3 | new Env("微信小程序-三养") 4 | env add wx_sy 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_sy' 13 | msg = '' 14 | 15 | 16 | class sy(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | '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(0x63090c2d)XWEB/13487', 24 | 'Content-Type': 'application/json', 25 | 'Accept': '*/*', 26 | 'Sec-Fetch-Site': 'cross-site', 27 | 'Sec-Fetch-Mode': 'cors', 28 | 'Sec-Fetch-Dest': 'empty', 29 | 'Referer': 'https://servicewechat.com/wx78eba29c6185f50c/11/page-frame.html', 30 | # 'Accept-Encoding': 'gzip, deflate, br', 31 | 'Accept-Language': 'zh-CN,zh;q=0.9', 32 | } 33 | self.access_token = data.split("#")[0] 34 | self.sid = data.split("#")[1] 35 | self.uuid = data.split("#")[2] 36 | self.sec.headers['Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"2.197.11.101","client":"weapp","bizEnv":"wsc","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 37 | 38 | def login(self): 39 | params = { 40 | 'checkinId': '5699606', 41 | 'app_id': 'wx78eba29c6185f50c', 42 | 'kdt_id': '135423652', 43 | 'access_token': self.access_token, 44 | } 45 | 46 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 47 | print(rj) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, sy) 52 | -------------------------------------------------------------------------------- /三只松鼠.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 3 * * * 3 | new Env("微信小程序-三只松鼠") 4 | env add wx_gy 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_szss' 13 | msg = '' 14 | 15 | 16 | class szss(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b19)XWEB/9193', 24 | 'Content-Type': 'application/json', 25 | 'Accept': '*/*', 26 | 'Sec-Fetch-Site': 'cross-site', 27 | 'Sec-Fetch-Mode': 'cors', 28 | 'Sec-Fetch-Dest': 'empty', 29 | 'Referer': 'https://servicewechat.com/wx12530dfd1c7709a6/92/page-frame.html', 30 | # 'Accept-Encoding': 'gzip, deflate, br', 31 | 'Accept-Language': 'zh-CN,zh;q=0.9', 32 | } 33 | self.access_token = data.split("#")[0] 34 | self.sid = data.split("#")[1] 35 | self.uuid = data.split("#")[2] 36 | self.sec.headers['Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"2.176.5.104","client":"weapp","bizEnv":"wsc","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 37 | 38 | 39 | def login(self): 40 | params = { 41 | 'checkinId': '9332', 42 | 'app_id': 'wx12530dfd1c7709a6', 43 | 'kdt_id': '41433171', 44 | 'access_token': self.access_token 45 | } 46 | 47 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 48 | print(rj) 49 | 50 | 51 | if __name__ == '__main__': 52 | ApiRequest.ApiMain(['login']).run(tokenName, szss) 53 | -------------------------------------------------------------------------------- /五谷磨房.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-五谷磨房") 4 | env add wx_五谷磨房 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_wgmf' 13 | msg = '' 14 | 15 | 16 | class wgmf(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'newapi.wgmf.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b19)XWEB/9193', 24 | 'Content-Type': 'application/json', 25 | 'Accept': '*/*', 26 | 'Sec-Fetch-Site': 'cross-site', 27 | 'Sec-Fetch-Mode': 'cors', 28 | 'Sec-Fetch-Dest': 'empty', 29 | 'Referer': 'https://servicewechat.com/wx29d1ac1fcd50aeb6/490/page-frame.html', 30 | 'Accept-Language': 'zh-CN,zh;q=0.9', 31 | } 32 | self.cusId = data 33 | 34 | def login(self): 35 | json_data = { 36 | 'cusId': self.cusId, 37 | 'signedDate': mytool.getdate(), 38 | } 39 | 40 | rj = self.sec.post('https://newapi.wgmf.com/crm/signed/save', json=json_data).json() 41 | print(rj) 42 | 43 | 44 | if __name__ == '__main__': 45 | ApiRequest.ApiMain(['login']).run(tokenName, wgmf) 46 | -------------------------------------------------------------------------------- /卡西欧.py: -------------------------------------------------------------------------------- 1 | """ 2 | new Env("微信小程序-卡西欧") 3 | cron 0 3 * * * 4 | 环境变量名称 wx_kxo 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import json 10 | 11 | import ApiRequest 12 | import mytool 13 | 14 | title = '微信小程序-卡西欧' 15 | tokenName = 'wx_kxo' 16 | 17 | 18 | class kxo(ApiRequest.ApiRequest): 19 | def __init__(self, data): 20 | super().__init__() 21 | self.sec.headers = { 22 | 'Host': 'api.casioonline.com.cn', 23 | 'Connection': 'keep-alive', 24 | # 'Content-Length': '2', 25 | 'x-debug-trace': str(mytool.getMSecTimestamp()), 26 | 'xweb_xhr': '1', 27 | 'Authorization': data, 28 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a1b)XWEB/9185', 29 | 'Content-Type': 'application/json; charset=UTF-8', 30 | 'Accept': '*/*', 31 | 'Referer': 'https://servicewechat.com/wx0a834189b8d0249e/361/page-frame.html', 32 | # 'Accept-Encoding': 'gzip, deflate, br', 33 | 'Accept-Language': 'zh-CN,zh;q=0.9', 34 | } 35 | 36 | def login(self): 37 | json_data = {} 38 | response = self.sec.post('https://api.casioonline.com.cn/miniprogram/fans-garden/user-sign', json=json_data) 39 | print(json.loads(response.text)) 40 | 41 | 42 | if __name__ == '__main__': 43 | ApiRequest.ApiMain(['login']).run(tokenName, kxo) 44 | -------------------------------------------------------------------------------- /向太.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 11 * * * 3 | new Env("微信小程序-向太的会客厅会员中心") 4 | env add wx_xt 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import json 10 | from datetime import datetime 11 | 12 | import ApiRequest 13 | from notify import send 14 | 15 | title = '微信小程序-向太的会客厅会员中心' 16 | tokenName = 'wx_xt' 17 | 18 | 19 | class xt(ApiRequest.ApiRequest): 20 | def __init__(self, data): 21 | super().__init__() 22 | self.sec.headers = { 23 | 'Host': 'smp-api.iyouke.com', 24 | 'Connection': 'keep-alive', 25 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 26 | 'Authorization': data, 27 | 'Content-Type': 'application/json', 28 | 'xweb_xhr': '1', 29 | 'appId': 'wxa20c0c10a072172e', 30 | 'envVersion': 'release', 31 | 'version': '1.9.32', 32 | 'Referer': 'https://servicewechat.com/wxa20c0c10a072172e/14/page-frame.html', 33 | 'Accept-Language': 'zh-CN,zh;q=0.9', 34 | } 35 | 36 | def login(self): 37 | response = self.sec.get(f'https://smp-api.iyouke.com/dtapi/pointsSign/user/sign?date={datetime.now().strftime("%Y/%m/%d")}&') 38 | print(response.text) 39 | 40 | 41 | if __name__ == '__main__': 42 | ApiRequest.ApiMain(['login']).run(tokenName, xt) 43 | -------------------------------------------------------------------------------- /所有女生.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-所有女生") 4 | env add wx_syns 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | 13 | tokenName = 'wx_syns' 14 | msg = '' 15 | 16 | 17 | class syns(ApiRequest.ApiRequest): 18 | def __init__(self, data): 19 | super().__init__() 20 | self.sec.headers = { 21 | "Host": "7.wawo.cc", 22 | "Connection": "keep-alive", 23 | "activityCode": "D2L0T1T4", 24 | "AccessToken": data.split("#")[0], 25 | "xweb_xhr": "1", 26 | "Authorization": data.split("#")[1], 27 | "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(0x63090c1f)XWEB/11581", 28 | "Content-Type": "application/json", 29 | "Accept": "*/*", 30 | "Sec-Fetch-Site": "cross-site", 31 | "Sec-Fetch-Mode": "cors", 32 | "Sec-Fetch-Dest": "empty", 33 | "Referer": "http", 34 | "Accept-Encoding": "gzip, deflate, br", 35 | "Accept-Language": "zh-CN,zh;q=0.9" 36 | } 37 | 38 | def login(self): 39 | url = "https://7.wawo.cc/api/activity/wx/task/sign/signIn" 40 | data = """{}""" 41 | response = self.sec.post(url, data=data) 42 | print(response.text) 43 | 44 | 45 | if __name__ == '__main__': 46 | ApiRequest.ApiMain(['login']).run(tokenName, syns) 47 | -------------------------------------------------------------------------------- /李宁CLUB.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 30 4 * * * 3 | new Env("微信小程序-李宁CLUB") 4 | env add wx_nl_club 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_ln_club' 13 | msg = '' 14 | 15 | 16 | class lining(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = {'Host': 'mcenter-gateway.wx.lining.com', 'Connection': 'keep-alive', 'xweb_xhr': '1', 20 | '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(0x63090c1f)XWEB/11581', 21 | 'Content-Type': 'application/json', 'Accept': '*/*', 'Sec-Fetch-Site': 'cross-site', 22 | 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 23 | 'Referer': 'https://servicewechat.com/wx54df8ea3b9c8ec10/175/page-frame.html', 24 | 'Accept-Language': 'zh-CN,zh;q=0.9', 'Authorization': data} 25 | 26 | def login(self): 27 | rj = self.sec.get('https://mcenter-gateway.wx.lining.com/customer/v1/sign').json() 28 | print(rj) 29 | 30 | 31 | if __name__ == '__main__': 32 | ApiRequest.ApiMain(['login']).run(tokenName, lining) 33 | -------------------------------------------------------------------------------- /爱依服.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 5 * * * 3 | new Env("微信小程序-爱依服") 4 | env add wx_ayf 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_ayf' 13 | msg = '' 14 | 15 | 16 | class ayf(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b17)XWEB/9185', 24 | 'Content-Type': 'application/json', 25 | 'Accept': '*/*', 26 | 'Sec-Fetch-Site': 'cross-site', 27 | 'Sec-Fetch-Mode': 'cors', 28 | 'Sec-Fetch-Dest': 'empty', 29 | 'Referer': 'https://servicewechat.com/wx8993641e1debb263/7/page-frame.html', 30 | # 'Accept-Encoding': 'gzip, deflate, br', 31 | 'Accept-Language': 'zh-CN,zh;q=0.9', 32 | } 33 | self.access_token = data.split("#")[0] 34 | self.sid = data.split("#")[1] 35 | self.uuid = data.split("#")[2] 36 | self.sec.headers['Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"3.107.5.101","client":"weapp","bizEnv":"retail","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 37 | 38 | def login(self): 39 | params = { 40 | 'checkinId': '17666', 41 | 'app_id': 'wx8993641e1debb263', 42 | 'kdt_id': '141029438', 43 | 'access_token': self.access_token, 44 | } 45 | 46 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 47 | print(rj) 48 | 49 | 50 | if __name__ == '__main__': 51 | ApiRequest.ApiMain(['login']).run(tokenName, ayf) 52 | -------------------------------------------------------------------------------- /特仑苏.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 7 * * * 3 | new Env("微信小程序-特仑苏") 4 | env add wx_tls = openid 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | # !/usr/bin/env python3 10 | # coding: utf-8 11 | import ApiRequest 12 | import mytool 13 | 14 | tokenName = 'wx_tls' 15 | msg = '' 16 | 17 | 18 | class tls(ApiRequest.ApiRequest): 19 | def __init__(self, data): 20 | super().__init__() 21 | self.sec.headers = { 22 | 'Host': 'mall.telunsu.net', 23 | 'Connection': 'keep-alive', 24 | 'Accept': 'application/json, text/plain, */*', 25 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x6309092b) XWEB/8555', 26 | 'Content-Type': 'application/json;charset=UTF-8', 27 | 'Origin': 'https://mall.telunsu.net', 28 | 'Sec-Fetch-Site': 'same-origin', 29 | 'Sec-Fetch-Mode': 'cors', 30 | 'Sec-Fetch-Dest': 'empty', 31 | 'Referer': 'https://mall.telunsu.net/minlifeh5/himilk/vip/vipCommunityOld.html?navType=1', 32 | 'Accept-Language': 'zh-CN,zh;q=0.9', 33 | } 34 | self.openid = data 35 | self.cookies = { 36 | 'HWWAFSESTIME': str(mytool.getMSecTimestamp()), 37 | 'MY_OPENID': data, 38 | 'sajssdk_2015_cross_new_user': '1', 39 | } 40 | 41 | def login(self): 42 | 43 | params = '' 44 | 45 | json_data = { 46 | 'openid': self.openid, 47 | } 48 | 49 | response = self.sec.post( 50 | 'https://mall.telunsu.net/wxapi/user/signIn', 51 | params=params, 52 | cookies=self.cookies, 53 | json=json_data, 54 | ) 55 | print(response.text) 56 | 57 | 58 | if __name__ == '__main__': 59 | ApiRequest.ApiMain(['login']).run(tokenName, tls) 60 | -------------------------------------------------------------------------------- /芈姐生活馆.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-芈姐生活馆") 4 | env add wx_mijie 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | 10 | # !/usr/bin/env python3 11 | # coding: utf-8 12 | import ApiRequest 13 | 14 | tokenName = "wx_mijie" 15 | msg = "" 16 | 17 | 18 | class mijie(ApiRequest.ApiRequest): 19 | def __init__(self, data): 20 | super().__init__() 21 | self.sec.headers = { 22 | "Host": "www.mijielive.store", 23 | "Connection": "keep-alive", 24 | # 'Content-Length': '31', 25 | "xweb_xhr": "1", 26 | "Authori-zation": data, 27 | "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/13487", 28 | "Content-Type": "application/json", 29 | "Accept": "*/*", 30 | "Sec-Fetch-Site": "cross-site", 31 | "Sec-Fetch-Mode": "cors", 32 | "Sec-Fetch-Dest": "empty", 33 | "Referer": "https://servicewechat.com/wx88534cdc1fae6707/95/page-frame.html", 34 | # 'Accept-Encoding': 'gzip, deflate, br', 35 | "Accept-Language": "zh-CN,zh;q=0.9", 36 | } 37 | 38 | def login(self): 39 | url = "https://www.mijielive.store/api/api/front/user/sign/user" 40 | json_data = { 41 | "all": 0, 42 | "integral": 0, 43 | "sign": 1, 44 | } 45 | response = self.sec.post(url, json=json_data) 46 | print(response.json()) 47 | 48 | 49 | if __name__ == "__main__": 50 | ApiRequest.ApiMain(["login"]).run(tokenName, mijie) 51 | -------------------------------------------------------------------------------- /花生帮.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/darkbfly/ql/7ceb0ac8dea782fed97d46075081d10e7172ecca/花生帮.py -------------------------------------------------------------------------------- /谷雨.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-谷雨") 4 | env add wx_gy 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_gy' 13 | msg = '' 14 | 15 | 16 | class gy(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'Extra-Data': '{"is_weapp":1,"sid":"YZ1270114534045401088YZaeFR03ul","version":"2.176.5.104","client":"weapp","bizEnv":"wsc","uuid":"sokZOvOBYgPiGWc1722860402962","ftime":1722860402957}', 24 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b19)XWEB/9193', 25 | 'Content-Type': 'application/json', 26 | 'Accept': '*/*', 27 | 'Sec-Fetch-Site': 'cross-site', 28 | 'Sec-Fetch-Mode': 'cors', 29 | 'Sec-Fetch-Dest': 'empty', 30 | 'Referer': 'https://servicewechat.com/wxfdb5babdb1f93f0d/171/page-frame.html', 31 | # 'Accept-Encoding': 'gzip, deflate, br', 32 | 'Accept-Language': 'zh-CN,zh;q=0.9', 33 | } 34 | self.access_token = data.split("#")[0] 35 | self.sid = data.split("#")[1] 36 | self.uuid = data.split("#")[2] 37 | self.sec.headers['Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"2.176.5.104","client":"weapp","bizEnv":"wsc","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 38 | 39 | 40 | def login(self): 41 | params = { 42 | 'checkinId': '4343814', 43 | 'app_id': 'wxfdb5babdb1f93f0d', 44 | 'kdt_id': '45817451', 45 | 'access_token': self.access_token 46 | } 47 | 48 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 49 | print(rj) 50 | 51 | 52 | if __name__ == '__main__': 53 | ApiRequest.ApiMain(['login']).run(tokenName, gy) 54 | -------------------------------------------------------------------------------- /陈子壹.py: -------------------------------------------------------------------------------- 1 | """ 2 | cron: 0 3 * * * 3 | new Env("微信小程序-陈子壹") 4 | env add wx_czy 5 | 6 | 仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断;您必须在下载后的24小时内从计算机或手机中完全删除以上内容。 7 | 如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关脚本。 8 | """ 9 | import ApiRequest 10 | import mytool 11 | 12 | tokenName = 'wx_czy' 13 | msg = '' 14 | 15 | 16 | class czy(ApiRequest.ApiRequest): 17 | def __init__(self, data): 18 | super().__init__() 19 | self.sec.headers = { 20 | 'Host': 'h5.youzan.com', 21 | 'Connection': 'keep-alive', 22 | 'xweb_xhr': '1', 23 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 24 | 'Chrome/116.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI ' 25 | 'MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090b17)XWEB/9185', 26 | 'Content-Type': 'application/json', 27 | 'Accept': '*/*', 28 | 'Sec-Fetch-Site': 'cross-site', 29 | 'Sec-Fetch-Mode': 'cors', 30 | 'Sec-Fetch-Dest': 'empty', 31 | 'Referer': 'https://servicewechat.com/wxa0461394dd59e7cf/15/page-frame.html', 32 | # 'Accept-Encoding': 'gzip, deflate, br', 33 | 'Accept-Language': 'zh-CN,zh;q=0.9', 34 | } 35 | self.access_token = data.split("#")[0] 36 | self.sid = data.split("#")[1] 37 | self.uuid = data.split("#")[2] 38 | self.sec.headers[ 39 | 'Extra-Data'] = f'{{"is_weapp":1,"sid":"{self.sid}","version":"2.195.7.101","client":"weapp","bizEnv":"wsc","uuid":"{self.uuid}","ftime":{mytool.getMSecTimestamp()}}}' 40 | 41 | def login(self): 42 | params = { 43 | 'checkinId': '3903109', 44 | 'app_id': 'wxa0461394dd59e7cf', 45 | 'kdt_id': '129428237', 46 | 'access_token': self.access_token, 47 | } 48 | 49 | rj = self.sec.get('https://h5.youzan.com/wscump/checkin/checkinV2.json', params=params).json() 50 | print(rj) 51 | 52 | 53 | if __name__ == '__main__': 54 | ApiRequest.ApiMain(['login']).run(tokenName, czy) 55 | --------------------------------------------------------------------------------