NAT 会少算
家庭、公司、学校和移动运营商可能让许多设备共享同一个公网 IPv4。按 IP 去重会把多人合并成一个访客。
First-party Log Study
这是 iphelp.cloud 从 2026年8月9日至9月2日的生产日志复盘。我们公开筛选规则、聚合结果和误差,不把原始请求数包装成“真人访问量”。
Nginx 访问日志记录的是 HTTP 请求,不是“人”。搜索引擎、广告验证、监控、漏洞扫描、预览机器人和浏览器都能产生相似的 GET 请求;同一个浏览器刷新十次,也会留下十条记录。
| 指标 | 计算方式 | 不能据此声称什么 |
|---|---|---|
| 原始 HTML 请求 11,760 | 公开页面收到的成功 GET 请求,包括浏览器和自动程序。 | 不能称为 PV,更不能称为 11,760 人。 |
| 有效浏览 2,031 | 通过 User-Agent、静态资源、站内跳转、来源页或工具使用等信号筛选后的页面请求。 | 仍可能混入伪装良好的机器人。 |
| 估算访客 767 | 按天和伪匿名 IP 标识聚合已接受的页面请求。 | 不能等同于 767 个自然人或设备。 |
| IP 标识 2,461 | 原始候选流量中出现的伪匿名来源 IP 数。 | 不能拿来证明独立访客数量。 |
原始请求与有效浏览相差 9,729 次,占原始样本的 82.7%。这里使用“排除请求”而不是“机器人流量”:没有加载静态资源的隐私浏览器、命令行用户或网络中断也可能被排除;反过来,模拟完整浏览器行为的程序也可能被接受。
候选 = GET + 2xx + 已登记公开页面
明确机器人 = User-Agent 命中自动程序模式
支持信号 = 加载静态资源 或 浏览多页 或 有来源页 或 使用工具
有效浏览 = 候选 - 明确机器人 + 浏览器特征 + 支持信号
异常上限 = 每个IP每天最多60次候选浏览
家庭、公司、学校和移动运营商可能让许多设备共享同一个公网 IPv4。按 IP 去重会把多人合并成一个访客。
设备可以周期性更换 IPv6 隐私地址,同一个人在不同时间可能出现多个来源地址。按完整 IPv6 去重会把一人拆成多人。
切换 VPN 节点、移动网络与 Wi-Fi 会更换公网出口。一个人可以在一天内产生多个 IP 标识。
企业代理、CDN 或配置错误的反向代理可能让服务器看到统一出口。统计前还要确认 Nginx 是否正确恢复可信代理传来的客户端地址。
因此本站统计页使用“估算访客”,并把“累计访问”“IP 标识”和“工具使用”分开。对无需登录的网站,完全准确地识别自然人既不现实,也没有必要通过更强的追踪来换取一个看似精确的数字。
先从最简单的分组开始,再决定是否需要更复杂的统计程序。下面的命令只做观察,不会修改服务器配置:
# 状态码分布
awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
# User-Agent 中含常见机器人关键词的请求数量
grep -Eic 'bot|spider|crawl|scanner|curl|wget' /var/log/nginx/access.log
# 请求最多的路径
awk -F'"' '{print $2}' /var/log/nginx/access.log \
| awk '{print $2}' | sort | uniq -c | sort -nr | head -20
正式统计还要处理日志轮转、压缩文件、查询参数、反向代理真实 IP、时区、接口调用和静态资源。不要只运行一条 awk '{print $1}' 就把不同 IP 数写成“用户数”。
30 个搜索来源访客只占估算访客的一小部分,而首页承担了大多数有效浏览。这说明站点当前的问题不是“日志里没人来”,而是搜索引擎尚未稳定把专题页分发给有具体故障需求的用户。后续改进应关注专题页是否被收录、搜索来源是否增长、用户是否真正运行工具,而不是抬高累计数字。
本站会保留这份快照,后续采用同一口径发布新的周期对比。规则变化时会同步修改检测方法页,避免把口径调整造成的数字变化误认为流量增长。
不是。这个比例是原始 HTML 请求与规则接受浏览之间的差值,其中可能包括搜索爬虫、广告验证、监控、扫描器、无支持信号的请求以及误判。
浏览器脚本更容易识别页面会话,但会受脚本拦截、同意设置和浏览器隐私功能影响。服务端日志与前端分析的口径不同,适合互相核对。
本站工具不要求登录。为一个近似访客数引入更强的长期识别没有必要,因此公开统计采用短周期、伪匿名和聚合方式。
日志分析与撰写:iphelp站长工具箱站长 数据截止:2026年9月2日 21:30 统计程序:iphelp_stats.py 生产规则