HTTPS 的自定義錯誤頁面 (deny_info)
我的 squid.conf 中有以下 ACL,其中有一個名為 ERR_TJS 的自定義“錯誤頁面”文件,位於“/usr/share/squid/errors/English”:
acl tjs_sites url_regex "/etc/squid/sites_regex.acl" acl tjs_domains dstdomain "/etc/squid/domains.acl" http_access deny tjs_sites http_access deny tjs_domains deny_info ERR_TJS tjs_sites deny_info ERR_TJS tjs_domains
特別是對於 ACL 文件“/etc/squid/domains.acl”,我有以下域:
flyordie.com www.flyordie.com king.com www.king.com miniclip.com www.miniclip.com kongregate.com www.kongregate.com clashroyale.com www.clashroyale.com facebook.com www.facebook.com instagram.com www.instagram.com snapchat.com www.snapchat.com
問題是當向 Squid 執行 HTTPS 請求時,例如,不是為“ https://www.facebook.com ”提供自定義錯誤頁面,而是顯示瀏覽器發送的通用錯誤頁面,就像這個來自 Mozilla 火狐:
代理伺服器拒絕連接
Firefox 被配置為使用拒絕連接的代理伺服器。
檢查代理設置以確保它們是正確的。請聯繫您的網路管理員以確保代理伺服器正常工作。
我在 Squid 文件中找到了這些資訊:
未為 HTTPS 顯示自定義錯誤頁面
HTTPS 使用 HTTP CONNECT 消息通過代理進行中繼。由於處理這些 CONNECT 消息的瀏覽器行為(在https://bugzilla.mozilla.org/show_bug.cgi?id=479880中描述),代理生成的任何自定義錯誤頁面都會被忽略,而是顯示一個通用瀏覽器頁面。
通常此瀏覽器頁面會提及連接故障或其他此類不相關的詳細資訊。
事實上,除了 200 OK 之外的任何響應都會被瀏覽器完全丟棄,並顯示相同的瀏覽器模板頁面。當通過經過身份驗證的代理使用 HTTPS 以及與 407 消息正文相關的身份驗證方案時,這可能會導致一些非常奇怪的身份驗證問題。
我聽說用 Squid,你可以從 HTTP/HTTPS 連接中截取一些“狀態”,比如處理這些 CONNECT 消息。
**我的問題是:有沒有什麼方法可以應用我對 HTTPS 請求的自定義拒絕資訊,可能是操縱這些 CONNECT 消息,或者通過任何其他方法?**我怎樣才能做到這一點(請舉個例子)?
當瀏覽器配置為使用 HTTPS 代理時,它首先嘗試通過代理建立連接到遠端站點的隧道。除了“200 Tunnel Ready”之外,來自代理的任何 HTTP 響應都會被忽略,並導致“代理拒絕連接”錯誤。這可以通過首先解密連接然後按照您的配置拒絕訪問它來解決。請參閱https://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html文章更詳細地描述這一點。