使用 Esp8266 通过 Captive Portal

Passing Captive Portal with Esp8266

我正在尝试绕过 iOS 上的强制门户,成功率为 0。 Web 服务器是基于 WiFiManager.h lib 的 Wemos ESP8266,我一直在研究 lib 以满足我的需要。实现的功能之一是在开发板设置为 Wifi 后立即在 HTML 上打印开发板的 IP 地址,然后关闭开发板的 WiFi 信号。

我成功地将 PC 用户重定向到所需的页面,但我使用强制门户很难存档此类功能​​。 在我的研究中,我发现这个 <html> success </html> 代码可以让俘虏误以为我有互联网连接!但我没能正确实施。

有人可以帮忙吗?如何正确处理代码以便俘虏被绕过。泰

在 setup() 中使用 Arduino IDE/bootloader 我这样做:

const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 1, 1);
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP("My Device SSID");

dnsServer.start(DNS_PORT, "*", apIP);

webServer.on("/hotspot-detect.html", handleAppleCaptivePortal);
webServer.begin();

循环只是

void loop() {
    dnsServer.processNextRequest();
    webServer.handleClient();
}

处理函数如下所示:

void handleAppleCaptivePortal() {
    String Page = F("<HTML><HEAD><TITLE>Success</TITLE></HEAD><BODY>Success</BODY></HTML>");

    webServer.sendHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    webServer.sendHeader("Pragma", "no-cache");
    webServer.sendHeader("Expires", "-1");
    webServer.send(200, "text/html", Page);
    return;
}

这似乎完全是在伪造我的 iPhone。它只是连接到网络,就好像它有 Internet 连接一样。