字节笔记本

2026年2月23日

Linux.do 自动浏览助手 - Discourse 论坛自动化工具

本文介绍 Linux.do 自动浏览助手,一个基于 Chrome MCP 研究开发的 Discourse 论坛自动化浏览工具。该工具通过 Tampermonkey 脚本实现自动浏览话题、智能去重、随机点赞等功能,帮助用户高效浏览 Linux.do 论坛内容。

项目简介

Linux.do 自动浏览助手 v2 是一个开源的浏览器自动化工具,专为 Linux.do 论坛设计。该项目在 GitHub 上已获得 47 stars 和 23 forks,采用纯 JavaScript 编写。工具通过油猴脚本(Tampermonkey)实现,无需安装额外软件,即装即用。

核心特性

  • 自动浏览话题列表:支持 /latest、/new、/unread、/top、/hot 等页面自动浏览
  • 无限滚动加载:自动滚动加载更多话题和回复内容
  • 智能去重机制:已浏览帖子标记存储,避免重复浏览相同内容
  • 完整回复浏览:帖子详情页自动滚动浏览所有回复直到底部
  • 自动循环浏览:浏览完成后自动返回列表继续下一个未浏览话题
  • 随机点赞功能:按概率随机点赞,带间隔控制避免频繁操作
  • 可视化控制面板:实时显示浏览状态和统计数据
  • 视觉标记系统:已浏览话题显示绿色勾号,透明度降低便于识别

技术栈

  • 目标平台:Discourse 论坛系统
  • 实现方式:Tampermonkey 用户脚本
  • 编程语言:JavaScript (100%)
  • API 风格:RESTful JSON API
  • 认证方式:Cookie + CSRF Token
  • 数据存储:localStorage

安装指南

前置要求

  • 支持 Tampermonkey 的浏览器(Chrome、Firefox、Edge、Safari)
  • Linux.do 论坛账号并登录

安装步骤

  1. 安装 Tampermonkey 浏览器扩展
  2. 创建新脚本,复制 src/linuxdo-automation.user.js 内容
  3. 保存并启用脚本
  4. 访问 https://linux.do 并登录
  5. 页面右上角会出现紫色控制面板
  6. 点击"开始自动浏览"即可启动

快速开始

启动后,脚本会自动判断页面类型并执行相应操作:

text
启动 → 判断页面类型
         ↓
    ┌────┴────┐
    ↓         ↓
  话题列表   帖子详情
    ↓         ↓
 滚动加载   标记已浏览
 找未浏览   滚动看回复
 点击进入   随机点赞
    ↓         ↓
    └────┬────┘
         ↓
      循环继续

使用示例

基础用法

  1. 访问 Linux.do 论坛首页
  2. 点击控制面板上的"开始自动浏览"按钮
  3. 脚本会自动浏览话题列表,点击进入未浏览的帖子
  4. 在帖子页面滚动浏览所有回复
  5. 完成后自动返回列表继续下一个话题

配置参数

脚本提供灵活的配置选项:

配置项说明默认值
浏览间隔话题之间的等待时间3000ms
点赞概率随机点赞的几率30%
滚动速度页面滚动速度中等

清除浏览记录

如需重新浏览已查看的话题,可在控制面板点击"清除记录"按钮,或手动清除 localStorage:

javascript
localStorage.removeItem('linuxdo_viewed_topics');
localStorage.removeItem('linuxdo_liked_posts');

调试工具

项目包含多个调试工具,可在浏览器控制台中使用:

Hook 脚本

javascript
// XHR 监控 - 监控所有 XMLHttpRequest 请求
// 复制 src/hooks/xhr-hook.js 到控制台执行
getXhrLog()     // 查看请求日志
clearXhrLog()   // 清除日志

// Fetch 监控 - 监控所有 Fetch API 请求
getFetchLog()   // 查看请求日志
clearFetchLog() // 清除日志

// Cookie 监控 - 监控 Cookie 读写
getCookieLog()  // 查看 Cookie 操作日志
parseCookies()  // 解析当前所有 Cookie

// DOM 监控 - 监控页面 DOM 变化
startDomObserver('#topic')  // 开始观察指定元素
stopDomObserver()           // 停止观察
getDomLog()                 // 查看变化日志

工具脚本

javascript
// Discourse API 工具
await discourseAPI.getLatestTopics()  // 获取最新话题
await discourseAPI.getTopic(123456)   // 获取话题详情
await discourseAPI.likePost(789)      // 点赞帖子
await discourseAPI.getCurrentUser()   // 获取当前用户信息
await discourseAPI.search('关键词')    // 搜索

// 页面分析工具
pageAnalyzer.printReport()      // 打印完整分析报告
pageAnalyzer.getPageInfo()      // 获取页面基本信息
pageAnalyzer.analyzeTopicPage() // 分析帖子页面
pageAnalyzer.findLikeButtons()  // 查找所有点赞按钮
pageAnalyzer.getScrollInfo()    // 获取滚动状态

技术实现细节

关键选择器

元素选择器
点赞按钮button[title="点赞此帖子"]
帖子容器article[id^="post_"]
话题链接a[href*="/t/topic/"]
话题行.topic-list-item, tr[data-topic-id]
CSRF Tokenmeta[name="csrf-token"]
登录状态#current-user

数据存储

脚本使用 localStorage 存储以下数据:

Key说明
linuxdo_viewed_topics已浏览话题 ID 列表 (JSON 数组)
linuxdo_liked_posts已点赞帖子 ID 列表 (JSON 数组)
linuxdo_auto_running自动运行状态 (用于页面跳转后恢复)

注意事项

  • 仅供学习研究使用
  • 请遵守 Linux.do 网站使用条款
  • 建议使用保守配置避免触发速率限制
  • 不得用于商业或恶意目的
  • 频繁操作可能触发 429 错误(速率限制)
  • 长时间运行可能被检测为异常行为
  • 部分功能需要特定用户等级权限

项目链接

许可证

MIT License - 仅供学习研究使用

分享: