mirror of
https://github.com/XiaoGe-LiBai/yangmao.git
synced 2025-12-17 03:58:13 +08:00
194 lines
7.0 KiB
Python
194 lines
7.0 KiB
Python
"""
|
||
微信扫码:https://img.meituan.net/portalweb/40d762a3e9eb4671bf76590d014ba0d0190451.jpg
|
||
说明:
|
||
签到获取积分,兑换实物。 变量名称:mnls
|
||
抓包 webChatID
|
||
"""
|
||
|
||
import requests
|
||
import os
|
||
import sys
|
||
import time
|
||
import random
|
||
import datetime
|
||
from urllib.parse import quote
|
||
|
||
# ================== 配置区 ==================
|
||
NOTIFY = True # 是否推送通知
|
||
SCT_KEY = "" # Server 酱 SendKey(推荐使用,最简单),填你的 SendKey,如 "SCTxxx"
|
||
# ============================================
|
||
|
||
def get_info(webChatID):
|
||
url = 'https://mcs.monalisagroup.com.cn/member/doAction'
|
||
headers = {
|
||
'Host': 'mcs.monalisagroup.com.cn',
|
||
'Connection': 'keep-alive',
|
||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowsWechat(0xf2541113) XWEB/16771',
|
||
'xweb_xhr': '1',
|
||
'Content-Type': 'application/x-www-form-urlencoded',
|
||
'Accept': '*/*',
|
||
'Sec-Fetch-Site': 'cross-site',
|
||
'Sec-Fetch-Mode': 'cors',
|
||
'Sec-Fetch-Dest': 'empty',
|
||
'Referer': 'https://servicewechat.com/wxce6a8f654e81b7a4/450/page-frame.html',
|
||
'Accept-Encoding': 'gzip, deflate, br',
|
||
'Accept-Language': 'zh-CN,zh;q=0.9'
|
||
}
|
||
data = {
|
||
'action': 'getCustomer',
|
||
'webChatID': webChatID,
|
||
'brand': 'MON'
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers, data=data, timeout=10).json()
|
||
info = response['resultInfo'][0]
|
||
phone = info['Telephone']
|
||
customerid = info['CustomerID']
|
||
nickname = info['WebChatName']
|
||
integral = info['Integral']
|
||
return True, phone, customerid, nickname, integral
|
||
except Exception as e:
|
||
print('❌ 获取信息失败:', str(e))
|
||
return False, None, None, None, None
|
||
|
||
|
||
def get_sign_in(customerid, nickname):
|
||
url = 'https://mcs.monalisagroup.com.cn/member/doAction'
|
||
headers = {
|
||
'Host': 'mcs.monalisagroup.com.cn',
|
||
'Connection': 'keep-alive',
|
||
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 MicroMessenger/7.0.20.1781(0x6700143B) NetType/WIFI MiniProgramEnv/Windows WindowsWechat/WMPF WindowsWechat(0x63090a13) UnifiedPCWindowsWechat(0xf2541113) XWEB/16771',
|
||
'xweb_xhr': '1',
|
||
'Content-Type': 'application/x-www-form-urlencoded',
|
||
'Accept': '*/*',
|
||
'Sec-Fetch-Site': 'cross-site',
|
||
'Sec-Fetch-Mode': 'cors',
|
||
'Sec-Fetch-Dest': 'empty',
|
||
'Referer': 'https://servicewechat.com/wxce6a8f654e81b7a4/450/page-frame.html',
|
||
'Accept-Encoding': 'gzip, deflate, br',
|
||
'Accept-Language': 'zh-CN,zh;q=0.9'
|
||
}
|
||
data = {
|
||
'action': 'sign',
|
||
'CustomerID': str(customerid),
|
||
'CustomerName': quote(nickname),
|
||
'StoreID': '0',
|
||
'OrganizationID': '0',
|
||
'Brand': 'MON',
|
||
'ItemType': '002'
|
||
}
|
||
try:
|
||
response = requests.post(url, headers=headers, data=data, timeout=10).json()
|
||
if response['status'] == 0:
|
||
msg = f"✅ 签到成功,获得积分: {response['resultInfo']}"
|
||
else:
|
||
msg = "ℹ️ 签到失败,可能今日已签到"
|
||
return True, msg
|
||
except Exception as e:
|
||
print(f"❌ 请求异常: {str(e)}")
|
||
return False, f"请求异常: {str(e)}"
|
||
|
||
|
||
def download_notify():
|
||
"""下载 notify.py(青龙专用)"""
|
||
url = "https://raw.githubusercontent.com/whyour/qinglong/refs/heads/develop/sample/notify.py"
|
||
try:
|
||
response = requests.get(url, timeout=10)
|
||
response.raise_for_status()
|
||
with open("notify.py", "w", encoding="utf-8") as f:
|
||
f.write(response.text)
|
||
print("✅ notify.py 下载成功")
|
||
return True
|
||
except Exception as e:
|
||
print(f"❌ 下载 notify.py 失败: {str(e)}")
|
||
return False
|
||
|
||
|
||
def send_notification(title, content):
|
||
"""统一推送通知(优先使用 Server 酱 SCT)"""
|
||
if SCT_KEY:
|
||
try:
|
||
url = f"https://sctapi.ftqq.com/{SCT_KEY}.send"
|
||
data = {"title": title, "desp": content}
|
||
requests.post(url, data=data, timeout=10)
|
||
print("✅ Server 酱推送成功")
|
||
return
|
||
except Exception as e:
|
||
print(f"❌ Server 酱推送失败: {e}")
|
||
|
||
# 备用:青龙 notify.py
|
||
if NOTIFY:
|
||
try:
|
||
if not os.path.exists("notify.py"):
|
||
if not download_notify():
|
||
print("❌ 无法使用 notify.py 推送")
|
||
return
|
||
import notify
|
||
notify.send(title, content)
|
||
print("✅ 青龙 notify 推送成功")
|
||
except Exception as e:
|
||
print(f"❌ notify.py 推送失败: {str(e)}")
|
||
|
||
|
||
def main():
|
||
# 读取环境变量
|
||
ck = os.environ.get("mnls")
|
||
if not ck:
|
||
print("❌ 请设置环境变量 mnls")
|
||
sys.exit()
|
||
|
||
# 延迟执行(5:01-6:59)
|
||
now = datetime.datetime.now().time()
|
||
start = datetime.time(5, 1)
|
||
end = datetime.time(6, 59)
|
||
if start <= now <= end:
|
||
delay = random.randint(100, 500)
|
||
print(f"⏰ 在 5:01-6:59 之间,延迟 {delay} 秒执行...")
|
||
time.sleep(delay)
|
||
|
||
accounts = [line.strip() for line in ck.split('\n') if line.strip()]
|
||
print(f"{' ' * 10}꧁༺ 蒙拉丽莎会员签到 ༻꧂\n")
|
||
|
||
log_msgs = [
|
||
f"📅 执行时间: {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}",
|
||
f"📊 账号数量: {len(accounts)}",
|
||
"—" * 30
|
||
]
|
||
|
||
for i, webChatID in enumerate(accounts, 1):
|
||
print(f'\n----------- 🍺 账号【{i}/{len(accounts)}】执行 🍺 -----------')
|
||
log_msg = f"【账号 {i}】"
|
||
try:
|
||
success, phone, customerid, nickname, integral = get_info(webChatID)
|
||
if success:
|
||
print(f"👤 昵称: {nickname}")
|
||
print(f"📞 电话: {phone}")
|
||
print(f"🆔 客户ID: {customerid}")
|
||
print(f"⭐ 当前积分: {integral}")
|
||
|
||
log_msg += f"\n👤 昵称: {nickname}\n📞 电话: {phone}\n🆔 客户ID: {customerid}\n⭐ 当前积分: {integral}"
|
||
|
||
# 签到
|
||
time.sleep(random.randint(1, 2))
|
||
sign_success, sign_msg = get_sign_in(customerid, nickname)
|
||
print(sign_msg)
|
||
log_msg += f"\n📝 {sign_msg}"
|
||
else:
|
||
log_msg += "\n❌ 获取信息失败"
|
||
except Exception as e:
|
||
print(f"❌ 执行异常: {str(e)}")
|
||
log_msg += f"\n❌ 执行异常: {str(e)}"
|
||
finally:
|
||
log_msgs.append(log_msg)
|
||
|
||
# 推送通知
|
||
if NOTIFY:
|
||
title = "蒙拉丽莎会员签到完成"
|
||
content = "\n".join(log_msgs)
|
||
send_notification(title, content)
|
||
|
||
print(f'\n🎉 执行结束,共 {len(accounts)} 个账号')
|
||
|
||
|
||
if __name__ == '__main__':
|
||
main() |