使用透明代理进行 HTTP 连接

问题描述 投票:0回答:2

我正在尝试编写(并理解)一个透明代理。

我的设置看起来像这样

客户端浏览器 ---> TProxy ----> 上游代理 ------> 云

当客户端浏览器发出 GET 请求时,TProxy 将连接到上游代理。上游代理需要摘要身份验证。所以,基本上流程看起来像

Client Browser ---> TProxy --------> Upstream Proxy ---------------> cloud 
GET BBC.co.uk
                    CONNECT 
                                       407 PROXY AUTH REQUIRED
                    CONNECT
               (with proxy-authorization)

                                       200 OK
                    GET BBC.co.uk

我很困惑一旦 CONNECT 授权成功后会发生什么。 我现在是否应该修改原始的 GET 请求以包含 代理授权标头?

或者原始 GET 请求会被隧道传输到另一个 HTTP 标头中,例如

HTTP Header
 Proxy Authorization
  HTTP Header (GET BBC.CO.UK)
  Data

或者我可以直接传递原始的 GET 请求?

http proxy digest-authentication
2个回答
2
投票

当您从透明代理对上游进行身份验证时,

Proxy-Authorization
标头仅适用于 CONNECT。 GET 请求发生在隧道内,因此上游显式代理不应该看到它们,并且肯定不会期望它们上有任何代理身份验证标头。

总之,你不需要担心GET,但不是因为上面给出的答案,而是因为透明代理和站点之间有一条隧道,而显式代理只看到并验证CONNECT。


0
投票

HTTP 中不存在嵌套标头之类的东西。

代理(无论透明与否)总是终止来自客户端的 HTTP 连接,并向服务器发起一个新连接。

这意味着来自客户端的 HTTP GET 会发送到您的 TProxy。 TProxy 向上游代理创建一个新的 GET 请求。理想情况下,TProxy 将简单地传递所有标头。这将使其(几乎)无法检测到。

响应标头的情况相反。

实际上,代理服务器将并且在许多情况下必须操作某些标头。他们通常会添加自己的标头(例如,提醒通信伙伴存在代理),并且他们还可以操纵现有标头。

因此,对您的问题的简短回答是:无论您的 TProxy 收到什么标头字段,除非您完全理解其含义,否则都将其原封不动地传递。

© www.soinside.com 2019 - 2024. All rights reserved.