Linux
為什麼 Apache 會為同一個 url 記錄不同的響應大小?
我注意到幾個(表面上)無害的日誌條目,而且——我承認我對此想得太多了——對 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
擷取網路流量。應該很容易查看兩種響應並找到差異。這可能是響應標頭略有變化。一些標頭隨客戶和時間而變化。