First-party Log Study

Nginx 的 11,760 次请求,为什么不能算 11,760 次访问?

这是 iphelp.cloud 从 2026年8月9日至9月2日的生产日志复盘。我们公开筛选规则、聚合结果和误差,不把原始请求数包装成“真人访问量”。

排除的候选请求82.7%原始 HTML 请求与有效浏览量的差值,不能简单等同于机器人占比。

本次样本

Nginx 访问日志记录的是 HTTP 请求,不是“人”。搜索引擎、广告验证、监控、漏洞扫描、预览机器人和浏览器都能产生相似的 GET 请求;同一个浏览器刷新十次,也会留下十条记录。

11,760原始公开 HTML 请求
2,031规则接受的有效浏览
767估算访客标识
181成功使用工具次数
  • 统计时段:2026年8月9日至9月2日 21:30(中国标准时间)。
  • 数据范围:iphelp.cloud 生产环境 Nginx 日志,只统计已列入公开页面清单且返回 2xx 的 GET 请求。
  • 隐私处理:公开数据只有聚合值。访客标识由原始 IP 经过带密钥 BLAKE2s 计算,原始 IP 不写入公开统计文件。
  • 可下载数据:第一方观察摘要 JSON

四个数字分别代表什么

指标计算方式不能据此声称什么
原始 HTML 请求 11,760公开页面收到的成功 GET 请求,包括浏览器和自动程序。不能称为 PV,更不能称为 11,760 人。
有效浏览 2,031通过 User-Agent、静态资源、站内跳转、来源页或工具使用等信号筛选后的页面请求。仍可能混入伪装良好的机器人。
估算访客 767按天和伪匿名 IP 标识聚合已接受的页面请求。不能等同于 767 个自然人或设备。
IP 标识 2,461原始候选流量中出现的伪匿名来源 IP 数。不能拿来证明独立访客数量。

原始请求与有效浏览相差 9,729 次,占原始样本的 82.7%。这里使用“排除请求”而不是“机器人流量”:没有加载静态资源的隐私浏览器、命令行用户或网络中断也可能被排除;反过来,模拟完整浏览器行为的程序也可能被接受。

本站实际采用的筛选顺序

  1. 先限定页面。只接受已登记的公开 HTML 路径、GET 方法和 2xx 状态;favicon、robots.txt、sitemap.xml、接口和静态文件不算页面浏览。
  2. 排除明确机器人。User-Agent 命中 bot、spider、crawl、scanner、curl、wget 等已知模式时,不计入有效浏览。
  3. 寻找浏览器与行为支持。候选请求要有常见浏览器标识,并至少出现静态资源请求、多页访问、来源页或成功使用工具中的一种支持信号。
  4. 限制异常频率。单一 IP 一天超过 60 次候选页面浏览时,该组请求不进入真人估算,降低持续扫描和脚本刷新带来的膨胀。
  5. 最后做伪匿名聚合。按日期、密钥哈希后的 IP 标识和页面路径生成汇总,不在公开 JSON 中保留可还原的访问明细。
候选 = GET + 2xx + 已登记公开页面
明确机器人 = User-Agent 命中自动程序模式
支持信号 = 加载静态资源 或 浏览多页 或 有来源页 或 使用工具
有效浏览 = 候选 - 明确机器人 + 浏览器特征 + 支持信号
异常上限 = 每个IP每天最多60次候选浏览

为什么“去重 IP”仍然不是真实人数

NAT 会少算

家庭、公司、学校和移动运营商可能让许多设备共享同一个公网 IPv4。按 IP 去重会把多人合并成一个访客。

IPv6 会多算

设备可以周期性更换 IPv6 隐私地址,同一个人在不同时间可能出现多个来源地址。按完整 IPv6 去重会把一人拆成多人。

VPN 会改变出口

切换 VPN 节点、移动网络与 Wi-Fi 会更换公网出口。一个人可以在一天内产生多个 IP 标识。

代理会合并流量

企业代理、CDN 或配置错误的反向代理可能让服务器看到统一出口。统计前还要确认 Nginx 是否正确恢复可信代理传来的客户端地址。

因此本站统计页使用“估算访客”,并把“累计访问”“IP 标识”和“工具使用”分开。对无需登录的网站,完全准确地识别自然人既不现实,也没有必要通过更强的追踪来换取一个看似精确的数字。

你可以怎样复查自己的 Nginx 日志

先从最简单的分组开始,再决定是否需要更复杂的统计程序。下面的命令只做观察,不会修改服务器配置:

# 状态码分布
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 个搜索来源访客只占估算访客的一小部分,而首页承担了大多数有效浏览。这说明站点当前的问题不是“日志里没人来”,而是搜索引擎尚未稳定把专题页分发给有具体故障需求的用户。后续改进应关注专题页是否被收录、搜索来源是否增长、用户是否真正运行工具,而不是抬高累计数字。

本站会保留这份快照,后续采用同一口径发布新的周期对比。规则变化时会同步修改检测方法页,避免把口径调整造成的数字变化误认为流量增长。

常见问题

82.7% 都是恶意机器人吗?

不是。这个比例是原始 HTML 请求与规则接受浏览之间的差值,其中可能包括搜索爬虫、广告验证、监控、扫描器、无支持信号的请求以及误判。

Google Analytics 会更准确吗?

浏览器脚本更容易识别页面会话,但会受脚本拦截、同意设置和浏览器隐私功能影响。服务端日志与前端分析的口径不同,适合互相核对。

为什么不使用 Cookie 长期识别访客?

本站工具不要求登录。为一个近似访客数引入更强的长期识别没有必要,因此公开统计采用短周期、伪匿名和聚合方式。

作者、样本与版本

日志分析与撰写: 数据截止:2026年9月2日 21:30 统计程序:iphelp_stats.py 生产规则

本文只公开聚合数据,不公开单个访客或爬虫的来源 IP。完整机器可读摘要见JSON 数据;隐私处理说明见隐私政策