一直使用南京电信的小区10M宽带上网. 去年开始,南京电信就开始使用华为的Web认证.
这个系统比较奇怪, 在网页上放了一个ActiveX,但是这个ActiveX的唯一目的,似乎就是为了得到Local IP.
如果只是这个目的的话(现象上看也没有和MAC地址绑定之类的功能), 就完全没有必要了,HTTP Header上就已经可以得到Client IP 了.
昨天突然发现, Web认证的服务器升级了,导致我原来用的一个Java自动认证的程序不能用了, 怎么办呢, 反正是走的HTTP协议,让我来分析一下Client / Server之间HTTP通讯的具体内容吧.
所用工具:
- HTTP Analyzer : 用来分析HTTP通讯的内容, 非常方便. 这次用的是一个以前得到的版本,v1.5
- Eclipse 3.1 : 用来写我的Java Code, and Debug.
通过分析,发现一次成功的Web认证,主要有三次HTTP通讯.(见图1), 其中,
Request 1: 主要取得一个Session ID,就是Cookie中的JSESSIONID
Request 2: 可以忽略.
Request 3:做实际的Web认证操作,发送这个Request的时候,要注意两点:
1. Request Header中的Cookie信息中,需要包含Request-1中得到的Session ID,具体参考图2
2. Request Post data中,需要包含认证的用户名和密码等, 具体Post的data请参考图3
实际的Java Source code,就留待下回分解吧.