更新时间:2023-12-04
首先我们需要了解一下portal认证的流程,以苹果终端为例:
1. 先是获取ip地址
2. 发起探测域名dns请求,这里苹果域名为 captive.apple.com
3. 根据dns应答报文中的ip地址建立tcp连接
4. 发起第一个探测报文的http/1.0 get请求,captive.apple.com/hotspot-detect.html
5. 由于我们返回200 ok并携带内容a的回复报文,因此苹果再起发起相同请求,但http版本是1.1,captive.apple.com/hotspot-detect.html
6. 针对这个http/1.1 get请求,返回第一个mov302,带上x和c的url
7. 终端再发起这个带x和c的http get请求,这时我们再次mov302带上认证页面具体路径的请求
8. 接下来就是认证页面中各种资源请求与回复
9. 加载完portal页面后,苹果会再次主动发起http/1.0 get第二个探测报文请求,captive.apple.com/hotspot-detect.html
10. 这时由于加载完成认证页面,我们返回的依然是200 ok,但是携带了Success内容。
11. 终端主动发起http/1.1 get的请求,auth.wifi.com/sangforjudge.html 12,因此返回200 ok。此时就可以点击 “我要认证上网” 这个按钮进行认证