这个项目能做什么

访客统计是一个基于 Cloudflare Pages 加 Workers 加 D1 加 GitHub 的轻量访客追踪系统。核心思路是通过一张伪装成图片的追踪像素记录访问,图片与前端托管在 Cloudflare 边缘,日志永久保存在 D1,并可通过 Telegram 实时推送通知。 主要功能包括追踪像素上传与嵌入,详细日志记录时间、IP、归属地、运营商、设备、系统、浏览器和来源,灵活的统计范围支持今天、7天、30天、3个月、1年并可按标识符筛选,Telegram 实时推送含设备指纹且按钮自动指向当前域名,网页端图片管理上传到 Git 仓库并自动触发 Pages 部署,内置 _panel 追踪点监控管理面板访问,反爬虫与反测速通过 UA 黑名单和 /24 段冷却实现,数据纯 D1 存储避免写入配额困扰。 架构上访客请求 GET /nezha.png 由 Cloudflare Worker 处理,前台读取 Git 静态资源返回图片,后台通过 ctx.waitUntil 写入 D1 的详细日志和每日汇总并推送 Telegram。管理员通过管理面板上传图片到 Worker,Worker 写入 Git 仓库并触发 Deploy Hook 重建 Pages,再查询 D1 返回统计与日志。组件包括 Cloudflare Pages 托管 index.html 与 _worker.js,Cloudflare D1 存储访问日志、每日汇总、图片索引,Cloudflare Workers 处理 API 与图片请求,GitHub 仓库存储 public/pic 下的图片二进制,Telegram Bot API 推送通知。 部署需要 Cloudflare 账号、GitHub 账号、Telegram 账号和可选域名。需要准备 7 个环境变量 PASSWORD、GITHUB_TOKEN、REPO_NAME、BRANCH、CF_DEPLOY_HOOK_URL、TG_ID、TG_TOKEN 以及 1 个 D1 绑定 DB。流程为用模板创建仓库、创建 D1 数据库、创建 Telegram Bot 并获取 token 与 chat_id、创建 GitHub Fine-grained PAT、创建 Pages 项目并关闭 Git 自动部署以避免构建浪费、创建 Deploy Hook、绑定自定义域名、统一配置环境变量与绑定、手动 Retry deployment 完成首次部署。首次登录管理面板会自动创建 visits、daily_summary、img_index 三张表。 使用时在图片管理中添加标识符并上传图片,保存并部署后即可获得追踪链接,例如 https://你的域名/nezha.png,嵌入到 HTML 或邮件即可统计。概览页提供今日、昨日、近7天、近1年汇总和曲线图,详细日志页支持按日期、标识符、IP 筛选分页浏览。管理面板访问本身会被 _panel 追踪点记录,未登录访问会触发,已登录刷新不会触发。 注意事项包括 D1 免费额度 5GB 存储、10万写每天、500万读每天,GitHub 仓库建议不超过 1GB,单张图片不超过 8MB,支持 PNG JPG GIF WebP SVG,标识符为字母数字下划线连字符长度1到64,保留标识符 _panel。Telegram 通知同 IP 60秒内只推一次,同 /24 段共享冷却,爬虫 UA 与测速站 Referer 不推送。Git 自动部署关闭后上传图片需通过管理面板保存并部署触发,环境变量修改后需重新部署。安全建议使用强密码、最小化 PAT 权限、不公开 Deploy Hook URL。数据可通过 wrangler d1 export 导出备份。高级配置可修改 _worker.js 中的 STATS_DAYS 保留天数和 PUSH_COOLDOWN_SEC 冷却时间,也可自定义 UA 与 Referer 黑名单正则。