基于 Chrome MCP 研究分析的 Linux.do 论坛自动化浏览工具。
- 无限滚动支持 - 自动滚动加载更多内容
- 浏览记录管理 - 已浏览帖子标记,避免重复
- 完整回复浏览 - 滚动到底部浏览所有回复
- 自动循环 - 浏览完成后自动返回列表继续下一个
- 视觉标记 - 已浏览话题显示绿色勾号
linuxdo/
├── README.md # 项目说明
├── docs/
│ ├── linux.do-analysis.md # 网站结构分析报告
│ ├── implementation-plan.md # 实现方案详细文档
│ └── usage-guide.md # 使用指南
└── src/
├── linuxdo-automation.user.js # 油猴脚本 (主要功能)
├── hooks/ # 调试Hook脚本
│ ├── xhr-hook.js # XHR请求监控
│ ├── fetch-hook.js # Fetch请求监控
│ ├── cookie-hook.js # Cookie读写监控
│ ├── debugger-bypass.js # 反调试绕过
│ └── dom-observer.js # DOM变化监控
└── utils/ # 工具脚本
├── discourse-api.js # Discourse API封装
└── page-analyzer.js # 页面分析工具
- 自动浏览话题列表 - 支持 /latest, /new, /unread, /top, /hot 等页面
- 无限滚动加载 - 自动滚动加载更多话题和回复
- 智能去重 - 已浏览帖子标记存储,避免重复浏览
- 完整回复浏览 - 帖子详情页滚动浏览所有回复直到底部
- 自动循环 - 浏览完成后自动返回列表继续下一个未浏览话题
- 随机点赞 - 按概率随机点赞,带间隔控制
- 可视化控制面板 - 实时显示状态和统计数据
- 视觉标记 - 已浏览话题显示绿色勾号,透明度降低
- 配置灵活 - 所有参数可调整
- 安装 Tampermonkey 浏览器扩展
- 创建新脚本,复制
src/linuxdo-automation.user.js内容 - 保存并启用脚本
- 访问 https://linux.do 并登录
- 页面右上角会出现紫色控制面板
- 点击"开始自动浏览"
启动 → 判断页面类型
↓
┌────┴────┐
↓ ↓
话题列表 帖子详情
↓ ↓
滚动加载 标记已浏览
找未浏览 滚动看回复
点击进入 随机点赞
↓ ↓
└────┬────┘
↓
循环继续
- 论坛系统: Discourse (开源论坛软件)
- 认证方式: Cookie + CSRF Token
- API风格: RESTful JSON API
- 实时通信: Message Bus 长轮询
| 功能 | 实现方式 |
|---|---|
| 点赞 | 点击 button[title="点赞此帖子"] |
| 帖子识别 | article[id^="post_"] |
| CSRF Token | meta[name="csrf-token"] |
| 登录检测 | #current-user 元素存在 |
- 仅供学习研究使用
- 请遵守网站使用条款
- 建议使用保守配置避免触发限制
- 不得用于商业或恶意目的
项目包含多个调试工具,可在浏览器控制台中使用:
// 1. XHR监控 - 监控所有XMLHttpRequest请求
// 复制 src/hooks/xhr-hook.js 内容到控制台执行
getXhrLog() // 查看请求日志
clearXhrLog() // 清除日志
// 2. Fetch监控 - 监控所有Fetch API请求
// 复制 src/hooks/fetch-hook.js 内容到控制台执行
getFetchLog() // 查看请求日志
clearFetchLog() // 清除日志
// 3. Cookie监控 - 监控Cookie读写
// 复制 src/hooks/cookie-hook.js 内容到控制台执行
getCookieLog() // 查看Cookie操作日志
parseCookies() // 解析当前所有Cookie
// 4. DOM监控 - 监控页面DOM变化
// 复制 src/hooks/dom-observer.js 内容到控制台执行
startDomObserver('#topic') // 开始观察指定元素
stopDomObserver() // 停止观察
getDomLog() // 查看变化日志// 1. Discourse API工具
// 复制 src/utils/discourse-api.js 内容到控制台执行
await discourseAPI.getLatestTopics() // 获取最新话题
await discourseAPI.getTopic(123456) // 获取话题详情
await discourseAPI.likePost(789) // 点赞帖子
await discourseAPI.getCurrentUser() // 获取当前用户信息
await discourseAPI.search('关键词') // 搜索
// 2. 页面分析工具
// 复制 src/utils/page-analyzer.js 内容到控制台执行
pageAnalyzer.printReport() // 打印完整分析报告
pageAnalyzer.getPageInfo() // 获取页面基本信息
pageAnalyzer.analyzeTopicPage() // 分析帖子页面
pageAnalyzer.findLikeButtons() // 查找所有点赞按钮
pageAnalyzer.getScrollInfo() // 获取滚动状态- 目标平台: Discourse 论坛系统
- 实现方式: Tampermonkey 用户脚本
- API风格: RESTful JSON
- 认证方式: Cookie + CSRF Token
| 元素 | 选择器 |
|---|---|
| 点赞按钮 | 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 |
自动运行状态 (用于页面跳转后恢复) |
如需添加新功能,可参考以下步骤:
- 使用 Hook 脚本分析目标功能的网络请求
- 使用页面分析工具定位 DOM 元素
- 参考
discourse-api.js封装新的 API 调用 - 在主脚本中添加新功能模块
- 网站可能更新页面结构,导致选择器失效
- 频繁操作可能触发速率限制 (429 错误)
- 长时间运行可能被检测为异常行为
- 部分功能需要特定用户等级权限
- 重构 - 完全重写滚动和浏览逻辑
- 新增 - 无限滚动支持,自动加载更多内容
- 新增 - 浏览记录管理,避免重复浏览
- 新增 - 完整回复浏览,滚动到底部加载所有回复
- 新增 - 自动返回列表继续下一个话题
- 新增 - 视觉标记(已浏览话题显示绿色勾号)
- 新增 - 清除浏览记录功能
- 优化 - 更智能的内容加载检测
- 优化 - 控制面板显示更多统计信息
- 初始版本
- 实现自动浏览话题列表
- 实现帖子页面自动滚动
- 实现随机点赞功能
- 添加可视化控制面板
- 添加调试工具集
MIT License - 仅供学习研究