2011-11-20 68 views
3

只需查看整個HTTP Web瀏覽會話的tcp-capture, 就可以區分用戶發起的web請求(通過單擊鏈接或通過在地址欄中輸入url)以及Web頁面對象(圖片,iframe,ajax等)發出的Web請求(由瀏覽器發送)。識別用戶發起的web請求

Referer Header沒有回答這個要求,因爲它的值在用戶發起的點擊鏈接和對該頁面上的網頁對象的瀏覽器請求的情況下是相同的。

回答

1

沒有一個簡單的解決方案,這一點,我懷疑它甚至可以可靠地完成,但這裏是你如何能在多個步驟過濾數據的一些技巧:

  1. 保持活動: HTTP允許在同一TCP連接上發出多個連續請求(如果支持keepalive)。假設只有TCP連接上的第一個請求可能是用戶啓動的,而其餘的應該是與該頁面相關的圖像/腳本可能是安全的。這應該顯着減少您需要進一步分析的請求數量。

  2. 的Content-Type:如果你願意假定只有HTML是通過用戶發起的請求下載,你可以過濾掉任何東西,其中響應不符合特定Content-Type(例如,文本/ HTML)

  3. 響應主體:您現在只剩下HTML響應,但在查看請求/響應標頭時,幾乎不可能區分來自點擊鏈接的iframe請求,因爲Referer在兩種情況下都是相同的(即使大多數iframe下載可能已在步驟1)中被濾除。爲了進一步優化,您必須解析每個HTML響應,並查找任何可能導致未下載用戶的HTML下載的<iframe src="..."<link rel="prefetch",然後過濾出針對這些資源所做的請求。

這些都不是完美的分析,但它可能足以滿足您的目的。例如,檢測來自<meta>刷新的請求可能是不可能的。

+0

我們將如何過濾AJAX對HTML的請求,這可能不是用戶啓動的。 –

+1

@Manu AJAX請求通常具有「X-Requested-With:XMLHttpRequest」請求頭,這可以幫助您識別它們。再次,沒有防彈解決方案,但它可能足夠滿足您的需求。 – Martin