AcoFork 旧站归档 · 第 13 次重构 · 已归档,仅供怀旧展示

AcoFork Blog Z

使用Zola构建的个人博客,分享网络技术、服务器部署、内网穿透、静态网站搭建、CDN优化、容器化部署等技术教程与实践经验的个人技术博客,专注于云原生、无服务器架构和前后端开发,作者为afoim/二叉树树


静态博客也想展示文章浏览量?当然可以!

2025-06-18

如果你用过WordPress,Halo等动态博客框架,你大概会在用户视角访问博文的时候看到浏览量这个信息。

这个原理很简单,因为动态博客依赖于一个VPS,只需要让用户每次访问的时候给浏览量+1即可。

那么如果我们是静态博客呢?

我们可以依赖一些第三方服务,比如Umami Cloud。在你的静态博客的head注入一个js,这样你就可以看到你的站点分析了,类似下图

现在我们确实可以看到每个文章(即/posts/xxx)的访问量了,但是我们要如何展示给用户呢?

逆向Umami的只读页面!

感谢nightNya提供的方案,你是天才!

首先我们启用分享URL

注意这里的 7PoDRgCzHFTs2vWB ,每个站点都不一样

接着我们请求 https://us.umami.is/api/share/7PoDRgCzHFTs2vWB,得到

{
  "websiteId": "a66a5fd4-98b0-4108-8606-cb7094f380ac",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3ZWJzaXRlSWQiOiJhNjZhNWZkNC05OGIwLTQxMDgtODYwNi1jYjcwOTRmMzgwYWMiLCJpYXQiOjE3NTA4MDIwMzB9.X5GQT5kslh6r25sFlap4Asz1NDA7mN3kcZW8wqbrnBc"
}

再接着我们请求,携带请求头 x-umami-share-token 值为上一步获得的Token

https://us.umami.is/api/websites/a66a5fd4-98b0-4108-8606-cb7094f380ac/stats?startAt=0&endAt=1750805999999&unit=hour&timezone=Asia/Hong_Kong&url=/posts/cf-fastip/&compare=false

这里解释几个关键Params,其他的照搬

你会得到

{
    "pageviews": {
        "value": 1655,
        "prev": 0
    },
    "visitors": {
        "value": 343,
        "prev": 0
    },
    "visits": {
        "value": 411,
        "prev": 0
    },
    "bounces": {
        "value": 183,
        "prev": 0
    },
    "totaltime": {
        "value": 30592,
        "prev": 0
    }
}

pageviews.vlaue 即浏览量。 visits.value 即访问次数。

Tips:浏览量记录为任意用户只要访问了则计数一次。而访问数记录不会记录单IP多次重复访问和同一时间段的多次请求不同页面

Enjoy it!

最终效果:

标签: Cloudflare, Umami