我正在使用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;
答案 0 :(得分:2)
TIdHTTP.ProxyParams
属性仅支持使用CONNECT
动词来建立TCP连接的基于HTTP的代理。
对于其他类型的代理,您必须使用TIdIOHandlerSocket.TransparentProxy
属性。例如,要使用SOCKS代理,请将TIdSocksInfo
组件分配为TransparentProxy
。
VPN与代理不同。 VPN是在网络层而不是在应用程序层处理的。您必须先从应用程序外部连接到VPN,然后才能正常使用应用程序,并通过VPN网络将其连接到目标服务器。如果您的操作系统仅安装了1个网络,则通常会自动为您处理。如果您的操作系统安装了多个网络,或者您只是想明确地说明它,那么可以通过将其TIdHTTP
属性设置为 local 来告诉BoundIP
使用哪个网络连接。 em>所需网络的IP地址。