带有袜子的SSL TIdHTTP

时间:2013-09-12 15:07:48

标签: delphi indy indy10

我在我的应用程序中使用了TIdHTTP,我的用户请求具有特定超时的Socks4 / 5功能。我使用我的应用程序与SSL网站进行通信,而我之前只使用常规ProxyParams。 如何在具有特定超时的TIdHTTP组件中添加Socks4和/或Socks5支持?

编辑:

由于我没有任何Socks4 / Socks5代理,我创建了自己的新应用程序进行测试。 我添加了TIdSocksServer并为其分配了TIdServerIOHandlerSSLOpenSSL。 为确保连接,我在OnConnect添加了一个Messagebox。服务器侦听端口8080并设置为Active:=True;

以下是我的TIdHTTP组件的代码:

procedure NewQuery;
var
 IDHTTP                                : TIdHTTP;
 SSL                                   : TIdSSLIOHandlerSocketOpenSSL;
 Socks                                 : TIdSocksInfo;
begin
 Socks                                 := TidSocksInfo.Create (NIL);
 IDHTTP                                := TIdHTTP.Create(NIL);
 SSL                                   := TIdSSLIOHandlerSocketOpenSSL.Create(NIL);
 IDHTTP.IOHandler                      := SSL;
 SSL.TransparentProxy                  := Socks;
 Socks.Host                            := 'localhost';
 Socks.Port                            := 8080;
 Socks.Authentication                  := saNoAuthentication;
 Socks.Version                         := svSocks4; // or svSocks5
 IDHTTP.ConnectTimeout                 := 5000; // 5 seconds
 IDHTTP.Get ('www.google.com');
end;

不确定我是否以正确的方式使用了它,但似乎GET请求在没有连接到socks服务器的情况下工作。我使用它错了吗?

1 个答案:

答案 0 :(得分:2)

TIdSocksInfo组件分配给IOHandler的TransparentProxy属性。