首页 > 解决方案 > Indy IdHttp Proxy,支持哪些协议?

问题描述

我正在使用 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);

我的代码运行良好,但问题是由于我所在国家/地区的审查和过滤,我必须使用 AnyConnect、L2TP 等 VPN 服务......现在我的问题是如何使用 Indy ProxyParams 绕过审查和发布数据,当然我知道我必须在 idhttp.post 之前添加以下代码,但我不知道它支持哪些协议或我应该使用哪些 VPN 服务?提前致谢。

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

标签: delphiproxyindy10

解决方案


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

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

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


推荐阅读