问题标签 [captivenetwork]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - CaptiveNetwork API (iOS) 的 Android 等效项是什么?
我希望注册用户连接到 WiFi 网络并无缝进行身份验证。这应该在用户运行应用程序并检测到特定 SSID 时发生。
CaptiveNetwork 编程接口允许应用程序与 Captive Network Support 进行交互,该系统组件负责检测在提供 Internet 访问之前需要用户交互的网络。这些网络通常是机场和酒店等公共场所的 WiFi 热点。
android - 从 Android 的强制门户浏览器 (CaptivePortalLogin) 启动默认浏览器
在 Android 设备上,我们的强制门户在 Android 的强制门户浏览器中启动。身份验证后,我们将用户重定向到状态页面,在那里他们可以看到他们的会话信息、剩余时间和数据等。大多数用户选择保持此页面打开。
问题是状态页面重定向发生在 Captive Portal 浏览器中,最终将关闭。有什么方法可以在 Captive Portal 浏览器中的“完整”浏览器中打开状态页面?
大多数相关的 Android 代码似乎都在 CaptivePortalLoginActivity.java 中。mBrowserBailOutToken 变量看起来很有趣,但我看不出我们如何获得令牌。
关于如何处理这种情况的任何其他想法也将不胜感激。
android - 如何知道连接的 WiFi 是围墙花园(Captive Portal)?
我知道有办法通过检查类似的响应来确定 WiFi 网络是否是强制门户"http://clients3.google.com/generate_204"
。
但我的问题有些不同。我们都知道,在 Android 上,当我们连接到 WiFi 网络时,连接周期会经历NetworkInfo.DetailedState类中提到的许多状态,如AUTHENTICATING
、OBTAINING_IPADDR
等VERIFYING_POOR_LINK
。此外,其中一个状态是CAPTIVE_PORTAL_CHECK
android 系统检查网络是否正在连接是否被俘虏。为此,Android 使用CaptivePortalTracker#isCaptivePortal(InetAddress server)生成boolean
. 所以我们确定Android知道连接是否被限制(俘虏)
所以,我的问题是,Android 系统是否提供了一些回调或一些状态,我们可以通过它了解网络是强制门户而不需要手动检查它吗?既然 Android 系统已经检查了网络的强制门户,我们是否需要再次做同样的事情?
PS 我只针对 API 19 (KitKat 4.4.2)。
wifi - 如何存储通过强制门户访问 wifi 的客户端名称?
我想为开放的 wifi 网络设置一个强制门户,用户只需输入他们的名字就可以访问互联网。
其目的是建立一个当前连接到网络的名字列表。理想情况下,此设置将记住 MAC 地址,并能够在下次自动访问 wifi 网络时迎接返回的客户端(在外部显示器上)。(客户可以在无需通过强制门户重新登录的情况下访问互联网吗?)
谢谢
javascript - 防止 Captive Portal 在身份验证后自动关闭 (Android)
所以简单的想法是我们有一个 RADIUS 服务器设置,以允许用户通过用户凭据向我们的 Ruckus 控制器进行身份验证。在认证时,用户应该被重定向到一个允许他们管理 MAC 认证设备的页面。
到目前为止,在我们测试过的所有设备上,包括“较旧”的 Android 设备,这似乎都不是问题,并且一切正常运行。然而,对于 Android 的 Lollipop(5.0+)版本,强制门户已经发生了很大变化,其中一部分更改是自动关闭在您加入网络时启动的强制门户。因为我们希望他们在身份验证后被重定向到 MAC 设备管理页面,这样他们就可以添加他们当前登录的设备并避免再次登录,这很糟糕。
我试过的:
检测浏览器是否正在移动设备中启动,并在onbeforeunload中弹出一个警报,尝试保持浏览器打开。
当检测到成功的身份验证(本质上是我们自己管理重定向)时,打开一个新的浏览器窗口,指向重定向 URL。
对重定向的 URL 执行选项 2,然后执行选项 1
什么不起作用:
要求用户禁用其设备上的强制门户选项。不试图将一般用户指向高级控件。
创建一个开放网络来访问 MAC 管理器,它必须经过某种身份验证。
现在的解决方案:
我们对这个解决方案不满意,但现在我们只是要求用户通过网络进行身份验证,然后打开他们的浏览器并转到用户用来手动添加他们不能使用的设备的基本登录门户页面(非网络身份验证)连接(如打印机、游戏设备等)。虽然这可行,但用户必须登录、打开浏览器、手动输入 url 并再次登录是一件很痛苦的事情。
这不是人们没有遇到的问题,请参见此处,我只是无法从遇到问题的任何人那里找到解决方案。当然,在这种情况下,有一些方法可以利用 javascript 或其他东西来保持浏览器打开。如果没有,有人对管理事物有更好的想法吗?
http - Cloudtrax HTTP 身份验证 API 调试
我正在使用Cloudtrax HTTP 身份验证 API 为具有强制门户的路由器身份验证创建自定义逻辑。
当路由器请求状态请求时,服务器会响应以下内容:
这应该是登录用户的答案的正确格式。问题是强制门户仍然存在。
我不知道可能是什么问题,也找不到路由器或 cloudtrax 上的日志来查看可能出现的问题。
编辑:
我正在处理 django (python) 上的 RA 字符串:
node.js - 避免强制门户
我正在尝试制作一个没有互联网连接的设备,它将任何连接到其 wifi 的连接重定向到一个独特的页面,一个海盗盒之类的。我使用 NodeJS 服务器和 dnsmasq 将所有连接重定向到服务器。这工作得很好,但是当我尝试连接 Android 或 iOS 智能手机时,它会将其检测为强制门户,并且页面显示在身份验证弹出窗口中。
我看到该设备尝试连接到某些 IP,如果没有响应,则假定连接是通过强制门户进行的。
有没有办法避免这种情况?
非常感谢!
编辑:我找到了“白名单”的页面列表:
但是由于我的设备没有真正连接到互联网,我该如何发送这些页面?
jquery - Captive Portal:AJAX 帖子非常难以预测
我们正在尝试在使用 Captive Portal 加入网络时添加注册步骤。这仅适用于桌面,移动用户的身份验证由移动应用程序处理。该过程在普通浏览器中运行良好,但在强制门户窗口中 AJAX 请求失败。
虽然看起来很随机,但我实际上已经使用强制门户窗口收到了成功响应,但大多数时候它返回失败。
任何帮助都会很棒!
android - NetworkInfo getExtraInfo() 中的字符串“captive_portal_detected”是否是强制门户的可靠指示?
我有一个我在开发中使用的三星 6.0.1。我想知道网络是否是强制门户。最近发生了一些变化,使开发人员知道此信息,这很好。但似乎没有办法只从 NetworkInfo 中检索数据。
我发现,如果我可以使用 Wi-Fi NetworkInfo 的实例,我可以调用 getExtraInfo,并且强制门户的指示将作为字符串“captive_portal_detected”出现在其中,这很奇怪,这是一个字符串而不是布尔属性,但这不是我的问题。
这个字符串是什么版本的 Android 开始弹出的,这是常规操作系统的一部分还是三星人为 s7 弹出的东西?我可以依赖这个字符串作为与 NetworkInfo 关联的接入点实际上是强制门户的指示符吗?我在任何地方都找不到关于这个值的文档。
android - 强制Android应用程序连接到棉花糖中的wifi
我正在尝试从移动数据连接 (3G/4G) 强制转移到 wifi 连接。
然而,这似乎在 Lollipop 中有效,但是对于棉花糖来说,网络连接可用性的回调并没有到来。
有什么我想念的吗?
本质上,我想转移到 wifi,以便我可以连接到可用的强制网络。从移动数据转移到 Wifi 是我尝试做的第一步。