前言

因为51统计最近一直出现问题,并且有传言称51统计的js文件会出现劫持跳转的问题,于是就想更换统计方式,Umami因此成为我的主要选择。

51统计好的地方在于能够显示出统计挂件,但是有大佬用umami的api也制作出了数据挂件。

参考

张洪HEO:https://blog.zhheo.com/p/61e9.html

木木木木木:https://immmmm.com/hi-umami-api/

教程

  1. 首先搭建属于自己的umami

  2. token可以到搭建好的umami站点,然后打开开发者工具,找到网络中的https://你的域名/api/auth/verify 里的请求头中的authorizationBearer 后面的内容

  3. 网站ID就是后台网站中的比如https://你的域名/websites/0ba3d4b8-95ec-4e33-a727-32b013d6cfa7 ,其中0ba3d4b8-95ec-4e33-a727-32b013d6cfa7就是网站ID

  4. 更改如下代码,并且添加到你需要的位置中

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<div class="tongji">
今日访问人数 <span id="todayUv">0</span> | 今日访问量 <span id="todayPv">0</span> | 本月访问量 <span id="monthPv">0</span> | 总访问量 <span id="totalPv">0</span>
</div>

<script>
document.addEventListener('DOMContentLoaded', () => {
umiTongji();
});

function umiTongji() {
var umiToken = "你的token"; //获取到的 token
var umiId = "网站ID"; //获取到的 websiteId
var umiTime = Date.parse(new Date());
var todayStart = new Date().setHours(0, 0, 0, 0);
var monthStart = new Date(new Date().getFullYear(), new Date().getMonth(), 1).getTime();
var umiUrl = "https://你的域名/api/websites/" + umiId + "/stats?startAt=" + todayStart + "&endAt=" + umiTime;

fetch(umiUrl, {
method: 'GET',
mode: 'cors',
cache: 'default',
headers: {
'Authorization': 'Bearer ' + umiToken,
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(resdata => {
document.querySelector('#todayPv').innerHTML = resdata.pageviews.value;
document.querySelector('#todayUv').innerHTML = resdata.visitors.value;
});

umiUrl = "https://你的域名/api/websites/" + umiId + "/stats?startAt=" + monthStart + "&endAt=" + umiTime;

fetch(umiUrl, {
method: 'GET',
mode: 'cors',
cache: 'default',
headers: {
'Authorization': 'Bearer ' + umiToken,
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(resdata => {
document.querySelector('#monthPv').innerHTML = resdata.pageviews.value;
});

umiUrl = "https://你的域名/api/websites/" + umiId + "/stats?startAt=0&endAt=" + umiTime;

fetch(umiUrl, {
method: 'GET',
mode: 'cors',
cache: 'default',
headers: {
'Authorization': 'Bearer ' + umiToken,
'Content-Type': 'application/json'
}
})
.then(res => res.json())
.then(resdata => {
document.querySelector('#totalPv').innerHTML = resdata.pageviews.value;
});
}
</script>
<style>
#todayUv, #todayPv, #monthPv, #totalPv {
color: #00a0ff;
}
</style>

接着你就可以看到基于umami的数据统计了。