我注意到几个(表面上)无害的日志条目,而且——我承认我对此想得太多了——对 Apache2 响应大小感到好奇。
这个乌克兰爬虫 † 击中了我的网络守护程序,两秒钟后请求复制。Apache2 回复了 41,298 字节,然后是 41,244。
我的问题是:
为什么响应大小不同——只有 54 个字节——对于同一个 URL?
我没有自定义 Apache 的默认缓存声明。如果缓存了某些内容,我预计请求内容的差异接近 100%(或至少超过 0.01%)。
我能想到的只是一个小文件——一个很小的 GIF 或 .css 文件?——莫名其妙地是唯一被缓存的组件,但是搜索该大小的文件没有产生任何结果:
find . -type f -size -55c -size +53c
...搜索 53 或 55 会找到小的 .GIF 文件,并且扩大几个字节会产生更多。扩展这个假设猜测,“丢失的”响应数据可能是一个文件及其各自的路径——但这似乎与我认为缓存的工作方式背道而驰。
我在这里看到了什么?
ANCILLARY
它们是仅有的两个条目:
# grep -r 46.119.77.28 /var/log
/var/log/apache2/example.com-access.log:46.119.77.28 - - [26/Apr/2020:19:56:20 -0600] "GET / HTTP/1.0" 200 41298 "http://www.example.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36 OPR/54.0.2952.64 (Edition Yx)"
/var/log/apache2/example.com-access.log:46.119.77.28 - - [26/Apr/2020:19:56:22 -0600] "GET / HTTP/1.0" 200 41244 "http://www.example.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36 OPR/54.0.2952.64 (Edition Yx)"
† 大约九小时前,它击中了我的另一台服务器,不久之后又击中了另一台。虽然没有积极寻找漏洞,但它显然是在爬网,所以我在原则之外阻止了它——没有立即或计划需要在美国以外的地方建立索引。
尝试
wireshark
或tcpdump
捕获网络流量。应该很容易查看两种响应并找到差异。这可能是响应标头略有变化。一些标头随客户和时间而变化。