本文最后更新于:2024年5月7日 下午
Umami 统计工具可以方便地统计站点访问信息,相关数据可以通过自带的 API 访问,本文记录使用方法。
背景
- 需要建立 Umami 站点统计 网站统计工具 Umami 安装部署教程
- 官方支持 API 直接访问数据
- 官方文档: https://umami.is/docs/api
- 可以用 Node.js 或其他发送 Post 请求的应用。
- 如果使用 Node.js,需要配置 Node.js 运行环境,并创建可执行 Node 代码的工程 Node.js 在 VS Code 中发送 POST 请求
认证
- 在执行大部分 API 之前需要向 Umami 做身份认证,拿到相应身份的 token
- 之后使用该 token 执行 API,因此认证是前提
官方文档
1 |
|
操作方法
Node.js
-
工程中新建
login.js
文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30var request = require('request');
var url="http://<your.umami.website>/api/auth/login";
var requestData={
"username": "admin",
"password": "xxxxxxxx"
};
httprequest(url,requestData);
function httprequest(url,data){
console.log("hello world")
request({
url: url,
method: "POST",
json: true,
headers: {
"content-type": "application/json",
},
body: requestData
}, function(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}else{
console.log("failed")
console.log(response.statusCode)
console.log(error)
}
});
};
Python
- 新建
login.py
文件
1 |
|
- 一定要加入 Headers
运行结果
-
将
<your.umami.website>
替换成你的 Umami url -
运行就完了
成功后返回该用户的 token
1
2
3
4{
token: 'eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ',
user: { user_id: 1, username: 'admin', is_admin: true }
}
执行 API
- 拿到 token 后就可以执行 Umami 的 API 了
- 需要在 headers 中加入:
1 |
|
- 这里以
Websites
,website/{id}/stats
和active
为例提供示例代码,供大家参考
注意: 1.39 以后的版本
website/{id}/stats
变为websites/{website-uuid}/stats
Websites
- 该 API 可以返回 Umami 追踪的网站列表
Node.js
-
创建
websites.js
文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29var request = require('request');
var url="http://<your.umami.website>/api/websites";
var requestData={};
var headers={
"Accept": "application/json",
"Authorization": "Bearer eyJlbmMiOiJBMTI4Q0JDLUhTMjU2IiwiYWsadfkjasldkfj23405ujSDF654GD654asas6fdGSDGIUHOI453zTxZ0RMmJribpKsPAULlxDaiZQIUlrHU7Bo1S8u8hBrNUQ.Q2N4QfMFqHd7W2Pn0CYSNw.ps2KCcN4jnNVngJymTeHmUVhV9PBeMOmAH1Z3Qf11gKEMvQrSXGcWfgHJV188HmLZF_K3AlTIMl7Kf22HG8UI8VjwreMNQ_8BJ6s4zi8xB3ogBUr_DxXFqItRBnmNQH_fpS6AQvtgNA3mRq9ibOQMxCVio07R175BR2QzzxpeyDnhpMmqpW7cuZCD5DiiM4EOhXOaCnYkjRbl6NiXyQ.thwo7wexr3Vk3PSnSEXgyQ"
}
httprequest(url,requestData);
function httprequest(url,data){
console.log("hello world")
request({
url: url,
method: "GET",
json: true,
headers: headers,
body: requestData
}, function(error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // 请求成功的处理逻辑
}else{
console.log("failed")
console.log(response.statusCode)
console.log(error)
}
});
};
Python
1 |
|
运行结果
-
将
<your.umami.website>
替换成你的 Umami url -
运行成功后返回
1
2
3
4
5
6
7
8
9
10
11[
{
website_id: 1,
website_uuid: 'bd554kgfh1-xxxx-xxxx-xxxx-8sdf5uc0',
name: '又见苍岚',
created_at: '2022-07-15T01:16:31.266Z',
user_id: 1,
domain: 'www.zywvvd.com',
share_id: 'r5xxxxxZ'
}
]
website/{id}/stats
高版本
websites/{website-uuid}/stats
站点访问统计
- 该 API 可以返回站点统计信息,也就是核心需求
Node.js
- 创建
status.js
文件
1 |
|
Python
1 |
|
运行结果
-
将
<your.umami.website>
替换成你的 Umami url -
对于高版本 Umami 用户,
<your uuid of website>
需要替换成网站 uuid -
注意: 高版本的 API 是
websites
, 低版本的是website
,官方代码改了但是文档没写!!! -
运行成功后返回
start_at
到end_at
时间段内的站点访问数量 -
时间以 1970年1月1日起算的毫秒数计量
-
运行成功后返回
1
2
3
4
5
6{
pageviews: { value: 3595, change: 3595 },
uniques: { value: 1536, change: 1536 },
bounces: { value: 1495, change: 1495 },
totaltime: { value: 260752, change: 260752 }
}
链接访问统计
-
也可以用上述代码统计指定链接
-
只需在 url 后面家上参数即可
1
&url=<target url>
-
示例 url
1
var url="http://<your.umami.website>/api/website/1/stats?start_at=1350679719687&end_at=1990039038644&url=/";
表示访问我的主页的统计信息
-
成功后返回
1
2
3
4
5
6{
pageviews: { value: 440, change: 440 },
uniques: { value: 192, change: 192 },
bounces: { value: 249, change: 249 },
totaltime: { value: 43290, change: 43290 }
}
当前活跃用户数量
-
url 替换为
1
http://<your.umami.website>/api/website/<id>/active
-
即可
-
其中
<id>
为网站编号 -
正常运行时返回值:
1 |
|
表示当前有一位活跃用户
其他 API
-
Docker 部署项目的话可以进入容器中
1
docker exec -it umami_umami_1 sh
-
进入目录
/app/.next/server/pages/api
查看相关可执行的 api 接口(文档写的不是所有 API) -
也可以查阅 官方文档
参考资料
文章链接:
https://www.zywvvd.com/notes/tools/umami/umami-api/umami-api/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付