Collect authenticated Qinglong scripts batch
This commit is contained in:
139
脚本库/微信小程序/抓包版/浓五的酒馆/2025-11-29_浓五的酒馆_915469c7.py
Normal file
139
脚本库/微信小程序/抓包版/浓五的酒馆/2025-11-29_浓五的酒馆_915469c7.py
Normal file
@@ -0,0 +1,139 @@
|
||||
# Source: https://github.com/back-101/zyqinglong/blob/main/%E6%B5%93%E4%BA%94%E7%9A%84%E9%85%92%E9%A6%86.py
|
||||
# Raw: https://raw.githubusercontent.com/back-101/zyqinglong/main/浓五的酒馆.py
|
||||
# Repo: back-101/zyqinglong
|
||||
# Path: 浓五的酒馆.py
|
||||
# UploadedAt: 2025-11-29T06:56:58Z
|
||||
# SHA256: 915469c7c5f6de757cf491d0d59818b6aa59b3727355cc90ed083c445d833186
|
||||
# Category: 微信小程序/抓包版
|
||||
# Evidence: appid/openid/session_key/encryptedData等小程序字段
|
||||
|
||||
# -*- coding=UTF-8 -*-
|
||||
# @Project QL_TimingScript
|
||||
# @fileName 浓五的酒馆.py
|
||||
# @author Echo
|
||||
# @EditTime 2025/3/15
|
||||
# const $ = new Env('浓五的酒馆');
|
||||
# cron: 0 0 10 * * *
|
||||
"""
|
||||
开启抓包进入‘浓五的酒馆’小程序,抓取authorization,不要带Bearer
|
||||
变量格式: nwjg_token,多个账号用@隔开
|
||||
"""
|
||||
import json
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
import httpx
|
||||
|
||||
from fn_print import fn_print
|
||||
from get_env import get_env
|
||||
from sendNotify import send_notification_message_collection
|
||||
|
||||
nwjg_tokens = get_env("nwjg_token", "@")
|
||||
|
||||
|
||||
class Nwjg:
|
||||
def __init__(self, token):
|
||||
self.user = None
|
||||
self.client = httpx.Client(
|
||||
verify=False,
|
||||
timeout=60
|
||||
)
|
||||
self.token = token
|
||||
self.headers = {
|
||||
'xweb_xhr': '1',
|
||||
'content-type': 'application/json',
|
||||
'sec-fetch-site': 'cross-site',
|
||||
'sec-fetch-mode': 'cors',
|
||||
'sec-fetch-dest': 'empty',
|
||||
'accept-language': 'zh-CN,zh;q=0.9',
|
||||
'Authorization': f'Bearer {self.token}'
|
||||
}
|
||||
self.promotion_id = self.get_promotion_id()
|
||||
|
||||
def get_promotion_id(self):
|
||||
try:
|
||||
response = self.client.post(
|
||||
url="https://stdcrm.dtmiller.com/scrm-promotion-service/mini/module/config/list",
|
||||
headers=self.headers,
|
||||
)
|
||||
if response.status_code != 200:
|
||||
fn_print(f"获取活动ID失败: HTTP {response.status_code} - {response.text}")
|
||||
return None
|
||||
|
||||
response_data = response.json()
|
||||
if response_data.get('msg', None) is not None and "JWT expired" in response_data.get('msg'):
|
||||
fn_print("获取活动ID失败: token已过期!")
|
||||
return None
|
||||
|
||||
# 遍历所有模块和detailList,查找title为'每日签到'的项
|
||||
for module in response_data.get('data', []):
|
||||
for item in module.get('detailList', []):
|
||||
try:
|
||||
detail_json = json.loads(item['detailJson'])
|
||||
if detail_json.get('title') == '每日签到':
|
||||
page_path = detail_json['jumpData']['pagePath']
|
||||
match = re.search(r'promotionId=([^&]*)', page_path)
|
||||
if match:
|
||||
return match.group(1)
|
||||
except Exception as e:
|
||||
fn_print(f"解析detailJson异常: {e}")
|
||||
continue
|
||||
|
||||
fn_print("未找到每日签到活动")
|
||||
return None
|
||||
|
||||
except json.JSONDecodeError:
|
||||
fn_print("获取活动ID失败: 响应不是有效的JSON格式")
|
||||
return None
|
||||
except KeyError as e:
|
||||
fn_print(f"获取活动ID失败: 响应缺少必要字段 - {str(e)}")
|
||||
return None
|
||||
except Exception as e:
|
||||
fn_print(f"获取活动ID发生异常: {type(e).__name__} - {str(e)}")
|
||||
return None
|
||||
|
||||
def sign(self):
|
||||
if not self.promotion_id:
|
||||
return
|
||||
self.get_integral()
|
||||
try:
|
||||
response = self.client.get(
|
||||
url="https://stdcrm.dtmiller.com/scrm-promotion-service/promotion/sign/today",
|
||||
headers=self.headers,
|
||||
params={
|
||||
"promotionId": self.promotion_id
|
||||
}
|
||||
)
|
||||
if response.status_code == 200:
|
||||
response_data = response.json()
|
||||
if response_data['code'] == 0:
|
||||
fn_print(f"用户【{self.user}】 - 签到成功!获得{response_data['data']['prize']['goodsName']} - "
|
||||
f"签到天数: {response_data['data']['signDays']}")
|
||||
else:
|
||||
fn_print(f"用户【{self.user}】 - 签到失败: {response_data['msg']}")
|
||||
else:
|
||||
fn_print(f"用户【{self.user}】 - 签到失败: {response.text}")
|
||||
except Exception as e:
|
||||
fn_print(f"用户【{self.user}】 - 签到发生异常: {e}")
|
||||
|
||||
def get_integral(self):
|
||||
try:
|
||||
response = self.client.get(
|
||||
url="https://stdcrm.dtmiller.com/scrm-promotion-service/mini/wly/user/info",
|
||||
headers=self.headers
|
||||
).json()
|
||||
# print(json.dumps(response, indent=4, ensure_ascii=False))
|
||||
if response['code'] == 0:
|
||||
self.user = response['data']['member']['mobile']
|
||||
fn_print(f"用户【{self.user}】 - 当前积分{response['data']['member']['points']}")
|
||||
else:
|
||||
fn_print(f"查询积分失败: {response['msg']}")
|
||||
except Exception as e:
|
||||
fn_print(f"查询积分发生异常: {e}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
for token in nwjg_tokens:
|
||||
nwjg = Nwjg(token)
|
||||
nwjg.sign()
|
||||
send_notification_message_collection(f"浓五的酒馆签到通知 - {datetime.now().strftime('%Y/%m/%d')}")
|
||||
Reference in New Issue
Block a user