苹果手机连接WIFI的认证机制(公开版)

问题描述:

苹果连接WIIF有自己的认证机制,简单来说就是请求http://captive.apple.com/hotspot-detect.html等一些列网页的成功返回网页。中途退出就会导致WIFI直接断掉!无法进一步弹出我们的广告页面或者认证页面。就算弹出了左上角也是取消而非完成,联网符号是4G而非WIFI。

这里教程在于如何弹出自己的认证网页同时完成苹果WIFI连接,可用于各种wifi路由器。

背景描述:

我有一块ESP8266 WIFI模块作为服务器存放有网页,需要它辐射WIFI,苹果手机连上去弹出认证页面或者广告页面,同时保证WIFI成功连接,进一步跳转到外部网址!

苹果手机连上去之后,wifi模块分别检测到苹果有以下的请求!

第一行: 苹果请求的网址

第二行:苹果手机分配的IP                                          (用来确定是不是同一个手机发出的)

第三行:苹果手机请求的网址 HTTP版本号               (用于判断这是否为非第一次http1.0探测)

第四行:调用WIFI模块里面自己写的请求处理的方法    

说明:

一般苹果收到网页

<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>

就认为这个WIFI可以上网,连接成功,4G变WIFI,左上角取消变完成。

但是实际上,只要标题为Success就可以了,其中Success大小写敏感。

苹果认证机制

前提动作:打开苹果手机,连接自己WIIF模块的热点。

情况一 苹果第一次连接WIFI

1-1苹果第一次探测  http://captive.apple.com/hotspot-detect.html (http1.0) 

     1-1-1如果收到的网页标题为 <TITLE>Success</TITLE> (大小写敏感),认为这个WIFI可以联网,4G变WIFI,左上角取消变完成。

  1-1-2如果没有收到网页标题为 <TITLE>Success</TITLE>的网页,认为这个WIFI有网页认证机制,马上发起下一个探测。(可能会等一段时间,中途手机没啥反应)

特别说明,在第一次探测我们自己人为的回应的网页里,不管加入任何外部跳转,苹果都不会跳转出去!!!

1-2苹果第二次探测 http://apple.com/library/test/success.html(http1.0)

      1-2-1如果收到的网页标题为 <TITLE>Success</TITLE> (大小写敏感),认为这个WIFI可以联网,4G变WIFI,左上角取消变完成。

      不同于1-1-1,这一次我们可以在人为的回应网页里加入外部302跳转,可以跳转到我们自己的广告页面或者上网认证页面。

     例如:我们回应重定向网页  返回值 200  

  String responseHTML="<HTML><HEAD><meta HTTP-EQUIV='REFRESH' content='0; url=http://192.168.4.1/index.html'/><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>";
  webServer.send(200, "text/html", responseHTML);  

  其中: 

<meta HTTP-EQUIV='REFRESH' content='0; url=http://192.168.4.1/index.html'/>

  用于对网页的重新定向。

  苹果手机马上切换到我们自己服务器的网页 http://192.168.4.1/index.html,并且由于网页标题<TITLE>Success</TITLE>使得苹果误认为收到苹果官网的成功,认证左上角取消-完成,4G变WIFI符号。

        连接WIFI成功结束!

       1-2-2 如果没有收到网页标题为 <TITLE>Success</TITLE>的网页,则认证失败。

        即使我们给了网页重新定向,苹果也会切换到广告页面或者上网认证页面。但是,左上角取消,符号是4G,中途任何退出这个界面,马上断开WIFI。

情况二 苹果第二次以上连接WIFI,之前成功完成过!

2-1第一次探测  http://captive.apple.com/hotspot-detect.html(http1.0)

  2-1-1如果收到的网页标题为 <TITLE>Success</TITLE> (大小写敏感),认为这个WIFI可以联网,4G变WIFI,左上角取消变完成。

  2-1-2如果没有收到网页标题为 <TITLE>Success</TITLE>的网页,认为这个WIFI有网页认证机制,马上发起下一个探测。(可能会等一段时间,中途手机没啥反应)

特别说明,在这次探测我们自己人为的回应的网页里,不管加入任何外部跳转,苹果都不会跳转出去!!!

2-2第二次探测  http://captive.apple.com/hotspot-detect.html(http1.1

   请注意,苹果紧接着发出 HTTP1.1的探测请求。

   2-2-1如果收到的网页标题为 <TITLE>Success</TITLE> (大小写敏感),认为这个WIFI可以联网,4G变WIFI,左上角取消变完成。联网结束。

如果这时候我们回应   网页如下  返回值 200 ,直接做重定向网页地址,好像不会弹出我们的广告页面或者认证页面。(也可能我忘记测试了)

<HTML><HEAD><meta HTTP-EQUIV='REFRESH' content='0; url=http://192.168.4.1/index.html'/><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>";

webServer.send(200, "text/html", responseHTML);// 返回请求回应

     所以要想弹出自己的广告页面或者认证页面,必须回复失败。也就是网页标题   <TITLE>任何都行只要不是Success</TITLE>,那就进入下一步

    2-2-2如果没有收到的网页标题为 <TITLE>Success</TITLE> (大小写敏感)

我们直接返回自己的广告页面或者认证上网页面,返回值 200

苹果直接弹出我们的广告页面或者认证上网页面,只是左上角是取消,4G符号。

苹果紧接着发出第三次探测。

2-3第三次探测  http://captive.apple.com/hotspot-detect.html(http1.0)

 这次又是http1.0的探测,必须给予网页标题为 <TITLE>Success</TITLE>的回应,这样4G变WIFI,左上角取消变完成。

  如果不给予,认证失败,任何切出去页面的动作都会直接断了WIFI。

QQ 1051196347

猜你喜欢

转载自www.cnblogs.com/kekeoutlook/p/10667380.html