这是一个开源的网站访问统计服务,用于替代不蒜子官方统计服务。基于 Spring Boot 3.0 和 Redis 构建,提供高性能、可扩展的网站流量统计功能。
- 📊 多维度统计:网站PV、页面PV、网站UV、页面UV
- 🔄 JSONP兼容:完美兼容原版不蒜子调用方式
- 🐳 容器化部署:支持Docker和Docker Compose一键部署
- ⚡ 高性能:基于Redis内存存储
- Java 17 或更高版本
- Maven 3.6+
- Redis 7.x
- 构建jar包 使用IDEA打开项目,配置好maven,选择prod环境,进行打包,生成jar包
- docker-compose
将生成的jar包,Dockerfile,docker-compose.yml,redis.conf上传到服务器,直接运行
docker-compose up -d
GET /busuanzi/api
X-Referer: https://example.com/page
Authorization: 可选的用户标识响应示例:
{
"site_pv": 1234,
"page_pv": 56,
"site_uv": 789,
"page_uv": 12
}GET /busuanzi/api/getStatistics
X-Referer: https://example.com/pageGET /busuanzi/api/jsonp?jsonpCallback=callback
Referer: https://example.com/page在HTML页面中添加:
<!-- 统计展示元素 -->
<span id="busuanzi_container_site_pv">
本站总访问量 <span id="busuanzi_value_site_pv"></span> 次
</span>
<span id="busuanzi_container_page_pv">
本文总阅读量 <span id="busuanzi_value_page_pv"></span> 次
</span>
<!-- 引入统计脚本 -->
<script src="http://your-domain:10010/busuanzi.js"></script>fetch('http://your-domain:10010/busuanzi/api', {
method: 'GET',
headers: {
'X-Referer': window.location.href
}
})
.then(response => response.json())
.then(data => {
console.log('访问统计:', data);
// 更新页面显示
document.getElementById('pv').textContent = data.site_pv;
});pv:{site_url}- 网站总访问量pv:page:{page_url}- 页面访问量uv:{site_url}- 网站独立访客uv:page:{page_url}- 页面独立访客
- UV去重数据:7天过期
- 统计数据:永久保存
src/main/java/com/yww/busuanzi/
├── BusuanziApplication.java # 启动类
├── api/
│ ├── ApiController.java # API接口
│ └── ApiService.java # 业务逻辑
├── redis/ # Redis配置
├── annotation/ # 权限注解
├── auth/ # 认证授权
├── exception/ # 异常处理
└── util/ # 工具类
A: 检查以下几点:
- 确认Redis连接正常
- 检查Referer请求头是否正确
- 查看应用日志是否有错误
A: 项目已配置CORS支持,确保请求头包含正确的Referer。
A: 直接删除Redis中对应的key即可
- Spring Boot - 优秀的Java框架
- Redis - 高性能内存数据库
- 不蒜子 - 原版统计服务