Indy IdHttp代理,哪些协议支持?

时间:2018-10-28 09:11:06

标签: delphi proxy indy10

我正在使用indy idhttp与电报api一起工作,我的代码是这样的:

  LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  idHttp.ReadTimeout := 30000;
  idHttp.IOHandler:=LHandler;
  LHandler.SSLOptions.Method := sslvTLSv1;
  LHandler.SSLOptions.Mode := sslmUnassigned;
  idHttp.HandleRedirects := true;
  //Proxy Code...
  idHttp.Post( API + msg, Params, Stream);

我的代码可以正常工作,但是问题是由于我所在国家的审查制度和过滤,我必须使用VPN服务,例如AnyConnect,L2TP,... 现在我的问题是我该如何使用Indy ProxyParams绕过审查并发布数据,我当然知道我必须在idhttp.post之前添加以下代码,但我无法弄清楚它支持哪些协议或我应该使用哪种VPN服务采用? 预先感谢。

  idHttp.ProxyParams.ProxyServer:='xxxxxx';
  idHttp.ProxyParams.ProxyUsername:='user';
  idHttp.ProxyParams.ProxyPassword:='pass';
  idHttp.ProxyParams.ProxyPort:=xxx;

1 个答案:

答案 0 :(得分:2)

TIdHTTP.ProxyParams属性仅支持使用CONNECT动词来建立TCP连接的基于HTTP的代理。

对于其他类型的代理,您必须使用TIdIOHandlerSocket.TransparentProxy属性。例如,要使用SOCKS代理,请将TIdSocksInfo组件分配为TransparentProxy

VPN与代理不同。 VPN是在网络层而不是在应用程序层处理的。您必须先从应用程序外部连接到VPN,然后才能正常使用应用程序,并通过VPN网络将其连接到目标服务器。如果您的操作系统仅安装了1个网络,则通常会自动为您处理。如果您的操作系统安装了多个网络,或者您只是想明确地说明它,那么可以通过将其TIdHTTP属性设置为 local 来告诉BoundIP使用哪个网络连接。 em>所需网络的IP地址。