字
字节笔记本
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 论坛账号并登录
安装步骤
- 安装 Tampermonkey 浏览器扩展
- 创建新脚本,复制
src/linuxdo-automation.user.js内容 - 保存并启用脚本
- 访问 https://linux.do 并登录
- 页面右上角会出现紫色控制面板
- 点击"开始自动浏览"即可启动
快速开始
启动后,脚本会自动判断页面类型并执行相应操作:
text
启动 → 判断页面类型
↓
┌────┴────┐
↓ ↓
话题列表 帖子详情
↓ ↓
滚动加载 标记已浏览
找未浏览 滚动看回复
点击进入 随机点赞
↓ ↓
└────┬────┘
↓
循环继续使用示例
基础用法
- 访问 Linux.do 论坛首页
- 点击控制面板上的"开始自动浏览"按钮
- 脚本会自动浏览话题列表,点击进入未浏览的帖子
- 在帖子页面滚动浏览所有回复
- 完成后自动返回列表继续下一个话题
配置参数
脚本提供灵活的配置选项:
| 配置项 | 说明 | 默认值 |
|---|---|---|
| 浏览间隔 | 话题之间的等待时间 | 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 Token | meta[name="csrf-token"] |
| 登录状态 | #current-user |
数据存储
脚本使用 localStorage 存储以下数据:
| Key | 说明 |
|---|---|
linuxdo_viewed_topics | 已浏览话题 ID 列表 (JSON 数组) |
linuxdo_liked_posts | 已点赞帖子 ID 列表 (JSON 数组) |
linuxdo_auto_running | 自动运行状态 (用于页面跳转后恢复) |
注意事项
- 仅供学习研究使用
- 请遵守 Linux.do 网站使用条款
- 建议使用保守配置避免触发速率限制
- 不得用于商业或恶意目的
- 频繁操作可能触发 429 错误(速率限制)
- 长时间运行可能被检测为异常行为
- 部分功能需要特定用户等级权限
项目链接
- GitHub 仓库:https://github.com/xiaowanjiagit/linuxdo
- 网站分析报告:docs/linux.do-analysis.md
- 实现方案文档:docs/implementation-plan.md
- 使用指南:docs/usage-guide.md
许可证
MIT License - 仅供学习研究使用
分享: