12下一页
返回列表 发新帖

MT论坛签到脚本(修复版)

[复制链接]

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 15:36:58 | 显示全部楼层 | 阅读模式  来自 重庆
程序演示
看着没有问题,不知道实际签到有没有哈哈哈


因为今天手动签到了 然后逛论坛才看到有人发了已经失效的脚本 想着试试 目前脚本使用Python 3


还没有签到的用户可以试试 有问题可以提出来
  1. import requests
  2. import re
  3. import random
  4. import time
  5. import logging

  6. # 配置日志输出,使其更加美观和实用
  7. logging.basicConfig(
  8.     level=logging.INFO,
  9.     format='%(asctime)s - %(levelname)s - %(message)s',
  10.     datefmt='%Y-%m-%d %H:%M:%S'
  11. )
  12. logger = logging.getLogger(__name__)

  13. class BinMTSigner:
  14.     """
  15.     MT 论坛自动签到类
  16.     """
  17.     BASE_URL = 'https://bbs.binmt.cc'
  18.     UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.31'

  19.     def __init__(self, username, password):
  20.         self.username = username
  21.         self.password = password
  22.         self.session = requests.Session()
  23.         self.session.headers.update({'User-Agent': self.UA})

  24.     def login(self):
  25.         """执行登录操作"""
  26.         try:
  27.             # 1. 初始化登录页面,获取 loginhash 和 formhash
  28.             init_url = f'{self.BASE_URL}/member.php?mod=logging&action=login&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login'
  29.             init_resp = self.session.get(init_url)
  30.             
  31.             loginhash_match = re.search(r'loginhash=(.*?)">', init_resp.text)
  32.             formhash_match = re.search(r'formhash" value="(.*?)".*? />', init_resp.text)

  33.             if not loginhash_match or not formhash_match:
  34.                 logger.error(f"[{self.username}] 无法提取 loginhash 或 formhash,可能网络请求异常")
  35.                 return False

  36.             loginhash = loginhash_match.group(1)
  37.             formhash = formhash_match.group(1)

  38.             # 2. 提交登录请求
  39.             login_url = f'{self.BASE_URL}/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash={loginhash}&inajax=1'
  40.             data = {
  41.                 'formhash': formhash,
  42.                 'referer': f'{self.BASE_URL}/forum.php',
  43.                 'loginfield': 'username',
  44.                 'username': self.username,
  45.                 'password': self.password,
  46.                 'questionid': '0',
  47.                 'answer': '',
  48.             }
  49.             
  50.             login_resp = self.session.post(login_url, data=data)
  51.             login_text = login_resp.text

  52.             # 检查登录结果
  53.             if '欢迎您回来' in login_text:
  54.                 user_group_match = re.search(r'欢迎您回来,(.*?),现在', login_text)
  55.                 group_name = user_group_match.group(1) if user_group_match else "未知用户"
  56.                 logger.info(f"[{self.username}] 登录成功,当前状态: {group_name}")
  57.                 return True
  58.             else:
  59.                 # 尝试提取错误信息
  60.                 error_msg = re.search(r"errorhandle_login\('(.*?)',", login_text)
  61.                 msg = error_msg.group(1) if error_msg else "登录失败,原因未知"
  62.                 logger.warning(f"[{self.username}] {msg}")
  63.                 return False

  64.         except Exception as e:
  65.             logger.error(f"[{self.username}] 登录过程发生异常: {e}")
  66.             return False

  67.     def sign_in(self):
  68.         """执行签到操作"""
  69.         try:
  70.             # 1. 获取签到页面的 formhash (登录后的 formhash 可能变化)
  71.             sign_page_url = f'{self.BASE_URL}/k_misign-sign.html'
  72.             sign_page_resp = self.session.get(sign_page_url)
  73.             
  74.             formhash_match = re.search(r'formhash" value="(.*?)".*? />', sign_page_resp.text)
  75.             
  76.             if not formhash_match:
  77.                 logger.error(f"[{self.username}] 无法获取签到页面的 formhash,可能未登录或页面结构变更")
  78.                 return

  79.             formhash = formhash_match.group(1)

  80.             # 2. 发送签到请求
  81.             sign_url = f'{self.BASE_URL}/plugin.php?id=k_misign:sign&operation=qiandao&format=text&formhash={formhash}'
  82.             sign_resp = self.session.get(sign_url)
  83.             
  84.             # 3. 解析签到结果
  85.             # 常见的返回格式可能是 XML: <root><![CDATA[签到成功...]]></root>
  86.             result_match = re.search(r'<root>(?:<!\[CDATA\[)?(.*?)(?:\]\]>)?</root>', sign_resp.text, re.DOTALL)
  87.             
  88.             if result_match:
  89.                 msg = result_match.group(1)
  90.                 logger.info(f"[{self.username}] 签到响应: {msg}")
  91.             else:
  92.                 logger.info(f"[{self.username}] 签到响应原始内容: {sign_resp.text}")

  93.         except Exception as e:
  94.             logger.error(f"[{self.username}] 签到过程发生异常: {e}")

  95.     def run(self):
  96.         """运行流程"""
  97.         if self.login():
  98.             self.sign_in()

  99. # 用户配置列表
  100. USER_LIST = [
  101.     {'username': 'test', 'password': '123456', 'state': 1},
  102.     # {'username': '示例用户', 'password': 'password', 'state': 0}, # state=0 表示不启用
  103. ]

  104. def main():
  105.     logger.info("=== 程序启动 ===")
  106.    
  107.     for user in USER_LIST:
  108.         if user.get('state') != 1:
  109.             logger.info(f"跳过未启用用户: {user['username']}")
  110.             continue

  111.         # 添加随机延迟,模拟人类行为,避免被风控
  112.         delay = random.uniform(1, 3)
  113.         time.sleep(delay)
  114.         
  115.         signer = BinMTSigner(user['username'], user['password'])
  116.         signer.run()

  117.     logger.info("=== 所有任务完成 ===")

  118. if __name__ == '__main__':
  119.     main()
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

688

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
3412
好评
164
信誉
119

考神MT论坛新人MT论坛活跃会员MT论坛帅哥MT论坛灌水老大MT论坛侠客MT论坛最佳新人

发表于 2025-12-23 15:42:12 来自手机  | 显示全部楼层  来自 广东
沙发
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 15:56:36 | 显示全部楼层  来自 重庆

速度也太快了
回复

使用道具 举报

20

主题

4126

回帖

1万

积分

博士生

陨落凡尘

Rank: 7Rank: 7Rank: 7

金币
4688
好评
14
信誉
99

考神MT论坛活跃会员

发表于 2025-12-23 16:01:27 | 显示全部楼层  来自 山东
这个论坛好像是禁止的吧
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 16:10:10 | 显示全部楼层  来自 重庆
海灵 发表于 2025-12-23 16:01
这个论坛好像是禁止的吧

啊 禁止的啊
回复

使用道具 举报

1

主题

3908

回帖

9466

积分

硕士生

Rank: 6Rank: 6

金币
5935
好评
0
信誉
120

MT论坛最佳新人MT论坛帅哥MT论坛新人考神

发表于 2025-12-23 16:16:05 来自手机  | 显示全部楼层  来自 安徽
这个怎么登录账号密码
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 16:17:35 | 显示全部楼层  来自 重庆
744417786 发表于 2025-12-23 16:16
这个怎么登录账号密码

USER_LIST = [
    {'username': 'test', 'password': '123456', 'state': 1},
    # {'username': '示例用户', 'password': 'password', 'state': 0}, # state=0 表示不启用
]
这个地方写就行
回复

使用道具 举报

34

主题

1234

回帖

4071

积分

大学生

Rank: 5Rank: 5

金币
329
好评
3
信誉
100

考神MT论坛帅哥MT论坛新人

发表于 2025-12-23 16:26:15 | 显示全部楼层  来自 四川
和我的差不多的。没啥难度
回复

使用道具 举报

20

主题

4126

回帖

1万

积分

博士生

陨落凡尘

Rank: 7Rank: 7Rank: 7

金币
4688
好评
14
信誉
99

考神MT论坛活跃会员

发表于 2025-12-23 16:27:34 | 显示全部楼层  来自 山东

别的论坛应该没事,本论坛之前封过脚本签到的,小心点,犯不上
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 17:01:05 | 显示全部楼层  来自 重庆
海灵 发表于 2025-12-23 16:27
别的论坛应该没事,本论坛之前封过脚本签到的,小心点,犯不上

okok 感谢提醒
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 17:05:08 | 显示全部楼层  来自 重庆
管理员看到的话 如果违规帮忙删除帖子吧 下次不会了
回复

使用道具 举报

6

主题

823

回帖

1921

积分

禁止发言

金币
379
好评
0
信誉
100

考神MT论坛最佳新人MT论坛帅哥MT论坛新人

发表于 2025-12-23 17:17:02 来自手机  | 显示全部楼层  来自 湖南
感谢分享
回复

使用道具 举报

54

主题

3590

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
795
好评
190
信誉
180

MT论坛新人MT论坛最佳新人MT论坛帅哥考神MT论坛活跃会员挂机大佬

发表于 2025-12-23 17:17:40 来自手机  | 显示全部楼层  来自 陕西
论坛不是禁止自动签到,而是禁止在0点一堆脚本号同时签到,造成服务器瞬时压力大。
https://bbs.binmt.cc/thread-113351-1-1.html
毕竟无法判断你是不是脚本签到,除非太明显。
回复

使用道具 举报

4

主题

170

回帖

759

积分

初中生

Rank: 3Rank: 3

金币
693
好评
6
信誉
110

MT论坛新人考神

发表于 2025-12-23 17:28:18 | 显示全部楼层  来自 重庆
青春向上 发表于 2025-12-23 17:17
论坛不是禁止自动签到,而是禁止在0点一堆脚本号同时签到,造成服务器瞬时压力大。
https://bbs.binmt.cc/t ...

了解了 那就不是俺的问题了哈哈 想起来运行一下就行
回复

使用道具 举报

39

主题

1055

回帖

3686

积分

大学生

Rank: 5Rank: 5

金币
19
好评
3
信誉
107

MT论坛新人考神MT论坛帅哥MT论坛最佳新人

发表于 2025-12-23 17:53:02 来自手机  | 显示全部楼层  来自 香港
可以发下文件吗,网页版复制真的折磨死了,我复制了10分钟都没复制完
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表