當前位置:編程學習大全網 - 源碼下載 - Http代理域劫持源代碼

Http代理域劫持源代碼

相信運營商通過HTTP劫持(非DNS劫持)的方式推送廣告並不陌生。解決的辦法大多是向增值業務部門投訴,再向工信部投訴。但這種方法費時費力,且有很多投訴對象不了解情況,導致答非所問的情況。有時候,不僅受氣還不能徹底解決問題的情況並不少見,或者壹段時間後問題復發的情況也不少見。

近年來,運營商的HTTP劫持非但沒有收斂,反而愈演愈烈,玩出了新花樣:比如通過HTTP劫持進行密碼攔截;比如下載的軟件被替換;比如為了返利而劫持(當然返利是不返給妳的)。

本文介紹了壹種防止HTTP劫持的技術手段。在大多數情況下,不僅可以解決廣告推送的問題,還可以解決密碼攔截和下載軟件更換的問題。最終的效果是運營商停止HTTP劫持,而不是劫持後通過瀏覽器插件過濾廣告。這種方式的好處是不需要安裝瀏覽器插件進行廣告過濾,也不需要額外的服務器(比如HTTP代理或者VPN),可以防止下載的軟件被返利替換劫持,也可以在壹定程度上防止密碼泄露。

要解釋這種技術手段的工作原理,需要解釋壹下運營商在大多數情況下的HTTP劫持原理:

在用戶的瀏覽器連接到被訪問的網站服務器並發送HTTP請求後,運營商的路由器會先接收到這個HTTP請求,然後運營商路由器的旁路設備會將這個TCP連接標記為HTTP協議,然後在網站服務器返回數據之前,它就可以通過發送HTTP協議的302代碼劫持下載軟件。瀏覽器收到302代碼後,會跳轉到錯誤的軟件下載地址下載軟件,然後網站服務器的真實數據就會被丟棄。或者,將這個TCP連接標記為HTTP協議後,旁路設備直接返回修改後的HTML代碼,導致在瀏覽器中插入運營商的廣告,然後網站服務器的真實數據最終到達時被丟棄。

從上面的原理來看,如果需要HTTP劫持,首先需要標記:如果是HTTP協議,那麽需要劫持,否則不需要劫持。那麽,有沒有辦法避免被旁路設備標記為HTTP協議,而目標網站在沒有任何第三方服務器的情況下仍然接收到原始的HTTP請求呢?答案是肯定的:

旁路設備中檢測HTTP協議的模塊通常比較簡單,壹般只檢測TCP連接建立後的第壹個包,如果是完整的HTTP協議會進行標記;如果不是完整的HTTP協議,就不會因為無法獲取足夠的劫持信息而被標記為HTTP協議(我們的防火長城不是這樣的,會檢查後續的數據包,所以這種方法是無效的)。了解這種情況後,防止劫持的方法就比較簡單了:將HTTP請求拆分成多個包,然後欺騙運營商來防止HTTP劫持。但目標網站操作系統的TCP/IP協議棧比較完善,接收到的HTTP請求仍然完整,不會影響網頁瀏覽。

那麽如何將瀏覽器發送的HTTP請求拆分成多個包呢?我們可以在本地設置壹個代理服務器,在代理服務器上解包瀏覽器的HTTP請求,瀏覽器可以設置壹個本地代理服務器。我這裏測試過,默認設置對三大運營商(中國電信、中國聯通、中國移動)的HTTP劫持都有很好的抑制作用。

  • 上一篇:js Canvas實現的日歷時鐘案例有哪些
  • 下一篇:就在烏克蘭實施反攻意圖收復失地的時候
  • copyright 2024編程學習大全網