huzhangyou 来,继续讨论 IE 和 TIdHTTP 的实现

Waiting4you 2007-06-04 02:43:34
接上文:http://community.csdn.net/Expert/TopicView.asp?id=5578851

用TIdHTTP直接Get("http://www.csdn.net")

抓包结果是:
10.123.106.35 211.100.26.123 TCP 1746>80 [SYN] Seq=0 Len=0 MSS=1460
10.123.106.35 211.100.26.123 TCP 1746>80 [SYN] Seq=0 Len=0 MSS=1460
10.123.106.35 211.100.26.123 TCP 1746>80 [SYN] Seq=0 Len=0 MSS=1460

三次相同, 显然它是试图去连csdn(211.100.26.123), 连接三次没搞定,显示超时.

设置了ProxyParams后:
10.123.106.35 10.123.20.9 HTTP GET http://www.csdn.net:80/ HTTP/1.1 //下面的Proxy-Authorization: Basic Og==\r\n)
10.123.20.9 10.123.106.35 TCP [TCP segment of a reassembled PDU]
10.123.20.9 10.123.106.35 TCP [TCP segment of a reassembled PDU]
10.123.20.9 10.123.106.35 TCP [TCP segment of a reassembled PDU] //这些TCP传送的应该就是下面HTTP的一部分,最后型成一个HTTP协议
10.123.20.9 10.123.106.35 HTTP HTTP/1.1 407 Proxy Authentication Required ( The ISA Server requires authorization to fulfill the request. Access to the web Proxy service is denied. )\r\n
10.123.106.35 10.123.20.9 TCP 1775>8080 [ACK] Seq=169 Ack=4565 win=17520

添加了User和Password后:
10.123.106.35 10.123.20.9 HTTP GET http://www.csdn.net:80/ HTTP/1.1 //下面的Proxy-Authorization: Basic 有内容了^_^
10.123.20.9 10.123.106.35 HTTP Continuation or non-HTTP traffic //没有权限

对比IE的数据包,它的GET请求里的Proxy-Authorization是: NTLM .... 而不是 Basic.
我在Indy源码里找到一个叫TIdNTLMAuthentication的,它貌似可以生成NTLM的Authentication.但是只要一执行new TIdNTLMAuthentication就退出了,不知道这是怎么用的
...全文
702 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huzhangyou 2007-06-05
  • 打赏
  • 举报
回复
:-) 木办法 这是人家的特权
Waiting4you 2007-06-05
  • 打赏
  • 举报
回复
确实是这样, M$在IE里面做了很多自己特有的协议,很可恶
huzhangyou 2007-06-05
  • 打赏
  • 举报
回复
结论就是

如果你需要使用TIDHttp
你就必须设置ProxyParams参数

如果你使用TIdNTLMAuthentication
可以看看他的代码 我没有研究

到此 基本上算是完毕了
huzhangyou 2007-06-05
  • 打赏
  • 举报
回复
恩 继续
看了一下包

首先 48 49个包的时候
第一次握手 正常

第二次数据交互 50个包
checksum: 0x933c [incorrect, should be 0xf489]
check sum 值不对 错误
表示你没有获得授权 进行继续链接
表示你的 代理设置 用户名密码不正确
导致在进行验证的时候 告诉你出错了

当然你从 51个包可以看出来
checksum: 0x93f5 [incorrect, should be 0xc323]


GET http://www.csdn.net:80/ HTTP/1.1

Host: www.csdn.net

Accept: text/html, */*

User-Agent: Mozilla/3.0 (compatible; Indy Library)

Proxy-Authorization: Basic eW1hbzpwMG85aThVNw==

这里表示你已经发送了数据了
就是表示 TIDHttp本身没有问题
只是你需要设置他的 代理信息
才可以进行处理
Waiting4you 2007-06-05
  • 打赏
  • 举报
回复
是OpenSSL,写错啦,不好意思:-P


http://www.openssl.org
huzhangyou 2007-06-05
  • 打赏
  • 举报
回复
OK 谢谢 我有时间 研究一下

这几天新产品上线 太忙了
Waiting4you 2007-06-05
  • 打赏
  • 举报
回复
因为TIdNTLMAuthentication的关系,研究了一下午的OpenSLL,呵呵.

它是一个用于安全连接的库,目前觉得简单使用还是不错的,自带的连接功能比ACE简单多了,嘻嘻,对信仰兄的服务器开发可能有点帮助:)

http://www.sqlite.com.cn/POPlist.asp?classid=16

http://www.opensll.org
Waiting4you 2007-06-04
  • 打赏
  • 举报
回复
好,现在抓的包都在公司里,我明天一早就发给你
huzhangyou 2007-06-04
  • 打赏
  • 举报
回复
把 0.123.106.35 10.123.20.9 HTTP GET http://www.csdn.net:80/ HTTP/1.1 //下面的Proxy-Authorization: Basic Og==\r\n)
这个包给我整个发过来 我试试
huzhangyou 2007-06-04
  • 打赏
  • 举报
回复
好 晚上来分析一下
嘿嘿
这几个包很重要
daily66 2007-06-04
  • 打赏
  • 举报
回复
顶下
Waiting4you 2007-06-04
  • 打赏
  • 举报
回复
TIdNTLMAuthentication需要ssleay32.dll和libeay32.dll这两个文件, 不知道这是什么库上的

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧