Continue seeded Qinglong script collection
This commit is contained in:
323
脚本库/微信小程序/抓包版/回收猿/2025-08-27_回收猿_d904b937.py
Normal file
323
脚本库/微信小程序/抓包版/回收猿/2025-08-27_回收猿_d904b937.py
Normal file
@@ -0,0 +1,323 @@
|
||||
# Source: https://github.com/LinYuanovo/AutoTaskScripts/blob/main/miniapp/%E5%9B%9E%E6%94%B6%E7%8C%BF.py
|
||||
# Raw: https://raw.githubusercontent.com/LinYuanovo/AutoTaskScripts/main/miniapp/%E5%9B%9E%E6%94%B6%E7%8C%BF.py
|
||||
# Repo: LinYuanovo/AutoTaskScripts
|
||||
# Path: miniapp/回收猿.py
|
||||
# UploadedAt: 2025-08-27T15:31:08+08:00
|
||||
# SHA256: d904b9372cd0e7bce0f6195045fcf730d9797b2964b5735406cb2c5d4e4acf72
|
||||
# Category: 微信小程序/抓包版
|
||||
# Evidence: appid/openid/session_key/encryptedData等小程序字段
|
||||
|
||||
"""
|
||||
作者: 临渊
|
||||
日期: 2025/6/24
|
||||
name: 回收猿
|
||||
入口: 微信小程序
|
||||
功能: 签到、抽奖
|
||||
变量: hsy_username (www.52bjy.com请求url参数中的username) 多个账号用换行分割
|
||||
定时: 一天一次
|
||||
cron: 10 8 * * *
|
||||
------------更新日志------------
|
||||
2025/6/24 V1.0 初始化脚本
|
||||
2025/6/26 V1.1 修复重复提现
|
||||
2025/7/22 V1.2 去除提现
|
||||
2025/7/28 V1.3 修改头部注释,以便拉库
|
||||
"""
|
||||
|
||||
DEFAULT_WITHDRAW_BALANCE = 1 # 默认超过该金额进行提现,需大于等于1
|
||||
|
||||
import hashlib
|
||||
import random
|
||||
import time
|
||||
import requests
|
||||
import os
|
||||
import logging
|
||||
import traceback
|
||||
from datetime import datetime
|
||||
|
||||
class AutoTask:
|
||||
def __init__(self, site_name):
|
||||
"""
|
||||
初始化自动任务类
|
||||
:param site_name: 站点名称,用于日志显示
|
||||
"""
|
||||
self.site_name = site_name
|
||||
# self.wx_code_url = os.getenv("soy_codeurl_data")
|
||||
# self.wx_code_token = os.getenv("soy_codetoken_data")
|
||||
self.host = "www.52bjy.com"
|
||||
self.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/9129"
|
||||
self.setup_logging()
|
||||
|
||||
def setup_logging(self):
|
||||
"""
|
||||
配置日志系统
|
||||
"""
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(levelname)s\t- %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S',
|
||||
handlers=[
|
||||
# logging.FileHandler(f'{self.site_name}_{datetime.now().strftime("%Y%m%d")}.log', encoding='utf-8'), # 保存日志
|
||||
logging.StreamHandler()
|
||||
]
|
||||
)
|
||||
|
||||
def check_env(self):
|
||||
"""
|
||||
检查环境变量
|
||||
:return: 环境变量字符串
|
||||
"""
|
||||
try:
|
||||
# 从环境变量获取cookie
|
||||
username = os.getenv(f"hsy_username")
|
||||
if not username:
|
||||
logging.error(f"[检查环境变量]没有找到环境变量hsy_username,请检查环境变量")
|
||||
return None
|
||||
# 多个账号用换行分割
|
||||
usernames = username.split('\n')
|
||||
for username in usernames:
|
||||
if "=" in username:
|
||||
username = username.split("=")[1]
|
||||
yield username
|
||||
else:
|
||||
yield username
|
||||
except Exception as e:
|
||||
logging.error(f"[检查环境变量]发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
raise
|
||||
|
||||
def wx_code_auth(self, session, wx_id):
|
||||
"""
|
||||
执行微信授权
|
||||
:param session: session
|
||||
:param wx_id: 微信id
|
||||
:return: 微信code
|
||||
"""
|
||||
try:
|
||||
url = self.wx_code_url
|
||||
headers = {
|
||||
"Authorization": self.wx_code_token,
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
payload = {
|
||||
"wxid": wx_id,
|
||||
"appid": "wxadd84841bd31a665"
|
||||
}
|
||||
response = session.post(url, headers=headers, json=payload)
|
||||
response.raise_for_status()
|
||||
response_json = response.json()
|
||||
if response_json['code'] == 200:
|
||||
code = response_json['data']['code']
|
||||
return code
|
||||
else:
|
||||
logging.error(f"[微信授权]{response_json['msg']}")
|
||||
return False
|
||||
except requests.RequestException as e:
|
||||
logging.error(f"[微信授权]发生网络错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
except Exception as e:
|
||||
logging.error(f"[微信授权]发生未知错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
|
||||
def get_sign(self, params):
|
||||
"""
|
||||
获取签名
|
||||
:param params: 参数
|
||||
:return: 签名
|
||||
"""
|
||||
params_str = "&".join([f"{k}={v}" for k, v in params.items()]) + "UppwYkfBlk"
|
||||
encrypted_str = hashlib.md5(params_str.encode()).hexdigest()
|
||||
return encrypted_str
|
||||
|
||||
def login(self, session, code):
|
||||
"""
|
||||
登录
|
||||
:param session: session
|
||||
:param code: 微信code
|
||||
:return: 登录结果
|
||||
"""
|
||||
try:
|
||||
url = f"https://{self.host}/api/app/hsy.php"
|
||||
params = {
|
||||
"action": "auth",
|
||||
"appkey": "1079fb245839e765",
|
||||
"code": code,
|
||||
"inviter": "",
|
||||
"iv": "c+AcluyHusGM9EmVkh2axA==",
|
||||
"merchant_id": "2",
|
||||
"method": "weixin_bind",
|
||||
"version": "2"
|
||||
}
|
||||
params["sign"] = self.get_sign(params)
|
||||
payload = f"encryptedData=M/Lv191+L7VI5ye0p/EFKzZuP4Wy02eMQwxhHmooRivjYsf6h+XjgGmAI8JXnTpTMCD+6o7+0k6HfEzs8Ww5nCM6M7HrHXtLWvaXkVbT2cF+ufak87NNT+5Txt2CGRfFCdAGSHmB1lFuxfbmQR8SFSZGdh7tn20Ehd3mKe6HHUI+ZxoG/L6OOUDX1yTQQ3nsxQyuWbLOldgQ7VfKfA/9WmIS6lt3j8sIOn83CiiiiJNPc1spMEfWZX3vD839FiuKwgh+a5/JTeBgfEhcchV7y0YQXQlxD2BLQ7whF/A/KrKB9bsIrdefmqynicZuRKa6WTNnQlikoT9oq0cYzF+w4lyesPK4ig/uKuSxf4P8SRpZ1U3cdKuwTs1eufsIm2nuUAUgYj0SfbM02QD65ESZWGLI6zHiVXadGhFF2KDPeehwnSaK6h2++6WhyI8Hj1+E"
|
||||
session.headers["Content-Type"] = "application/x-www-form-urlencoded"
|
||||
response = session.post(url, params=params, data=payload)
|
||||
response.raise_for_status()
|
||||
response_json = response.json()
|
||||
logging.info(f"[登录]: {response_json}")
|
||||
except requests.RequestException as e:
|
||||
logging.error(f"[登录]发生网络错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
except Exception as e:
|
||||
logging.error(f"[登录]发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
|
||||
|
||||
def sign_in(self, session, username):
|
||||
"""
|
||||
签到
|
||||
:param session: session
|
||||
:return: 签到结果
|
||||
"""
|
||||
try:
|
||||
url = f"https://{self.host}/api/app/hsy.php"
|
||||
params = {
|
||||
"action": "user",
|
||||
"app": "hsywx",
|
||||
"appkey": "1079fb245839e765",
|
||||
"merchant_id": "2",
|
||||
"method": "qiandao",
|
||||
"username": username,
|
||||
"version": "4"
|
||||
}
|
||||
params["sign"] = self.get_sign(params)
|
||||
response = session.get(url, params=params)
|
||||
response.raise_for_status()
|
||||
response_json = response.json()
|
||||
logging.info(f"[签到]: {response_json['message']}")
|
||||
except Exception as e:
|
||||
logging.error(f"[签到]发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
|
||||
def prize_draw(self, session, username):
|
||||
"""
|
||||
抽奖
|
||||
:param session: session
|
||||
:param username: 用户名
|
||||
:return: 抽奖结果
|
||||
"""
|
||||
try:
|
||||
url = f"https://{self.host}/api/app/promotionjgg.php"
|
||||
params = {
|
||||
"action": "prize_draw",
|
||||
"app": "hsywx",
|
||||
"appkey": "1079fb245839e765",
|
||||
"merchant_id": "2",
|
||||
"username": username,
|
||||
"version": "4"
|
||||
}
|
||||
params["sign"] = self.get_sign(params)
|
||||
response = session.get(url, params=params)
|
||||
response.raise_for_status()
|
||||
response_json = response.json()
|
||||
if response_json['code'] == 200:
|
||||
# 奖励金
|
||||
introduce = response_json['data']['introduce']
|
||||
title = response_json['data']['title']
|
||||
logging.info(f"[抽奖]: {introduce} {title}")
|
||||
else:
|
||||
logging.warning(f"[抽奖]: {response_json['message']}")
|
||||
except Exception as e:
|
||||
logging.error(f"[抽奖]发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
|
||||
def get_user_balance(self, session, username):
|
||||
"""
|
||||
获取用户余额
|
||||
:param session: session
|
||||
:param username: 用户名
|
||||
:return: 用户余额
|
||||
"""
|
||||
try:
|
||||
url = f"https://{self.host}/api/app/hsy.php"
|
||||
params = {
|
||||
"action": "user",
|
||||
"appkey": "1079fb245839e765",
|
||||
"merchant_id": "2",
|
||||
"method": "center",
|
||||
"username": username,
|
||||
"version": "2"
|
||||
}
|
||||
params["sign"] = self.get_sign(params)
|
||||
response = session.get(url, params=params)
|
||||
response.raise_for_status()
|
||||
response_json = response.json()
|
||||
if response_json['code'] == 200:
|
||||
balance = response_json['data']['award_balance']
|
||||
logging.info(f"[余额]: {balance}元")
|
||||
return balance
|
||||
else:
|
||||
logging.warning(f"[获取用户余额]: {response_json['message']}")
|
||||
return 0
|
||||
except Exception as e:
|
||||
logging.error(f"[获取用户余额]发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return 0
|
||||
|
||||
def withdraw(self, session, username, balance):
|
||||
"""
|
||||
提现
|
||||
:param session: session
|
||||
:param username: 用户名
|
||||
:param balance: 余额
|
||||
:return: 提现结果
|
||||
"""
|
||||
try:
|
||||
url = f"https://{self.host}/api/app/envcash.php"
|
||||
params = {
|
||||
"action": "add",
|
||||
"amount": balance,
|
||||
"app": "wx",
|
||||
"appkey": "1079fb245839e765",
|
||||
"merchant_id": "2",
|
||||
"type": "award",
|
||||
"username": username,
|
||||
"version": "2"
|
||||
}
|
||||
params["sign"] = self.get_sign(params)
|
||||
response = session.get(url, params=params)
|
||||
response.raise_for_status()
|
||||
response_json = response.json()
|
||||
logging.info(f"[提现]: {response_json['message']}")
|
||||
except Exception as e:
|
||||
logging.error(f"[提现]发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
return False
|
||||
|
||||
def run(self):
|
||||
"""
|
||||
运行任务
|
||||
"""
|
||||
try:
|
||||
logging.info(f"【{self.site_name}】开始执行任务")
|
||||
|
||||
# 检查环境变量
|
||||
for index, username in enumerate(self.check_env(), 1):
|
||||
logging.info("")
|
||||
logging.info(f"------ 【账号{index}】开始执行任务 ------")
|
||||
|
||||
session = requests.Session()
|
||||
|
||||
# # 执行微信授权
|
||||
# code = self.wx_code_auth(session, wx_id)
|
||||
# if code:
|
||||
# self.login(session, code)
|
||||
|
||||
# 签到
|
||||
self.sign_in(session, username)
|
||||
time.sleep(random.randint(3, 5))
|
||||
# 抽奖
|
||||
self.prize_draw(session, username)
|
||||
time.sleep(random.randint(3, 5))
|
||||
# 获取用户余额
|
||||
balance = float(self.get_user_balance(session, username))
|
||||
time.sleep(random.randint(3, 5))
|
||||
# # 提现
|
||||
# if balance >= DEFAULT_WITHDRAW_BALANCE:
|
||||
# logging.info(f"[提现]: 余额大于{DEFAULT_WITHDRAW_BALANCE},开始尝试提现")
|
||||
# self.withdraw(session, username, balance)
|
||||
# time.sleep(random.randint(3, 5))
|
||||
logging.info(f"------ 【账号{index}】执行任务完成 ------")
|
||||
except Exception as e:
|
||||
logging.error(f"【{self.site_name}】执行过程中发生错误: {str(e)}\n{traceback.format_exc()}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
auto_task = AutoTask("回收猿")
|
||||
auto_task.run()
|
||||
Reference in New Issue
Block a user