Umami UV / PV 统计显示
本文最后更新于 2024年5月13日 14:55
Umami 官方文档并没有提供 UV 和 PV 展示的 API,但是我们可以通过 Umami 的访客 API 获取到网站的访问量和访问人数。
本文将介绍如何通过 Umami 的 API 获取网站的 UV 和 PV 数据,并在页面上展示。
这是本站的 Umami 访问统计页面,显示了每日的访问量和访问人数,链接:https://umami.ovvv.top/share/SYu8qUKmty52PW9w/blog

我们在前文介绍过如何安装 Umami:Umami 安装使用教程
下面我们将新建用户,通过 Umami 的 API 调用,编写一个简单的页面来显示 Umami 的 UV, PV 访问情况。本文使用类似于 postman 的 API 测试工具来发送 GET, POST 请求。你也可以使用 hoppscotch、curl 等工具。
1. 新建 View only 权限的用户
点击 Settings -> 点击 Users -> 点击 Create user -> 填写账号密码,Role 选择 View only -> 点击 Save

肯定有读者很疑惑,为什么不直接调用 Umami 的 API 获取数据,而是要额外创建一个账户。
因为我的博客是 静态开源无服务器 的,所有代码都展示在前端,包括 API 调用。而 Umami 的 admin API 权限太大了[1],如果使用 admin 权限的 API Token,那么这个 token 可以获取、修改、删除所有网站的数据,会有严重的安全隐患。
所以我们需要创建一个 View only 权限的用户,使用这个 低权限的用户的 API Token 来访问我们的浏览量等数据。
2. 新建 Team 并添加用户和网站
点击 Settings -> 点击 Teams -> 点击 Create team -> 填写名称 -> 点击 Save
Teams 中选择你刚创建的 Team 点击 view -> 复制 Access code,点击 Websites,点击 Add website 添加你想共享的网站。

如果你的网站之前属于个人账户,那么你可以将其转移到团队账户上。
换一个浏览器登录 Umami(使用 View only 权限的用户) -> Settings -> Teams -> Join team -> 输入 Access code -> Join -> 如果没有出错的话,点击 Dashboard 就可以看到你刚刚添加的网站了。
3. 获取 View only 用户的 API Token
根据 Umami 的文档[2],我们可以通过以下方式获取 API Token:
1 | |
例如 你的网站地址为 example.com,那么你需要使用 View only 的账户密码向 https://example.com/api/auth/login 发送一个 POST 请求,请求体为:
1 | |
如果成功,你应该会得到以下的结果:
1 | |
保存 token 值,并在所有请求中发送带 Bearer <token> 值的 Authorization 标头。请求标头应该如下所示:
1 | |
4. 发送请求获取数据
先分析一下官方文档的 API 接口[3]:GET /api/websites/{websiteId}/stats
有两个必填的 查询参数:startAt 和 endAt,都是 Unix 毫秒时间戳,表示开始时间和结束时间
websiteId 和 startAt 需要我们自己获取
websiteId 可以在 Dashboard -> 点击你网站的 View details -> 浏览器栏的地址 https://example.com/websites/{websiteId} 中找到 {websiteId}
startAt 可发送 GET 请求到 https://example.com/api/websites/{websiteId},带上上文获取的请求头
1 | |
在返回结果中找到 createdAt 字段,这个字段就是 startAt 的值,也就是你的网站创建时间,数据的开始时间
5. 编写页面

代码是看到木木的博客[4]而有灵感,而评论区下面的 Nick[5] 提供了相对正确的思路,我在他代码的基础上进行了改进,如删除无用的参数和优化步骤等。代码如下,修改你对应的参数即可运行:
1 | |