android中的WiFi如何检测设备是否必须登录?


28

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

“登录到Wi-Fi网络”。

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

Answers:


32

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

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

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


实际上,这是一个更好的答案,应标记为正确答案
Moataz Elmasry

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

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

9

该技术称为“强制门户”。有几种实现。据我所知,Android尝试访问一个generate_204在Google服务器之一上命名的文件,如果不可能,则会生成通知。

进一步阅读Wikipedia:Captive_portal


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

1
您是什么意思-“运作方式”?Android发送一个请求,如果没有肯定的响应,则意味着没有互联网连接,并生成了通知。就是这样。
Άνδρας

这是android请求的特定URL。我有提到的问题。
Sagar Vaghela

2
在先前的评论中,您说您知道特定的URL。我认为这是https://www.gstatic.com/generate_204
Άνδρας

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

2

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

可以使用iptables或dnsmasq之类的工具完成此操作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.