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

  • Jag ville inte ' t kapa svaret genom att redigera det, så jag ' Jag lämnar bara en kommentar. Det tog mig ett tag att inse att detekterings-URL: en utlöser aviseringen om den inte kan nås. Dessutom behövde jag min åtkomstpunkt för att svara på denna begäran med någon form av innehåll – i mitt fall returnerade jag en 200-kod samt indexsidan på min webbserver när / generera_204 begärs. Utan innehåll i svaret, oavsett returkoden, skulle jag få en " Wi-Fi har ingen internetåtkomst " avisering.
  • @ubomb Verkar konstigt eftersom http://connectivitycheck.gstatic.com/generate_204 faktiskt returnerar en 204 utan innehåll och fungerar uppenbarligen. Du kanske bara utelämnade Content-Length: 0 rubriken.

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.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *