掛代理後->DNS解析

https://github.com/FelisCatus/SwitchyOmega/wiki/DNS-and-SOCKS-proxy

https://github.com/FelisCatus/SwitchyOmega/issues/963

在 Chromium 瀏覽器(以及基於 Chromium 的所有瀏覽器)中使用 SOCKS 代理時,部分 DNS 請求不會經過服務器發送(英文參考資料)。這是由 DNS 預加載造成的。以下引用 Chromium 瀏覽器代理信息頁面的文字:

Note that some traffic such as DNS prefetching will NOT go through the proxy
server. To prevent the browser from doing local DNS resolves try adding this
command line flag:
--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE 127.0.0.1"

要防止DNS請求泄露,請使用以上命令行參數(請將 127.0.0.1 替換成您使用的代理主機地址)。或者您也可以在Chromium選項中完全禁止DNS預加載。請在選項的"Show advanced settings..."下方取消選擇此選項:

[ ] 預測網絡操作,以提高網頁加載速度

提示:此主題與本項目完全無關。但請保留此wiki頁面以供作爲參考。

 

對於 HTTP/HTTPS 類型的代理服務器而言,請求的域名會作爲 HTTP 協議的一部分直接發往代理服務器,不會在本地進行任何解析操作。也就是說,域名的解析與連接目標服務器,是代理服務器的職責瀏覽器本身甚至無須知道最終服務器的 IP 地址。據我所知,此行爲無法通過瀏覽器選項等更改。

也就是說,理論上使用 HTTP/HTTPS 類型的代理服務器時,本地的 DNS 解析、緩存、 hosts 文件等都不使用,與本地設置的 DNS 服務器地址無關。DNS 解析完全在代理服務器上進行。

 

 

 socks代理不是,DNS解析和連接目標服務器(IP地址,而非域名)是兩個環節,所以有使用遠程代理做DNS解析(並作結果)的選項。

而http代理接收的是包含域名的網址,不受本地DNS、hosts影響。

 

簡而言之:

  1. DNS是基於UDP協議的
  2. socks5代理協議支持TCP和UDP的代理, 所以使用 socks5 代理可以實現遠程DNS, 域名解析由socks5代理服務器完成.
  3. HTTP 代理協議如何實現DNS解析, 由HTTP客戶端決策, 可以先解析域名後請求代理, 也可以將域名交給代理服務器解決     ?????
  4. http代理 只是把http協議的內容通過tcp傳到代理服務器,這時候代理服務器可以去走udp查dns,走的是代理服務器本地的dns吧。

 

https://phpor.net/blog/post/2779

https://www.ohyee.cc/post/note_socks5h_hostname

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章