Wenn das Gerät versucht, eine Verbindung zu einem Zugangspunkt oder Router herzustellen, muss es sich auf der Captive-Portalseite mit der Meldung
„Beim Wi-Fi-Netzwerk anmelden“.
Wie funktioniert der Zugangspunkt / Router? Stellen Sie fest, dass für das Gerät eine Anmeldung erforderlich ist und wie der Prozess dahinter abläuft.
Antwort
Die Erkennungs-URL unterscheidet sich zwischen verschiedene Android-Versionen.
Für Marshmallow wird Connectivitycheck.gstatic.com/generate_204 verwendet. Überprüfen Sie den Code hier. AndroidXRef – Marshmallow 6.0.0_r1
Für Kitkat wird clients3.google.com/generate_204 verwendet. Überprüfen Sie den Code AndroidXRef – KitKat 4.4.4_r1
Kommentare
- Ich wollte ' die Antwort nicht entführen, indem ich sie bearbeite, also ' hinterlasse einfach einen Kommentar. Es hat eine Weile gedauert, bis mir klar wurde, dass die Erkennungs-URL die Benachrichtigung auslöst, wenn sie nicht erreicht werden kann. Außerdem benötigte ich meinen Zugangspunkt, um auf diese Anfrage mit Inhalten zu antworten. In meinem Fall gab ich einen 200-Code sowie die Indexseite meines Webservers zurück, wenn / generate_204 angefordert wurde. Ohne Inhalt in der Antwort würde ich unabhängig vom Rückkehrcode eine " erhalten. Wi-Fi hat keinen Internetzugang. " Benachrichtigung.
- @ubomb Scheint seltsam, da
http://connectivitycheck.gstatic.com/generate_204
tatsächlich einen 204 ohne Inhalt zurückgibt und offensichtlich funktioniert. Vielleicht haben Sie gerade den HeaderContent-Length: 0
weggelassen.
Antwort
Diese Technologie wird als „Captive Portal“ bezeichnet. Es gibt mehrere Implementierungen. Wie ich weiß, versucht Android, eine Datei mit dem Namen generate_204
auf einem der Google-Server zu erreichen. Wenn dies nicht möglich ist, wird eine Benachrichtigung generiert.
Weiterführende Literatur auf Wikipedia: Captive_portal
Kommentare
- Eigentlich kenne ich Captive Portal. Aber ich kenne die spezifische URL, um sie zu überprüfen. Ich möchte wissen, wie es funktioniert. Nicht was es ist.
- Was meinst du – " wie es funktioniert "? Android sendet eine Anfrage. Wenn keine positive Antwort eingeht, bedeutet dies, dass keine Verbindung zum Internet besteht und eine Benachrichtigung generiert wird. So funktioniert '.
- Welches ist die spezifische URL für welche Android-Anfrage? Ich habe in Frage erwähnt.
- In Ihrem vorherigen Kommentar haben Sie gesagt, dass Sie die spezifische URL kennen. Ich denke, es ist ' s
https://www.gstatic.com/generate_204
- Die URL scheint clients3.google.com/generate_204 . Informationen von dieser Website für Chrom, die wahrscheinlich die gleiche für Android ist. chrom.org/chromium-os/chromiumos-design-docs/…
Antwort
Ein Captive-Portal wird im Allgemeinen implementiert, indem der gesamte Datenverkehr auf eine gültige HTTP-Antwort geleitet wird (200). Diese HTTP-Antwort wird im Captive-Portal angezeigt.
Dies kann mit Tools wie iptables oder dnsmasq erfolgen.