永久免费 · 开源轻量

两行代码
搞定网站统计

极简网页计数器,支持 PV / UV 双模式统计。Go + SQLite 驱动,轻量、高效、隐私友好。

index.html
<!-- 1. 引入脚本 --> <script async src="//suanzi.cakepanit.com/js/suanzi.min.js"></script> <!-- 2. 放置容器 --> <span id="suanzi_container_site_pv"> 本站总访问量 <span id="suanzi_value_site_pv"></span></span>
已服务站点
--
累计 PV
--
累计 UV
--

为什么选择蒜子?

没有复杂的配置,没有隐藏的收费。两行代码,即刻拥有。

极简接入

两行代码,1 分钟搞定。无需注册,无需配置,无需后端。

📊

PV / UV 双模式

站点总访问量、独立访客数、单页面阅读量,灵活选择。

🔒

隐私友好

不收集个人隐私,不追踪用户行为,仅做基础的计数统计。

🛡️

防刷机制

Referer 域名校验 + 内网 IP 过滤 + UV 每日去重。

🚀

高性能

Go + SQLite 驱动,轻量高效,单机轻松应对高并发。

💚

永久免费

无隐藏费用,无流量限制,社区维护,放心使用。

它是如何工作的?

简单四步,从页面加载到数据展示。

1

页面加载脚本

浏览器加载 suanzi.min.js,自动生成用户 UUID 并存入 Cookie(有效期 1 年)。

2

上报统计数据

调用 POST /api/count 接口,携带 domain、uuid 和需要的统计类型。

3

后端处理

Go 服务接收请求,查询 SQLite 数据库,UV 每日去重,PV 自动联动 site_pv。

4

回填页面

前端接收响应,将计数值回填到对应的 span 标签,带格式化千位分隔符。

接口说明

统一的 POST /api/count 接口,根据 types 参数返回不同统计数据。

// 请求 — 站点级别统计 POST /api/count Content-Type: application/json { "domain": "example.com", "uuid": "xxx-xxx-xxx", "types": ["site_pv", "site_uv"] } // 响应 { "counts": { "site_pv": 1234, "site_uv": 567 } }
// 请求 — 页面级别统计(自动联动 site_pv) POST /api/count Content-Type: application/json { "domain": "example.com", "uuid": "xxx-xxx-xxx", "path": "/article/123", "types": ["page_pv"] } // 响应 { "counts": { "page_pv": 89 } }
💡

安全机制:Referer 域名校验 — 请求来源必须与 domain 参数一致。 内网过滤 — 自动忽略 127.0.0.1、localhost 及 10.x / 172.16-31.x / 192.168.x 网段。 UV 去重 — 同一用户每天只计 1 次 UV。