女仆论坛

女仆与代码的茶会时间

关于小黑屋帮助FAQ协议
© 2026 女仆论坛 · 为开发者与技术爱好者而生
首页
咖啡频道福利画廊微博视频

兴趣节点

全部
日常技术情报测评交易拼车推广生活沙盒摄影壁纸写真动漫萝莉短视频实时游戏干货通信BilibiliSteam青龙 我的世界云服推荐惊喜
98

这个用户还没有留下简介。

回复讨论
0

登录后可参与回复讨论。

女仆论坛 Logo

女仆论坛

登录后即可签到、查看积分与快捷发帖

女仆论坛 萌系外表,硬核内核。 这里是程序员、运维、建站玩家与技术宅的交流据点。

相关主题

要更换论坛?之前的数据怎么说

主题标签

全部标签
payload推送微信签到宝塔
目录
🤔 前言📦 部署方法1️⃣ 获取你的 Cookie2️⃣ 宝塔面板添加定时任务📜 完整代码⚠️ 注意事项✨ 引用

当前还没有回复,欢迎成为第一个参与讨论的人。

文明发言,理性讨论
首页
咖啡
咖啡 节点
日常帖 198技术帖 43情报帖 8测评帖 4交易帖 2拼车帖 4推广帖 8生活帖 1沙盒帖 1
技术

本论坛自动签到 - 增强版 (支持企业微信/钉钉推送) - 宝塔计划任务版

🤔 前言

主要是本人想要推送,但没看懂就用AI修改了下,能支持企业微信/钉钉推送
要是能有人修改支持帐号密码登陆就好了

📦 部署方法

1️⃣ 获取你的 Cookie

浏览器登录论坛
按 F12 → 切换到 网络(Network)选项卡
刷新页面,随便点一个请求
找到 请求标头(Request Headers) 里的 Cookie: 那一行
复制整行值

2️⃣ 宝塔面板添加定时任务

计划任务 → 添加任务:

  • 任务类型:Python脚本
  • 任务名称:女仆论坛签到
  • 执行周期:每天 00:05
  • 执行用户:root 或 www
  • python环境:任何版本
  • 脚本内容:

    image.png

📜 完整代码

python
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 女仆论坛自动签到 - 增强版 (支持企业微信/钉钉推送) 适用于 bt.sb (Rhex 论坛系统) """ import json import urllib.request import urllib.error import logging import os import hmac import hashlib import base64 import time from datetime import datetime # ═══════════════ 配置区 ═══════════════ BASE_URL = "https://bt.sb" # 建议通过环境变量设置敏感信息,避免硬编码 COOKIE = os.environ.get("BBS_COOKIE", "在这里粘贴你的Cookie") LOG_FILE = os.environ.get("BBS_LOG", "") # Webhook 配置 # 企业微信 Webhook 地址 WECHAT_WEBHOOK = os.environ.get("WECHAT_WEBHOOK", "在这里粘贴你的企业微信Webhook地址") # 钉钉 Webhook 地址 DINGTALK_WEBHOOK = os.environ.get("DINGTALK_WEBHOOK", "在这里粘贴你的钉钉Webhook地址") # 钉钉加签密钥 (如果钉钉机器人开启了加签安全设置,请填写此处,否则留空) DINGTALK_SECRET = os.environ.get("DINGTALK_SECRET", "") 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"✅ 日期:{payload.get('date', '未知')}签到成功!累计 {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 generate_dingtalk_sign(secret): """生成钉钉加签签名""" timestamp = str(round(time.time() * 1000)) secret_enc = secret.encode('utf-8') string_to_sign = '{}\n{}'.format(timestamp, secret) string_to_sign_enc = string_to_sign.encode('utf-8') hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest() sign = urllib.parse.quote_plus(base64.b64encode(hmac_code)) return timestamp, sign def send_wechat_webhook(msg): """发送消息到企业微信""" if not WECHAT_WEBHOOK or "key=" not in WECHAT_WEBHOOK: return try: # 企业微信支持 text, markdown 等类型 payload = { "msgtype": "text", "text": { "content": msg } } data = json.dumps(payload).encode("utf-8") req = urllib.request.Request(WECHAT_WEBHOOK, data=data, headers={"Content-Type": "application/json"}) with urllib.request.urlopen(req, timeout=10) as resp: res_body = json.loads(resp.read().decode("utf-8")) if res_body.get("errcode") != 0: logging.warning(f"📨 企业微信推送失败: {res_body.get('errmsg')}") else: logging.info("📨 企业微信推送成功") except Exception as e: logging.warning(f"📨 企业微信推送异常: {e}") def send_dingtalk_webhook(msg): """发送消息到钉钉""" if not DINGTALK_WEBHOOK or "access_token=" not in DINGTALK_WEBHOOK: return try: webhook_url = DINGTALK_WEBHOOK # 如果配置了加签密钥,需要添加 timestamp 和 sign 参数 if DINGTALK_SECRET: timestamp, sign = generate_dingtalk_sign(DINGTALK_SECRET) webhook_url = f"{DINGTALK_WEBHOOK}&timestamp={timestamp}&sign={sign}" # 钉钉支持 text, link, markdown 等类型 payload = { "msgtype": "text", "text": { "content": msg }, "at": { "isAtAll": False } } data = json.dumps(payload).encode("utf-8") req = urllib.request.Request(webhook_url, data=data, headers={"Content-Type": "application/json"}) with urllib.request.urlopen(req, timeout=10) as resp: res_body = json.loads(resp.read().decode("utf-8")) if res_body.get("errcode") != 0: logging.warning(f"📨 钉钉推送失败: {res_body.get('errmsg')}") else: logging.info("📨 钉钉推送成功") except Exception as e: logging.warning(f"📨 钉钉推送异常: {e}") def push_notify(msg): """统一推送入口""" # 并行或串行发送均可,这里采用串行以简化逻辑 send_wechat_webhook(msg) send_dingtalk_webhook(msg) 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 '❌ 失败'}")

⚠️ 注意事项

Cookie 有有效期,过期后需要重新获取(脚本会提示 ❌ Cookie 已失效)
执行时间建议设在 00:05 或 08:00,避开整点
零依赖,不需要 pip install 任何东西,Python 3.6+ 自带的标准库就够了


有问题欢迎回帖,觉得好用点个赞 👍


✨ 引用

↓↓↓根据下面的修改了下↓↓↓
女仆论坛服务器端自动签到 - 宝塔计划任务版 - 女仆论坛 https://bt.sb/posts/cmpcifjiq0bpqql0kqpqy8hbj#python脚本女仆论坛服务器端自动签到-宝塔计划任务版

文
站内
女仆论坛服务器端自动签到 - 宝塔计划任务版
mochu1个月前2815374
文
站内
女仆论坛服务器端自动签到 - 宝塔计划任务版
mochu1个月前2815284
站点 Logo
女仆论坛
站点 Logo
女仆论坛
·2小时前
uchtbi25189