867
图床 tuchuang.mochu.cc.cd
回复讨论
20
登录后可参与回复讨论。
不用开浏览器,服务器每天定时自动帮你签到,再也不怕忘记了 🎯
之前发过一个 Tampermonkey 油猴版,但它有个前提:你得每天至少打开一次论坛。
而这个 Python 版放在服务器上,配合宝塔面板的计划任务,每天凌晨自动执行,完全不需要你打开浏览器。
| 对比 | 油猴版 | Python 服务器版 |
|---|---|---|
| 运行方式 | 浏览器打开论坛时自动执行 | 服务器定时任务自动执行 |
| 是否需要打开浏览器 | ✅ 需要 | ❌ 不需要 |
| 依赖 | Tampermonkey 扩展 | Python 3.6+(服务器自带) |
| 推送通知 | 页面 Toast 提示 | Bark / Server酱 推送到手机 |
| 适合人群 | 每天都会逛论坛的人 | 有服务器但不一定每天逛论坛的人 |
bashmkdir -p /root/scripts
把下面完整代码部分的内容保存为 bbs_checkin.py,上传到 /root/scripts/ 目录。
F12 → 切换到 Network 选项卡Request Headers 里的 Cookie: 那一行打开脚本,把 Cookie 粘贴进去:
pythonCOOKIE = "这里粘贴你复制的Cookie"
或者用环境变量(推荐,不用改文件):
bashexport BBS_COOKIE="你的Cookie"
python3 /root/scripts/bbs_checkin.py
bashpython3 /root/scripts/bbs_checkin.py
看到类似输出就说明成功了:
text2026-05-19 00:05:02 [签到] ✅ 签到成功!获得 4 女仆币 | 连续 3 天 | 最长 5 天
计划任务 → 添加任务:
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 已失效)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 '❌ 失败'}")
有问题欢迎回帖,觉得好用点个赞 👍
蓝奏云