当设备尝试连接到接入点或路由器时,它必须在捕获的门户页面上登录,并显示消息“


“登录到Wi-Fi网络”。


接入点/路由器如何识别设备需要登录以及其背后的过程是什么?

#1 楼

不同的Android版本之间的检测网址有所不同。

对于棉花糖,它使用Connectivitycheck.gstatic.com/generate_204,在此处检查代码AndroidXRef-棉花糖6.0.0_r1

对于奇巧,它使用client3.google.com/ generate_204
检查代码AndroidXRef-KitKat 4.4.4_r1

评论


我不想通过编辑来劫持答案,所以我只留下评论。我花了一段时间才意识到,如果无法到达检测URL,则会触发该通知。另外,我需要访问点以某种内容来响应此请求-在我的情况下,当请求/ generate_204时,我返回了200代码以及Web服务器的索引页。响应中没有内容,无论返回代码如何,我都会收到“ Wi-Fi无法访问互联网”通知。

–炸弹
17年1月19日在23:29

@ubomb似乎很奇怪,因为http://connectivitycheck.gstatic.com/generate_204实际上返回了一个没有内容的204,并且显然可以工作。也许您只是省略了Content-Length:0标头。

–塔米尔·丹尼(Tamir Daniely)
18年6月17日在6:22

#2 楼

该技术称为“强制门户”。有几种实现。据我所知,Android尝试在其中一台Google服务器上访问名为generate_204的文件,如果无法访问,则会生成一条通知。

进一步阅读Wikipedia:Captive_portal

评论


实际上,我了解强制性门户网站。但是我知道要检查的特定URL。我想知道它是如何工作的。不是什么

– Sagar Vaghela
2015年9月15日在9:07

您是什么意思-“运作方式”? Android发送请求,如果没有肯定的响应,则表示没有互联网连接,并生成通知。就是这样。

–Άνδρας
2015年9月15日上午9:11

这是android请求的特定URL。我提到了问题。

– Sagar Vaghela
2015年9月15日9:15



在上一条评论中,您说您知道特定的URL。我认为是https://www.gstatic.com/generate_204

–Άνδρας
2015年9月15日9:28



该网址似乎是clients3.google.com/generate_204。从本网站获取的铬信息可能与android相同。 chrome.org/chromium-os/chromiumos-design-docs/…

–本杰明
2015年9月15日9:34



#3 楼

通常通过将所有流量定向到有效的HTTP响应(200)来实现强制门户。 HTTP响应就是在强制门户中出现的。

可以使用iptables或dnsmasq之类的工具来完成。