indy 实现http proxy
来源:互联网 发布:单页营销网站源码 编辑:程序博客网 时间:2024/05/22 06:21
关于http proxy原理见相关资料,这里讲述一下indy的实现
procedure TMyHttpProxyClient.InitProxy;
begin
FHttp.ProxyParams.ProxyServer := address; //代理服务器地址
FHttp.ProxyParams.ProxyPort := port; //代理服务器端口
FHttp.ProxyParams.UserName := domain+user; //域名+用户名
FHttp.ProxyParams.Password := pass;
FHttp.Options := [hoInProcessAuth];
FHttp.OnSelectProxyAuthentication := OnMySelectProxyAuthentication;
FHttp.OnProxyAuthentication := OnMyProxyAuthentication;
end;
procedure TMyHttpProxyClient.OnMySelectProxyAuthentication(Sender: TObject; var AuthenticationClass: TIdAuthenticationClass; AuthInfo: TIdHeaderList);
begin
// First check for NTLM authentication, as you do not need to
// set username and password because Indy will automatically
// handle passing your Windows Domain username and
// password to the proxy server
if (pos('Proxy-Authenticate: NTLM', FHttp.Response.RawHeaders.Text) > 0) then
begin
FHttp.ProxyParams.Clear;
FHttp.ProxyParams.BasicAuthentication := false;
// Set the authentication class to NTLM
AuthenticationClass := TIdNTLMAuthentication;
end
else
begin
// Next check for Basic
if (pos('Proxy-Authenticate: Basic',FHttp.Response.RawHeaders.Text) > 0) then
begin
AuthenticationClass := TIdBasicAuthentication;
FHttp.ProxyParams.BasicAuthentication := true;
end
else
begin
// Then Digest
if (pos('Proxy-Authenticate: Digest', FHttp.Response.RawHeaders.Text) > 0) then
AuthenticationClass := TIdDigestAuthentication
end;
FHttp.ProxyParams.ProxyUsername := FProxyUsername;
FHttp.ProxyParams.ProxyPassword := FProxyPassword;
end;
end;
procedure TMyHttpProxyClient.OnProxyAuthentication(Sender: TObject; Authentication: TIdAuthentication; var Handled: boolean);
begin
Handled := True;
end;
要注意的事,inntlm.pas存在bug,function SetupLanManagerPassword(APassword, nonce: String): String;和function CreateNTPassword(APassword, nonce: String): String;将lm_resp: array [1..24] of Char转化为string,没有考虑lm_resp中存在#0情况.
- indy 实现http proxy
- 使用INDY的IdMappedPortTCP控件实现动态的HTTP代理服务器
- 在iPhone上实现Http服务-Proxy
- http proxy
- indy
- delphi Indy 实现天气预报功能
- 使用indy http方式上传文件
- socks5 proxy for http proxy
- 利用Indy的TIdFtp控件实现FTP协议 for http://www.cittm.net/Article/sheji/delphi/200601/1227.html
- 通过php实现支持断点续传的http proxy
- 一个简单的Golang实现的HTTP Proxy
- FTP客户端(Delphi7&Indy组件实现)
- 语音聊天程序实现(INDY, ACM, DELPHI)
- 用Indy实现FTP客户端(delphi)
- HTTP Proxy Finder
- apt.conf----http::proxy
- python http proxy 驗証
- python http proxy
- 正在coding的一个开源3d小引擎——zge
- acm pku 2479解题报告
- 叶帆工控自动化一览
- 什么是ERP和ERP的作用
- 按指定规则没找到任何链接! 获取列表网址失败,无法完成采集!
- indy 实现http proxy
- oracle unique index
- ATOMN270+945GSE 的EC
- What I'm afraid of?
- MFC程序的来龙去脉
- Linux系统信息查看命令大全
- oracle字段类型
- Consistent Hashing(ZZ)
- 郁闷的索尼电视