esp8266 - 如何让nodemcu在连接到ESP8266 AP时弹出浏览器窗口?

标签 esp8266 nodemcu

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

最佳答案

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

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

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

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

关于esp8266 - 如何让nodemcu在连接到ESP8266 AP时弹出浏览器窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665925/

相关文章:

c++ - 如何创建用于多个源文件的全局变量/包含/函数

c - 在 esp8266 上发送多播?

file - 写入文件nodemcu lua

arduino - 通过 UART 从 ESP8266 (NodeMCU) 向 Arduino 发送数据

timer - 如果 NodeMCU 计时器中的代码在我设置的计时器间隔内执行,会发生什么情况?

amazon-web-services - 用 ESP8266 连接手机

c++ - 将状态枚举的全局更改为函数中的 int 值

json - ESP8266 - PubSubClient - 消息字符限制

mqtt - 无法连接到 test.mosquitto.org

lua - 调用文件nodemcu lua 8266