Linux

為什麼 Apache 會為同一個 url 記錄不同的響應大小?

  • April 26, 2020

我注意到幾個(表面上)無害的日誌條目,而且——我承認我對此想得太多了——對 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)"

† 大約九小時前,它擊中了我的另一台伺服器,不久之後又擊中了另一台。雖然沒有積極尋找漏洞,但它顯然是在爬網,所以我在原則之外阻止了它——沒有立即或計劃需要在美國以外的地方建立索引。

嘗試wiresharktcpdump擷取網路流量。應該很容易查看兩種響應並找到差異。

這可能是響應標頭略有變化。一些標頭隨客戶和時間而變化。

引用自:https://serverfault.com/questions/1014280