160
【Python脚本】女仆论坛服务器端自动签到 - 宝塔计划任务版
不用开浏览器,服务器每天定时自动帮你签到,再也不怕忘记了 🎯
🤔 为什么需要服务器版?
之前发过一个 Tampermonkey 油猴版,但它有个前提:你得每天至少打开一次论坛。
而这个 Python 版放在服务器上,配合宝塔面板的计划任务,每天凌晨自动执行,完全不需要你打开浏览器。
| 对比 | 油猴版 | Python 服务器版 |
|---|---|---|
| 运行方式 | 浏览器打开论坛时自动执行 | 服务器定时任务自动执行 |
| 是否需要打开浏览器 | ✅ 需要 | ❌ 不需要 |
| 依赖 | Tampermonkey 扩展 | Python 3.6+(服务器自带) |
| 推送通知 | 页面 Toast 提示 | Bark / Server酱 推送到手机 |
| 适合人群 | 每天都会逛论坛的人 | 有服务器但不一定每天逛论坛的人 |
📦 部署方法
1️⃣ 上传脚本到服务器
bashmkdir -p /root/scripts
把下面完整代码部分的内容保存为 bbs_checkin.py,上传到 /root/scripts/ 目录。
2️⃣ 获取你的 Cookie
- 浏览器登录论坛
- 按
F12→ 切换到Network选项卡 - 刷新页面,随便点一个请求
- 找到
Request Headers里的Cookie:那一行 - 复制整行值
3️⃣ 填入 Cookie
打开脚本,把 Cookie 粘贴进去:
pythonCOOKIE = "这里粘贴你复制的Cookie"
或者用环境变量(推荐,不用改文件):
bashexport BBS_COOKIE="你的Cookie" python3 /root/scripts/bbs_checkin.py
4️⃣ 测试一下
bashpython3 /root/scripts/bbs_checkin.py
看到类似输出就说明成功了:
text2026-05-19 00:05:02 [签到] ✅ 签到成功!获得 4 女仆币 | 连续 3 天 | 最长 5 天
5️⃣ 宝塔面板添加定时任务
计划任务 → 添加任务:
- 任务类型:Shell 脚本
- 任务名称:女仆论坛签到
- 执行周期:每天 00:05
- 脚本内容:
bashpython3 /root/scripts/bbs_checkin.py
搞定!从此每天自动签,女仆币稳稳到手 💰
🔔 推送到手机(可选)
签到结果可以推送到手机,支持三种方式:
Bark(iOS):
pythonPUSH_URL = "https://api.day.app/你的Key"
Server酱(微信):
pythonPUSH_URL = "https://sctapi.ftqq.com/你的Key.send"
⚠️ 注意事项
- Cookie 有有效期,过期后需要重新获取(脚本会提示
❌ Cookie 已失效) - 执行时间建议设在 00:05 或 08:00,避开整点
- 零依赖,不需要
pip install任何东西,Python 3.6+ 自带的标准库就够了
📜 完整代码
python#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 女仆论坛自动签到 - 宝塔计划任务版 适用于 bbs.bt.sb (Rhex 论坛系统) """ import json import urllib.request import urllib.error import logging import os from datetime import datetime # ═══════════════ 配置区 ═══════════════ BASE_URL = "https://bbs.bt.sb" COOKIE = os.environ.get("BBS_COOKIE", "在这里粘贴你的Cookie") LOG_FILE = os.environ.get("BBS_LOG", "") PUSH_URL = os.environ.get("BBS_PUSH_URL", "") def setup_logging(): handlers = [logging.StreamHandler()] if LOG_FILE: handlers.append(logging.FileHandler(LOG_FILE, encoding="utf-8")) logging.basicConfig( level=logging.INFO, format="%(asctime)s [签到] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", handlers=handlers, ) def checkin(): url = f"{BASE_URL}/api/check-in" data = json.dumps({"action": "check-in"}).encode("utf-8") req = urllib.request.Request(url, data=data, headers={ "Content-Type": "application/json", "Cookie": COOKIE, "User-Agent": "Mozilla/5.0 BBS-AutoCheckIn/1.0", "Referer": BASE_URL, "Origin": BASE_URL, }, method="POST") try: with urllib.request.urlopen(req, timeout=15) as resp: body = json.loads(resp.read().decode("utf-8")) payload = body.get("data", body) if payload.get("alreadyCheckedIn"): msg = f"📌 今日已签到(日期:{payload.get('date', '未知')})" else: points = payload.get("points", "") streak = payload.get("currentStreak", 0) max_streak = payload.get("maxStreak", 0) msg = f"✅ 签到成功!获得 {points} 女仆币 | 连续 {streak} 天 | 最长 {max_streak} 天" logging.info(msg) push_notify(msg) return True except urllib.error.HTTPError as e: if e.code in (401, 403): msg = f"❌ Cookie 已失效({e.code}),请重新获取" else: msg = f"⚠️ 签到异常 {e.code}: {e.reason}" logging.error(msg) push_notify(msg) return False except Exception as e: msg = f"❌ 网络错误:{e}" logging.error(msg) push_notify(msg) return False def push_notify(msg): if not PUSH_URL: return try: if "api.day.app" in PUSH_URL: req = urllib.request.Request(f"{PUSH_URL.rstrip('/')}/女仆论坛签到/{msg}") elif "sctapi.ftqq.com" in PUSH_URL: import urllib.parse data = urllib.parse.urlencode({"title": "女仆论坛签到", "desp": msg}).encode() req = urllib.request.Request(PUSH_URL, data=data) else: data = json.dumps({"title": "女仆论坛签到", "content": msg}).encode() req = urllib.request.Request(PUSH_URL, data=data, headers={"Content-Type": "application/json"}) urllib.request.urlopen(req, timeout=10) except Exception as e: logging.warning(f"📨 推送失败:{e}") if __name__ == "__main__": setup_logging() logging.info("🕐 开始执行签到") if COOKIE == "在这里粘贴你的Cookie" or not COOKIE: logging.error("❌ 请先配置 COOKIE") exit(1) success = checkin() logging.info(f"{'✅ 完成' if success else '❌ 失败'}")
有问题欢迎回帖,觉得好用点个赞 👍
附件列表
网盘附件
蓝奏云
FILE · 下载 4 · 可下载公开下载
这个用户还没有留下简介。