Files
go_blog/ANALYTICS_USAGE.md
T
kevinandClaude Fable 5 da7a39c1c8 feat: implement comprehensive reading analytics system with bot detection
Features:
- Add article view tracking with automatic deduplication (per user/IP)
- Implement intelligent bot detection (35+ patterns: Google, Bing, Baidu, GPTBot, etc)
- Create admin analytics dashboard with statistics and filtering
- Display view count and comment count on article cards
- Add search-based article filter (replaced dropdown for scalability)

Analytics Dashboard:
- Global stats: total views, human/bot views, unique IPs/users
- Top 20 articles ranking with detailed metrics
- Detailed view records with time, article, user, IP, user-agent
- Filters: article title search, IP search, show/hide bots
- Pagination support (50 records per page)

Technical Implementation:
- Async view recording (non-blocking)
- Dual deduplication (application + database layer)
- Database indexes for performance optimization
- Batch query for comment counts
- Full i18n support (Chinese/English)

Files Added:
- models/article_view.go: View tracking model
- models/bot_detector.go: Bot detection logic
- handlers/admin_analytics.go: Analytics page handler
- templates/admin/analytics_views.html: Analytics UI
- test_analytics.sh: Testing script
- Documentation: implementation guide, usage guide, changelog

Files Modified:
- handlers/home.go: Add view recording and comment count queries
- models/db.go: Add ArticleView to auto-migration
- main.go: Add analytics routes
- i18n/i18n.go: Add 35+ translation keys
- templates/admin/dashboard.html: Add analytics entry link
- templates/pages/home.html: Display view/comment counts on cards

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-22 19:57:12 +08:00

243 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 阅读统计系统 - 快速使用指南
## 🚀 立即开始
### 1. 启动应用
```bash
./go_blog
```
首次启动会自动创建 `article_views` 数据库表。
### 2. 访问统计页面
1. 浏览器打开:http://localhost:8080/login
2. 登录(默认账号):`admin` / `admin`
3. 进入后台,点击 **"阅读统计"** 按钮
4. 或直接访问:http://localhost:8080/admin/analytics/views
## 📊 功能说明
### 全局统计(顶部卡片)
- **总阅读量**:所有访问记录数
- **真人阅读**:排除爬虫的真实用户访问
- **爬虫访问**:被识别为爬虫的访问数
- **独立IP**:访问过的不同IP地址数量
- **独立用户**:已登录用户的数量
### 文章排行榜
- 显示阅读量最高的前20篇文章
- 每篇显示:总阅读、真人阅读、爬虫访问、独立IP
### 详细访问记录
每条记录显示:
- **时间**:访问时间(精确到分钟)
- **文章**:文章标题(可点击跳转)
- **用户**:登录用户名或"匿名用户"
- **IP地址**:访客IP
- **User-Agent**:浏览器信息
- **类型**:👤真人 或 🤖爬虫(橙色高亮)
### 筛选功能
- **按文章筛选**:下拉选择特定文章
- **按IP筛选**:输入IP地址(支持部分匹配)
- **显示爬虫**:勾选后包含爬虫流量
## 🤖 爬虫识别
系统自动识别以下类型的爬虫:
### 搜索引擎
- Google (Googlebot)
- Bing (Bingbot)
- Baidu (Baiduspider)
- Yandex (Yandexbot)
- DuckDuckGo (Duckduckbot)
### 社交媒体
- Facebook (Facebookexternalhit, Facebot)
- Twitter (Twitterbot)
- LinkedIn (Linkedinbot)
- Telegram
- WhatsApp
### AI爬虫
- GPTBot (OpenAI)
- ClaudeBot (Anthropic)
- 字节跳动 (Bytespider)
### SEO工具
- Ahrefs
- SEMrush
- Moz (Dotbot)
- Dataforseo
### 其他
- 无头浏览器 (Headless, Phantom, Puppeteer, Selenium)
- 网页归档 (Archive.org_bot)
## 🎯 测试统计功能
### 方法1:运行测试脚本
```bash
./test_analytics.sh
```
该脚本会:
- 检查应用状态
- 模拟不同User-Agent的访问
- 生成测试数据
- 验证数据库记录
### 方法2:手动测试
1. 访问几篇已发布的文章
2. 刷新页面(不会重复计数)
3. 使用不同浏览器访问(会记录为不同IP)
4. 查看后台统计
### 方法3:用curl模拟爬虫
```bash
# 模拟GoogleBot
curl -H "User-Agent: Googlebot/2.1" http://localhost:8080/article/your-article-slug
# 模拟BingBot
curl -H "User-Agent: bingbot/2.0" http://localhost:8080/article/your-article-slug
# 正常浏览器
curl -H "User-Agent: Mozilla/5.0 (Macintosh)" http://localhost:8080/article/your-article-slug
```
## ✨ 核心特性
### 自动去重
- 同一IP+用户组合只记录一次
- 刷新页面不会重复计数
- 双重保护:应用层+数据库层
### 异步记录
- 不阻塞页面加载
- 后台goroutine处理
- 即使记录失败也不影响用户体验
### 性能优化
- 数据库索引优化
- 分页加载(50条/页)
- 异步处理
### 国际化
- 完整中英文支持
- 自动语言切换
## 📁 相关文件
### 新建文件
- `models/article_view.go` - 数据模型
- `models/bot_detector.go` - 爬虫检测
- `handlers/admin_analytics.go` - 统计handler
- `templates/admin/analytics_views.html` - 统计页面
- `test_analytics.sh` - 测试脚本
### 修改文件
- `handlers/home.go` - 添加记录逻辑
- `models/db.go` - 数据库迁移
- `main.go` - 路由配置
- `i18n/i18n.go` - 翻译
- `templates/admin/dashboard.html` - 入口链接
## 🔧 高级配置
### 查询数据库(SQLite
```bash
sqlite3 tmp/blog.db
# 查看所有访问记录
SELECT * FROM article_views ORDER BY created_at DESC LIMIT 10;
# 统计真人和爬虫访问
SELECT is_bot, COUNT(*) FROM article_views GROUP BY is_bot;
# 查看独立IP数
SELECT COUNT(DISTINCT ip) FROM article_views;
# 某篇文章的访问统计
SELECT COUNT(*) FROM article_views WHERE article_id = 1;
```
### 清空统计数据
```bash
sqlite3 tmp/blog.db "DELETE FROM article_views;"
```
## 💡 使用建议
### 日常使用
1. **定期查看**:每周查看一次统计数据
2. **关注真人阅读**:爬虫访问仅供参考
3. **分析热门文章**:根据排行榜优化内容
4. **识别可疑IP**:发现异常流量
### 数据维护
1. **定期备份**:备份数据库文件
2. **归档旧数据**:超过6个月的数据可以归档
3. **监控存储**:注意数据库大小
### 隐私保护
- IP地址完整记录,考虑是否需要脱敏
- User-Agent信息敏感,注意保护
- 遵守当地隐私法规(如GDPR
## 🐛 故障排查
### 问题1:看不到访问记录
**原因**:可能还没有人访问文章
**解决**:访问几篇已发布的文章,等待几秒后刷新统计页面
### 问题2:统计页面显示0
**原因**
- 数据库迁移未执行
- article_views表不存在
**解决**
```bash
# 停止应用
pkill go_blog
# 重新启动(会自动迁移)
./go_blog
```
### 问题3:所有访问都被标记为爬虫
**原因**curl或工具的User-Agent被识别为爬虫
**解决**:使用真实浏览器访问
### 问题4:访问页面返回404
**原因**:路由未正确配置
**检查**
```bash
# 查看路由列表
grep "analytics/views" main.go
```
## 📈 未来扩展
可以考虑添加的功能:
1. 📊 图表可视化(访问趋势图)
2. 🌍 地理位置分析(IP定位)
3. 📱 设备统计(移动端/桌面端)
4. ⏰ 访问时段分析(热门时间)
5. 📊 导出功能(CSV/Excel
6. 🔔 实时监控(WebSocket
7. 📧 定期报告(邮件通知)
## 📞 支持
遇到问题?
1. 查看 `ANALYTICS_IMPLEMENTATION.md` 详细文档
2. 检查应用日志
3. 运行测试脚本 `./test_analytics.sh`
---
**就这么简单!** 🎉
现在你的博客已经拥有了专业的阅读统计系统,可以深入了解读者行为,优化内容策略!