wifi - Android 上没有互联网的强制门户

标签 wifi android-wifi mikrotik

再会。
我需要 WiFi 热点上的 Captive Portal,它可以在没有互联网的情况下工作并自动弹出通知或打开登录页面。
我在 RouterOS 6.27 上使用 Mikrotik。
我创建了热点,然后在 DNS 中添加了一个 RegExp,例如

.* = HOTSPOT_IP_ADDRESS

它在 Windows 和 iOS 中运行良好,因为它们的强制门户检测基于从某个网站获取响应。 Afaik - 任何回应。
但是对于 Android,它必须是一些特殊的响应,内容为空或状态代码 204 - 我仍然不确定。

我试图模拟给出 204 或空响应的谷歌页面,并使用此模拟页面重定向到我的服务器,但它并没有帮助 Android 显示通知。

所以我需要帮助在没有互联网的情况下在 Android 中制作强制门户通知。

谢谢。

最佳答案

每次您的手机与 AP 关联时,它都会发送一个初始测试 URL 请求。 Android 的一项功能是检测它是否被困并提供将用户带到启动页面,以便用户可以登录并从陷阱中释放。

只需确保允许 Android 的测试 URL 文件通过围墙花园即可。

作为引用,默认的 Android 4.0.1 AOSP 测试 URL 是 http://clients3.google.com/generate_204 ,它始终返回 204 响应代码。即使 DNS 受到干扰,在这种情况下也会返回 200 代码而不是预期的 204。

此外,获取 http://www.google.com/blank.html 也有一些变化。 ,这将返回一个长度为零的响应主体的 200 代码。所以如果你得到一个非空的 body ,这将是另一种确定你在围墙花园后面的方法。

关于wifi - Android 上没有互联网的强制门户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29856338/

相关文章:

java - 等到 wifi 在 android 上连接

android - 如何使用 Mockito 模拟上下文?

networking - Mikrotik - 添加第二个 WAN IP 并路由特定流量

linux - 在linux中从USB驱动器加载routerOS驱动程序

javascript - 如何将mac地址发送到node api服务?我需要 Mikrotik API

android - 无法在 Android 上原生使用 'libnl'。无法使用 `genl_ctrl_resolve()` 获取 nl80211 驱动程序

networking - 为什么要等待 DIFS 以检测 channel 是否空闲

Wi-Fi无法上网时Android Lollipop默认使用Mobile Data?

android - WIFI开启时通过移动数据发送请求。(Android L)

android - 如何以编程方式识别 Android 设备?