När enheten försöker ansluta till en åtkomstpunkt eller router måste den logga in på den inbyggda portalsidan med meddelandet
”Logga in på Wi-Fi-nätverk”.
Hur fungerar åtkomstpunkten / routern identifiera att en inloggning krävs för enheten och vad är processen bakom den?
Svar
Detekterings-url skiljer sig mellan olika Android-versioner.
För Marshmallow använder den connectivitycheck.gstatic.com/generate_204, kolla koden här AndroidXRef – Marshmallow 6.0.0_r1
För Kitkat använder den clients3.google.com/generate_204 koden AndroidXRef – KitKat 4.4.4_r1
Kommentarer
Svar
Denna teknik kallas ”Captive portal”. Det finns flera implementeringar. Som jag vet försöker Android att nå en fil med namnet generate_204
på en av Googles servrar och om det inte är möjligt genereras en avisering.
Ytterligare läsning på Wikipedia: Captive_portal
Kommentarer
- Jag vet faktiskt om fångportalen. Men jag känner till den specifika webbadressen för att kontrollera den. Jag vill veta hur det fungerar. Inte vad det är.
- Vad menar du – " hur det fungerar "? Android skickar en förfrågan, och om det inte finns något positivt svar betyder det att det inte finns någon anslutning till internet, och avisering genereras. Att ' är hur det fungerar.
- Vilken är den specifika webbadressen för vilken Android begär. Jag har nämnt i frågan.
- I din tidigare kommentar sa du att du känner till den specifika webbadressen. Jag tror att det ' s
https://www.gstatic.com/generate_204
- URL: en verkar vara clients3.google.com/generate_204 . Information hämtad från den här webbplatsen för krom som förmodligen är densamma för Android. chromium.org/chromium-os/chromiumos-design-docs/…
Svar
En captive portal implementeras generellt genom att rikta all trafik till ett giltigt HTTP-svar (200). Det här HTTP-svaret är det som visas i den fångna portalen.
Detta kan göras med verktyg som iptables eller dnsmasq.
http://connectivitycheck.gstatic.com/generate_204
faktiskt returnerar en 204 utan innehåll och fungerar uppenbarligen. Du kanske bara utelämnadeContent-Length: 0
rubriken.