Když se zařízení pokusí připojit k přístupovému bodu nebo routeru, musí se přihlásit na přihlašovací stránce portálu se zprávou
„Přihlásit se k síti Wi-Fi“.
Jak funguje přístupový bod / router identifikovat, že je pro zařízení vyžadováno přihlášení a jaký je proces za ním?
Odpověď
Detekční adresa URL se liší mezi různé verze systému Android.
Pro Marshmallow používá connectivitycheck.gstatic.com/generate_204, zkontrolujte kód zde AndroidXRef – Marshmallow 6.0.0_r1
Pro Kitkat používá klienty3.google.com/generate_204 zkontrolujte kód AndroidXRef – KitKat 4.4.4_r1
Komentáře
Odpověď
Tato technologie se nazývá „Zajatý portál“. Existuje několik implementací. Jak vím, Android se pokouší dosáhnout souboru s názvem generate_204
na jednom ze serverů Google, a pokud to není možné, vygeneruje se oznámení.
Další čtení na Wikipedii: Captive_portal
Komentáře
- Vlastně vím o captive portálu. Ale znám konkrétní URL, abych to zkontroloval. Chci vědět, jak to funguje. Ne to, co to je.
- Co tím myslíte – " jak to funguje "? Android odešle požadavek, a pokud není kladná odpověď, znamená to, že není připojení k internetu, a vygeneruje se oznámení. Takto to ' funguje.
- Která konkrétní adresa URL vyžaduje Android. Zmínil jsem se o tom.
- Ve svém předchozím komentáři jste řekl, že znáte konkrétní adresu URL. Myslím, že ' s
https://www.gstatic.com/generate_204
- Zdá se, že adresa URL je clients3.google.com/generate_204 . Informace převzaté z tohoto webu pro chrom, který je pravděpodobně stejný pro Android. chromium.org/chromium-os/chromiumos-design-docs/…
Odpověď
Captive portál je obecně implementován nasměrováním veškerého provozu na platnou odpověď HTTP (200). Tato odpověď HTTP je to, co se objeví na portálu pro přihlašování.
To lze provést pomocí nástrojů, jako jsou iptables nebo dnsmasq.
http://connectivitycheck.gstatic.com/generate_204
ve skutečnosti vrací 204 bez obsahu a samozřejmě funguje. Možná jste právě vynechaliContent-Length: 0
záhlaví.