访客统计模块

访客统计模块

GitHub Pages 是纯静态托管,无法自己保存访客数量和 IP 地址。本目录提供一个小型的 Cloudflare Worker + KV 后端,页面端代码已经加到 about_upgraded.md 中,两者配合即可记录访问数据。

工作原理

  1. 页面访问时,向 POST /api/track 发送访客 ID、页面路径、浏览器 User-Agent 和 IP(Worker 也会读取 Cloudflare 的 CF-Connecting-IP 请求头,并保存 Cloudflare 提供的国家、城市和经纬度信息)。
  2. Worker 在 KV 中保存总访问量、30 天去重访客数,以及最近 30 条访问记录。
  3. 页面读取 GET /api/stats,在页面底部显示总访问量、去重访客数、当前访客 IP 和最近访问的 IP 列表,并在 Visitor Map 世界地图上标出这些 IP 的位置。

在 Worker 尚未部署时,页面会退回到公开计数 API,只能显示总访问量和当前访客 IP,无法展示 IP 历史记录。如果某条历史记录缺少坐标,Worker 会通过 ipwho.is 自动补全位置。

部署步骤

  1. 如果还没有安装 Wrangler,先安装:

    npm install -g wrangler
    
  2. 登录 Cloudflare 并创建 KV namespace:

    cd visitor-tracker
    wrangler login
    wrangler kv namespace create VISITOR_KV
    
  3. 把上一步返回的 id 填入 wrangler.toml,替换 REPLACE_WITH_KV_NAMESPACE_ID

  4. 部署 Worker:

    wrangler deploy
    
  5. 在仓库根目录的 _config.yml 中取消注释并填入 Worker 地址:

    visitor_api: https://linbotao-visitor-tracker.visitor-tracker.workers.dev
    
  6. 提交并推送代码。GitHub Pages 重新构建网站后,页面就会使用这个访客统计后端。

隐私说明

/api/stats 接口会把最近访问的 IP 列表返回给所有加载页面的人。如果不想公开这些信息,建议在 worker.js 中增加管理员密钥校验,并移除页面中 Recent IPs 列表的展示。