簡體   English   中英

本地HTTPS代理可能嗎?

[英]Local HTTPS proxy possible?

TL; DR

我想設置一個本地HTTPS代理,該代理可以( 本地 )修改計算機上HTML頁面的內容。 這可能嗎?

動機

多年來,我一直在使用名為GlimmerBlocker的HTTP代理。 它始於2008年,是一種基於代理的阻止廣告的方法(與瀏覽器擴展或其他OS X特定的黑客(例如InputManagers)相對)。 但是,除了阻止廣告外,它還允許用戶向頁面注入自己的CSS或JavaScript。 發展已經嚴重放緩,但仍然非常有用。

唯一的問題是它不執行HTTPS( 從其FAQ中進行 ):

https頁面上的廣告未被阻止

當Safari使用代理獲取https頁面時,它實際上並沒有使用http協議,而是建立了隧道式tcp連接,因此Safari接收了加密的字節。 優點是任何中間代理都無法修改或讀取頁面內容或URL。 缺點是GlimmerBlocker無法修改內容。 即使GlimmerBlocker試圖充當中間人並解碼/編碼內容,也無法告訴Safari信任它,也無法告訴Safari網站證書是否有效,因此Safari會認為您訪問了一個可疑網站。

幸運的是,大多數廣告提供商不會切換到https,因為使用https投放網頁的速度要慢得多,並且在廣告提供商服務器上會產生巨大的處理開銷。

早在2008年,也許最后一部分是正確的……但現在不再是。

需要明確的是,我認為越來越多地使用SSL是一件好事。 我只想找回對內容的控制權。


困惑點

在尋找解決方案時,我被一些明顯矛盾的觀點弄糊塗了。

(此外,盡管我對網頁語言有相當的經驗,但我一直很難瀏覽網絡和協議。因此,如果我缺少明顯的東西,抱歉!)

  • 我發現了這個StackOverflow問題,詢問是否可以使用HTTPS代理。 最好的答案是:“ TLS / SSL(HTTPS中的S)確保您與要連接的服務器之間沒有竊聽者,也就是沒有代理。”(然后,相同的答案描述了將其竊取的技巧,但我不理解說明。無論如何,這都是很理論的。)

  • 在OS X的“ 網絡首選項”▶︎高級…▶︎代理下 ,顯然有HTTPS代理的設置。 這似乎與先前的說法相反,TLS / SSL的防止竊聽的保證暗示了代理的不可能。

其他注意事項

  • 我不記得在哪里,但是我讀到可以設置HTTPS代理,但是它使HTTPS毫無意義(通過破壞過程中的安全通信)。 我不要這個! 加密是好的。 我不想過濾其他人的流量; 我只想收到內容自定義內容。

  • GlimmerBlocker有一個不錯的GUI界面,但是我也很喜歡非GUI解決方案。 我可能對網絡和協議了解甚少,但是我在命令行,調整文本編輯器中的設置等方面非常滿意。


我要問的可能嗎? 還是我的問題是“要么獲得安全性,要么可以通過黑客破解安全性並自定義您的內容,但不能同時做到這兩者”?

HTTP代理的通常想法是服務器接受包含目標主機名和端口的CONNECT請求,然后僅建立到目標服務器的隧道。 所有https都在隧道內完成,因此代理無法修改它(從瀏覽器到Web服務器的端到端安全性)。

要修改數據,您需要有一個扮演中間人的代理。 在這種情況下,代理與Web服務器之間具有https連接,瀏覽器與代理之間具有另一個https連接。 在代理和Web服務器之間使用原始服務器證書,而在瀏覽器和代理之間使用新創建的證書,該證書由特定於代理的CA簽名。 當然,必須以信任的方式將此CA導入瀏覽器,否則它將一直抱怨可能的攻擊。

當然-原始服務器證書的所有驗證現在都必須在代理中完成,並且並非所有解決方案都以正確的方式進行。 另請參見http://www.secureworks.com/cyber-threat-intelligence/threats/transitive-trust/

有幾種代理解決方案可以執行此SSL攔截,例如squid,mitmproxy(python)或App :: HTTP_Proxy_IMP(perl)。 最后兩個經過專門設計,可讓您使用自己的代碼修改內容,因此這些可能是一個不錯的起點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM