2

例如,我知道在机场,我已经连接到他们的 AP,它会弹出一个浏览器窗口来登录我的设备。是否可以使用 lua 中的 NodeMCU,甚至使用 c 固件来做到这一点?

4

2 回答 2

1

您可能想尝试基于 NodeMCU 的CaptiveIntraweb 项目 ( https://github.com/reischle/CaptiveIntraweb )。

ESP8266 社区论坛上也有讨论解决方案细节的线程 ( http://www.esp8266.com/viewtopic.php?f=32&t=3618 )。

于 2015-09-01T10:40:18.923 回答
1

这可以通过将连接客户端 [通过 DHCP] 的 DNS 服务器设置为某种 DNS 代理来实现。它不需要是功能齐全的 DNS 服务器,它只需要能够为任何主机名查询返回静态 DNS 答案将请求转发到真正的 DNS 服务器,以照常解析主机名。

静态答案通过伪造 DNS 答案有效地劫持了 DNS 级别的 Web 请求,导致所有主机名解析为本地 Web 服务器的 IP 地址。该本地 Web 服务器会忽略任何 Uri 详细信息,并为每个请求提供登录提示。它还必须维护已验证的客户端 MAC 地址列表。

NodeMCU 确实有一个内置的 DHCP 服务器,作为其内置 WiFi AP 的一部分,但是在 ESP8266 的有限内存中同时运行 Web 和 DNS 代理将是一个绝妙的技巧。我认为其中两个协同工作,使用 SPI 总线接口可能是可行的……甚至可能是其中三个,一个专用于维护经过身份验证的 MAC 列表,使它们过期等。

请注意,我在 ESP 8266 上所做的唯一部分是一些非常简单的 Web 服务器功能,所以它主要是理论。如果您尝试一下,我会非常有兴趣听到它。:-)

于 2015-08-22T12:01:54.807 回答