WinInet库接口穿越代理服务器曾经提到过WinInet穿透代理服务器可行(传输大文件或大数据包,不能保证续传),而原生socket时如果服务器需要认证则会失败,后来经过研究后,我们是搞定了的。下面简单说一下:
代理服务器(如ISA服务器)的认证种类有多中,如Basic、NTLM、Digest等单类或多类的组合。
1、Basic认证
第一步、和服务器的初次数据交换后,检查包含"Proxy-Authenticate: Basic"的应答信息,则表示服务器可以采用Basic认证方式,当然也可能同时包含其他认证方式,只要通过一种方式认证即可。
第二步、使用sUser、sPasswd信息的Base64位编码组合,再次和服务器进行交互(指明以Basic方式认证)。如果成功,则认证通过;否则,为用户密码信息错误;
2、NTLM认证
第一步、和服务器的初次数据交换后,检查包含"Proxy-Authenticate: NTLM"的应答信息,则表示服务器可以采用NTLM认证方式,当然也可能同时包含其他认证方式,只要通过一种方式认证即可。
第二步、使用sHost、sDomain信息的Base64位编码组合,再次和服务器进行交互(指明以NTLM方式认证)。如果成功,则成功则继续下一步;否则,为主机及域名信息错误;
第三步、根据第二步获取的应答数据进行解析,并使用本地已知的sUser、sPasswd信息的Base64编码进行数据组装,再次和服务器进行交互(指明以NTLM方式认证)。如果成功,则认证通过;否则,为用户密码信息错误;
3、Digest认证
如NTLM类似
这是几年前预研的结果,如有需要的朋友,可以和我联系,我帮着找找看。
原生socket穿透HTTP代理服务器,布布扣,bubuko.com
时间: 2024-10-26 08:06:17