更新 Points_Based/D_SFSY_SJBHD.py

This commit is contained in:
2026-07-07 06:10:19 +00:00
parent 107540a9fe
commit f161477fdf
+131 -5
View File
@@ -4,10 +4,11 @@
顺丰2026世界杯活动 - 射门游戏 + 比赛竞猜 + 每日礼物 顺丰2026世界杯活动 - 射门游戏 + 比赛竞猜 + 每日礼物
Author: Auto-generated (参考端午活动脚本) Author: Auto-generated (参考端午活动脚本)
Version: 1.2.0 Version: 1.2.1
Date: 2026-07-06 Date: 2026-07-07
更新日志: 更新日志:
1.2.1 (2026-07-07) 修复多变量解析:支持青龙同名变量换行分隔,兼容 & 分隔
1.2.0 (2026-07-06) 优化邀请逻辑:支持列表内账号互相邀请,显示已邀请好友列表 1.2.0 (2026-07-06) 优化邀请逻辑:支持列表内账号互相邀请,显示已邀请好友列表
1.1.0 (2026-07-04) 新增下注结算(settleBet)阶段、赔率显示、潜在收益/今日盈亏列 1.1.0 (2026-07-04) 新增下注结算(settleBet)阶段、赔率显示、潜在收益/今日盈亏列
1.0.0 (2026-07-03) 初版:每日礼物 + 任务(白名单) + 射门游戏 + 比赛下注 1.0.0 (2026-07-03) 初版:每日礼物 + 任务(白名单) + 射门游戏 + 比赛下注
@@ -416,7 +417,6 @@ class WorldCupExecutor:
for i, friend in enumerate(invite_list, 1): for i, friend in enumerate(invite_list, 1):
mobile = friend.get('mobile', '未知') mobile = friend.get('mobile', '未知')
invite_date = friend.get('inviteDate', '未知') invite_date = friend.get('inviteDate', '未知')
# 脱敏显示
if len(mobile) >= 7: if len(mobile) >= 7:
mobile_masked = mobile[:3] + "****" + mobile[7:] mobile_masked = mobile[:3] + "****" + mobile[7:]
else: else:
@@ -810,7 +810,133 @@ def run_account(account_url: str, index: int, invite_pool: List[str]) -> Dict[st
} }
# ==================== 主程序(重写解析逻辑,支持同名多变量) ====================
def main(): def main():
# 收集所有 sfsyUrl 相关环境变量(兼容青龙面板同名多变量) # 第一步:收集所有可能包含账号信息的环境变量
raw_values = []
for key, value in os.environ.items():
if key == 'sfsyUrl' or key.startswith('sfsyUrl_'):
raw_values.append(value)
if not raw_values:
print("❌ 未找到任何 sfsyUrl / sfsyUrl_* 环境变量,请检查青龙面板变量配置")
return
# 第二步:合并所有值,按 & 和 \n 分割
combined = '&'.join(raw_values)
parts = []
for p in combined.split('&'):
if '\n' in p:
parts.extend(p.split('\n'))
else:
if p.strip():
parts.append(p.strip())
# 第三步:提取以 sessionId= 开头的有效账号字符串
account_urls = [] account_urls = []
invite_pool = [] # for p in parts:
p = p.strip()
if not p:
continue
if p.startswith('sessionId='):
account_urls.append(p)
elif 'sessionId=' in p:
# 从第一个 sessionId= 开始截取
idx = p.find('sessionId=')
account_urls.append(p[idx:])
# 第四步:去重(保留首次出现顺序)
seen = set()
unique_urls = []
for u in account_urls:
if u not in seen:
seen.add(u)
unique_urls.append(u)
account_urls = unique_urls
if not account_urls:
print("❌ 未能解析出有效的账号 Cookie,请检查格式(应以 sessionId= 开头)")
print(f" 原始输入片段: {combined[:200]}...")
return
# 第五步:提取邀请池(所有 user_id)
invite_pool = []
for url in account_urls:
m = re.search(r'_login_user_id_=([A-Fa-f0-9]+)', url)
if m:
invite_pool.append(m.group(1))
# 设置全局邀请池
global inviteId
inviteId = invite_pool
# 打乱顺序,防止固定顺序触发风控
random.shuffle(account_urls)
print("=" * 60)
print(f"⚽ 顺丰2026世界杯活动 - 射门挑战 + 比赛竞猜")
print(f"👨‍💻 Author: Auto-generated")
print(f"📱 共获取到 {len(account_urls)} 个账号")
print(f"🤝 邀请池: {len(invite_pool)} 个账号")
print(f"⚙️ 并发数量: {CONCURRENT_NUM}")
print(f"🎯 阶段开关: 礼物={ENABLE_DAILY_GIFT} 任务={ENABLE_TASKS} 游戏={ENABLE_GAME} 下注={ENABLE_BET} 结算={ENABLE_SETTLE}")
print(f"💰 单场下注: {BET_COIN} 金币(最低 10")
print(f"⏰ 执行时间: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print("=" * 60)
all_results = []
if CONCURRENT_NUM <= 1:
for idx, url in enumerate(account_urls):
result = run_account(url, idx, invite_pool)
all_results.append(result)
if idx < len(account_urls) - 1:
print("-" * 60)
time.sleep(2)
else:
with ThreadPoolExecutor(max_workers=CONCURRENT_NUM) as pool:
futures = {pool.submit(run_account, url, idx, invite_pool): idx for idx, url in enumerate(account_urls)}
for future in as_completed(futures):
all_results.append(future.result())
all_results.sort(key=lambda x: x['index'])
print(f"\n" + "=" * 90)
print(f"📊 世界杯活动汇总")
print("=" * 90)
print(f"{'序号':<6} {'手机号':<15} {'金币余额':<10} {'通关数':<6} {'下注数':<6} {'潜在收益':<10} {'今日盈亏':<10} {'每日礼物':<8}")
print("-" * 100)
total_balance = 0
total_payout = 0.0
total_pnl = 0
for r in all_results:
idx = r['index'] + 1
phone = r['phone'][:3] + "****" + r['phone'][7:] if r.get('phone') and len(r['phone']) >= 7 else r.get('phone', '未登录')
daily = '' if r.get('daily_gift') else ''
balance = r.get('final_balance', 0)
stages = len(r.get('stages_passed', []))
bets = r.get('bets_placed', 0)
payout = sum(d.get('potential_payout', 0) for d in r.get('bet_details', []))
pnl = r.get('settle_pnl', 0)
wins = r.get('settle_wins', 0)
losses = r.get('settle_losses', 0)
if wins + losses > 0:
pnl_str = f'{pnl:+d} ({wins}{losses}负)'
else:
pnl_str = '-'
total_payout += payout
total_pnl += pnl
total_balance += balance
print(f"{idx:<6} {phone:<15} {balance:<10} {stages:<6} {bets:<6} {payout:<10} {pnl_str:<10} {daily:<8}")
print("-" * 100)
print(f"{'汇总':<6} {'账号: ' + str(len(all_results)):<15} 总金币余额: {total_balance} | 累计盈亏: {total_pnl:+d}")
print("=" * 90)
print("\n🎊 所有账号执行完成!")
if __name__ == '__main__':
main()