连接Wifi时自动弹出登录页面是如何做到的?

当我们在连接一些公共场所的Wifi时,会发现这些Wifi都是不需要密码的,秒连接,但是网络一般不可用,需要二次弹出页面然后进行连接!

一般是接入公共网络,弹出认证页面,根据规则认证,最后连通网络。

其实原理非常简单,这个是手机支持的,就拿Iphone来说,在Iphone接入Wifi时会自动访问网站,来确认当前网络是否通顺,iphone会随机访问下列网站:

  • www.appleiphonecell.com
  • captive.apple.com
  • captive.apple.com
  • www.apple.com
  • www.itools.info
  • www.ibook.info
  • www.airport.us
  • www.thinkdifferent.us

不过最优先的访问网站是: http://www.apple.com/library/test/success.html

当访问网站时,网站返回:Success字段

完整Html内容如下:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Success</TITLE>
</HEAD>
<BODY>Success</BODY>
</HTML>

标题以及body体都是Success 经过测试,只要Title标签内容为Success  那么Iphone就会自动觉得网络是通顺的!

注意大小写是要区分的!

其次访问时第一次使用的是http1.0协议,短连接的形式,连接一次后断开,得到想要的内容。如果返回的不是想要的内容,不是Success则会弹出一个类似浏览器页面的窗口去显示返回的内容,其后端连接指向访问的地址!

其除此之外响应码不可以是200 必须是非200的响应码,可以使用302这样的重定向响应码!

当收到非200的响应码时ios会认为存在Captive Portal(无线认证)状态!

Captive Portal则为

如Iphone在接入免费WIFI时,访问的是http://www.apple.com/library/test/success.html 这个网站,这个网站的后台服务器地址是192.0.0.1 但是你本地拦截了这个访问,让它转向了你的本地服务器上去了,那么Iphone在与这个网站访问的所有过程都由你的服务器支配,进行交互,所以你需要一个支持Http1.0 和1.1协议的服务器。

因为iphone接入wifi测试wifi是否通顺的时,使用的是你的路由器访问的这个网站,当你在后台配置路由web重定向后,虽然iphone发送出去的包访问的是这个网站,但是路由器拦截后会转入你重定向的网站中。

那么在这个网站里,你可以编写一系列认证流程的前端代码,当认证成功后,给iphone返回一个http 200的响应码内容是success那么iphone就会认为网络连接通顺,则正常使用wifi连接,就不会在访问http://www.apple.com/library/test/success.html 这个网站了。

但是这就遇到了一个问题,那就是接入免费wifi后,我们后台只重定向了上面的这些网站,其它网站没有重定向,用户要是趁机访问起它网站怎么办?

答: 其实这个完全不用担心,因为这和ios内核有关,ios在做校验的时候,如果在还没有收到success这个http 200 响应码时是绝对不会让用户使用无线网络的,因为在收到success之前,ios除了不会让用户去主动使用wifi资源外,也不会在右上角弹出wifi图标。

如果用户在还未完成认证时退出,ios会自动断开与wifi的隐式连接,也就是断开连接!

这个和ios机制有关,所以我们只需要知道,ios在收到success之前绝对不会让用户使用wifi功能的,更别说访问其他网站了!

同时ios把这种机制叫做:Captive Network Assistant(CNA)

GET /library/test/success.html HTTP/1.0
Host: www.apple.com
User-Agent:CaptiveNetworkSupport/1.0 wispr
Connection: close

这个是路由抓包获取到的,其实可以从Host或User-Agent来判断是ios还是安卓,因为安卓的校验方式和ios不同的!

当收到Http 1.0 200 或Http 1.1 200的响应状态码时且titile标签里的字段为Success则判定网络通顺,允许用户使用Wifi模块!

 

如何设置Wifi重定向呢?

你需要一个支持URL重定向的路由器:

一般情况下路由器的后台里有高级设置,高级设置里有URL重定向,或转发等功能,想要具体了解可以去WEB搜索一下!

 

安卓认证:

安卓其实和IOS认证流程一样,但是由于安卓是开源的,国内厂商太多了,而且默认的内核里使用的是:http://connectivitycheck.gstatic.com/generate_204 或:https://www.google.com/generate_204

这样的网站是国外的dns受到限制无法访问,国内的其他使用安卓内核的手机没有去了解,有兴趣可以去抓包看看,路由器抓包博主会在后面写教程出来!

其返回需要HTTP 204响应码,内容给空就行了!

否则则认为需要登录

系统支持:ios3.0以上 安卓4.0以上! 

而且安卓内核被修改的严重,安卓认证时返回的可能不是success也可能需要的是其它字段!

但是国内厂商较为好沟通,可以联系开发商协调,或者到开发者论坛询问流程即可!

 

打开网站认证:

还有一种方式,就是打开网站才能认证,默认是不弹出来的。

其原理是把路由全部转发到本地的一个web服务器上,然后在web服务器上写过滤代码,但是非常复杂,且效率低下,因为每一次的访问都要经过web服务器校验,然后转发给真正的访问地址!

 

 

其也有开源项目如:wifi dog ,但是这些项目只包含认证,不包括路由转发,如果想实现路由转发还是需要路由器支持,但是也可以刷固件,但是这样的方法就较为复杂了,如果有兴趣可以web搜索一下!

 

 

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 是否让用户接受协议或输入账号密码? A:这种情况通常是因为WiFi热点采用了身份认证的方式,需要用户登录或接受协议后才能正常使用网络。如果您不想每次使用WiFi都要输入账号密码或接受协议,可以考虑在登录页面勾选“记住密码”或者“自动登录”选项,下次连接WiFi热点时就无需再次输入。但是,请注意勾选该选项可能会降低网络安全性,因为密码将保存在设备上。另外,如果无法弹出登录页面,可以尝试切换至其他WiFi热点或联系网络管理员寻求帮助。 ### 回答2: 手机连上WiFi后自动弹页面是指在手机连接无线局域网(WiFi)之后,系统会自动弹一个网页或者应用程序页面。这种行为通常是由网络运营商或WiFi提供商设置的一种功能。 这样做的目的主要有以下几个方面。首先,网络运营商或WiFi提供商可以通过这种方式向用户推送相关的信息或者广告,从而增加他们的品牌曝光率或者营收。在用户使用设备的过程中,这些弹出页面可以提供一些优惠活动或者促销信息,吸引用户进行购买或者使用相关服务。 此外,这种自动弹页面的功能也可以提供一些网络认证的功能。比如,用户可能需要输入用户名和密码进行登陆认证,才能获得上网的权限。通过自动弹页面,用户就能方便地进行认证操作,提高用户体验。 然而,不少用户可能觉得这种自动弹页面的行为有些打扰,因为它可能会打断当前正在进行的操作,或者给用户强加一些不需要的信息。一些用户可能会选择关闭这个自动弹页面的功能,以避免不必要的干扰。 综上所述,手机连上WiFi后自动弹页面主要是为了推送信息、提供促销活动以及进行网络认证。这种功能可以增加运营商或WiFi提供商的收入,但同时也可能打扰部分用户的正常使用。用户可以根据自己的需求和喜好,选择启用或者关闭这个功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值