这是一个用于自动浏览 linux.do 论坛的 Node.js 项目,使用 Playwright 实现浏览器自动化,模拟真实用户行为完成日常浏览任务。
- 运行时: Node.js 20+
- 语言: TypeScript
- 自动化框架: Playwright
- 进程管理: PM2 (生产环境)
linux-do-auto/
├── src/
│ ├── index.ts # 主入口
│ ├── config.ts # 配置文件
│ ├── scheduler.ts # 时间调度器
│ ├── browser.ts # 浏览器引擎
│ ├── humanizer.ts # 人性化行为模块
│ ├── actions.ts # 具体操作
│ ├── login.ts # 登录脚本
│ └── logger.ts # 日志模块
├── storage/
│ └── state.json # 登录状态
├── logs/ # 日志目录
├── docs/
│ └── design.md # 设计文档
├── package.json
├── tsconfig.json
└── CLAUDE.md # 本文件
# 安装依赖
npm install
# 首次登录(交互模式,会打开浏览器让你手动登录)
npm run login
# 开发模式运行
npm run dev
# 构建 TypeScript
npm run build
# 生产模式运行
npm start配置文件位于 src/config.ts,主要配置项:
activeHours: 活跃时段(默认 9:00-18:00)dailyTargets: 每日浏览目标interaction: 互动概率(点赞、回复)delays: 各种延迟参数
- 登录状态保存在
storage/state.json - 首次使用需要运行
npm run login手动登录 - 状态过期后需要重新登录
- 使用 TypeScript 严格模式
- 使用 async/await 处理异步
- 所有延迟使用 humanizer 模块的随机函数
- 日志使用 logger 模块
- 不要硬编码延迟时间,使用 humanizer 模块的随机函数
- 不要频繁请求,保持人性化的访问频率
- 处理异常情况,网络错误、页面加载失败等
- 保护登录凭证,不要提交
storage/state.json到 Git
以下文件/目录不应提交到 Git:
node_modules/dist/storage/logs/.env
重要: 每次完成任务后,请确认是否需要:
-
提交代码到 Git
git add . git commit -m "描述你的更改"
-
推送到远程仓库
git push origin main
请在每次任务结束时询问用户是否需要执行这些操作。