Files
qinglong/脚本库/微信小程序/抓包版/站点名称,用于日志显示/2025-08-27_银鱼质享_268054af.py
2026-05-24 05:33:05 +00:00

242 lines
9.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Source: https://github.com/LinYuanovo/AutoTaskScripts/blob/main/miniapp/%E9%93%B6%E9%B1%BC%E8%B4%A8%E4%BA%AB.py
# Raw: https://raw.githubusercontent.com/LinYuanovo/AutoTaskScripts/main/miniapp/%E9%93%B6%E9%B1%BC%E8%B4%A8%E4%BA%AB.py
# Repo: LinYuanovo/AutoTaskScripts
# Path: miniapp/银鱼质享.py
# UploadedAt: 2025-08-27T15:31:08+08:00
# SHA256: 268054af55717b04f504b744a0d78db677dcc6b46d085ce5db1e93d8e5b09527
# Category: 微信小程序/抓包版
# Evidence: appid/openid/session_key/encryptedData等小程序字段
"""
作者: 临渊
日期: 2025/6/18
小程序: 银鱼质享
功能: 看视频、提现
变量: yyzx='authori-zation' n05.sentezhenxuan.com域名下authori-zation 多个账号用换行分割
定时: 一天一次
cron 10 10 * * *
更新日志:
2025/6/18 初始化脚本
"""
import random
import requests
import os
import logging
import traceback
from datetime import datetime
import time
class AutoTask:
def __init__(self, site_name):
"""
初始化自动任务类
:param site_name: 站点名称,用于日志显示
"""
self.site_name = site_name
self.host = "n05.sentezhenxuan.com"
self.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(0x63090a13) XWEB/8555"
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
cookie = os.getenv(f"yyzx")
if not cookie:
logging.warning(f"[检查环境变量]没有找到环境变量yyzx退出")
return None
# 多个账号用换行分割
cookies = cookie.split('\n')
for cookie in cookies:
if "=" in cookie:
cookie = cookie.split("=")[1]
yield cookie
else:
yield cookie
except Exception as e:
logging.error(f"[检查环境变量]发生错误: {str(e)}\n{traceback.format_exc()}")
raise
def get_video_list(self, host, cookie):
"""
获取视频列表
:param host: 域名
:param cookie: cookie
:return: 视频列表
"""
try:
url = f"https://{host}/api/video/list?page=1&limit=10&status=1&source=0&isXn=1"
headers = {
'authori-zation': cookie,
'User-Agent': self.user_agent
}
response = requests.get(url, headers=headers)
response.raise_for_status()
response_json = response.json()
video_list = response_json.get('data', [])
return video_list
except Exception as e:
logging.error(f"[获取视频列表]发生错误: {str(e)}\n{traceback.format_exc()}")
return []
def watch_video(self, host, cookie, video_id, watch_time):
"""
执行看视频
:param host: 域名
:param cookie: cookie
:param video_id: 视频id
:param watch_time: 观看时间
"""
try:
url = f"https://{host}/api/video/videoJob"
headers = {
'authori-zation': cookie,
'User-Agent': self.user_agent
}
# 获取当前时间戳(毫秒)
current_timestamp = int(datetime.now().timestamp() * 1000)
payload = {
"vid": video_id,
"startTime": current_timestamp,
"endTime": current_timestamp + watch_time + 1000,
"baseVersion": "3.3.5",
"playMode": 0
}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
# 处理响应
response_json = response.json()
if response_json.get('status') == 200:
logging.info(f"[看视频]成功视频ID: {video_id}")
return True
else:
logging.warning(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 update_withdraw_info(self, host, cookie):
"""
更新提现信息
:param host: 域名
:param cookie: cookie
:return: 当前余额
"""
try:
url = f"https://{host}/api/updateTxInfo"
headers = {
'authori-zation': cookie,
'User-Agent': self.user_agent,
'content-type': 'application/json'
}
response = requests.get(url, headers=headers)
response.raise_for_status()
response_json = response.json()
if response_json.get('status') == 200:
logging.info(f"[更新提现信息]当前余额:{response_json['data']['now_money']}")
balance = float(response_json['data']['now_money'])
return balance
else:
logging.warning(f"[更新提现信息]失败: {response_json['msg']}")
return 0
except Exception as e:
logging.error(f"[更新提现信息]发生错误: {str(e)}\n{traceback.format_exc()}")
return 0
def withdraw(self, host, cookie):
"""
执行提现
:param host: 域名
:param cookie: cookie
"""
try:
url = f"https://{host}/api/userTx"
headers = {
'Host': host,
'Connection': 'keep-alive',
'charset': 'utf-8',
'form-type': 'routine-zhixiang',
'referer': 'https://servicewechat.com/wx5b82dfe3747e533f/5/page-frame.html',
'authori-zation': cookie,
'User-Agent': self.user_agent,
'content-type': 'application/json'
}
response = requests.get(url, headers=headers)
response.raise_for_status()
response_json = response.json()
if response_json.get('status') == 200:
logging.info(f"[提现]{response_json['msg']}")
return True
else:
logging.warning(f"[提现]失败: {response_json['msg']}")
return False
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}】开始执行任务")
# 1. 检查cookie
for index, cookie in enumerate(self.check_env(), 1):
logging.info("")
logging.info(f"------ 【账号{index}】开始执行任务 ------")
# 2. 获取视频列表
video_list = self.get_video_list(self.host, cookie)
if not video_list:
logging.warning(f"[获取视频列表]失败,跳过当前账号看视频任务")
# 3. 执行看视频任务
for video in video_list:
video_id = video['id']
if video_id:
watch_time = video['wait_time']
self.watch_video(self.host, cookie, video_id, watch_time)
time.sleep(random.randint(10, 15))
# 4. 提现
user_balance = self.update_withdraw_info(self.host, cookie)
if user_balance >= 0.2:
self.withdraw(self.host, cookie)
else:
logging.warning(f"[提现]当前余额不足0.2元,跳过提现")
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()