我们有一个C \ S模型程序。用户使用客户端连接我们的服务器。但是一些公司用户通过HTTP代理服务器(不是SOCKS4或SOCKS5代理服务器)上网。在这种情况下,我们需要提供一个功能来设置客户端代理服务器(就像其他一些软件一样)。如果这样做,我们应该将原始数据打包到Http协议。所以我想知道:
答案 0 :(得分:1)
这不是HTTP代理的工作方式。您不必将现有数据重新打包为HTTP。您所需要做的就是:
连接到HTTP代理端口,并向其发送HTTP CONNECT
请求,指定要连接的主机/ IP和端口,例如:
CONNECT hostname:port HTTP/1.0
User-agent: MyApp
如果代理需要身份验证,您还可以根据需要提供包含编码凭据的Proxy-authorization
标头,例如:
CONNECT hostname:port HTTP/1.0
User-agent: MyApp
Proxy-authorization: basic dGVzdDp0ZXN0
如果代理接受请求并成功连接到请求的主机,它将发回HTTP 200
回复,例如:
HTTP/1.0 200 Connection established
Proxy-agent: ProxyApp/1.1
您现在可以像以前一样发送和接收数据,代理将按原样在客户端和两个方向上传递数据。除了建立代理连接之外,您不必更改任何代码逻辑。
有关详细信息,请参阅Tunneling TCP based protocols through Web proxy servers 。
此过程类似于其他代理协议的工作方式,如SOCKS。客户端连接到代理,请求连接到服务器主机,然后客户端和服务器来回传递数据,就像代理不存在一样。