给自己的网站做访客统计:IP、地理、设备一个不少
目录
第三方统计(百度统计、Google Analytics)把数据都留在别人那里。自建一套轻量追踪,数据完全归自己。
原理
追踪 = 服务端捕获 + 客户端上报,双通道互补:
- 服务端:每次请求都能拿到 IP 和全部 HTTP 头,即使用户禁用 JS 也逃不掉
- 客户端:浏览器里能拿到屏幕分辨率、GPU 型号、时区、Canvas 指纹等更细的信息
服务端要点
Flask 里提取真实 IP 要穿透代理链:
def get_client_ip(request):
# 优先取代理链头
fwd = request.headers.get("X-Forwarded-For", "")
if fwd:
return fwd.split(",")[0].strip()
return request.remote_addr
拿到 IP 后用 ip-api.com 免费接口定位国家、城市、经纬度。
客户端要点
// 一个 fetch 就把数据发回去
fetch("/collect", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
screenWidth: screen.width,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
canvasFingerprint: getCanvasHash(),
// ...更多字段
}),
keepalive: true
});
数据存哪
SQLite 就够了,单文件无运维成本。数据量大了再平滑迁移 PostgreSQL。
别忘了合规
采集访客信息前,务必在网站加隐私政策,说明收集了哪些数据、用来做什么。这是底线。