In che modo il WiFi in Android rileva se il dispositivo deve accedere o no?


28

Quando il dispositivo tenta di connettersi a un punto di accesso o router, deve accedere alla pagina del portale captive con il messaggio dicendo

"Accedi alla rete Wi-Fi".

In che modo il punto di accesso / router identifica la necessità di un accesso per il dispositivo e qual è il processo dietro di esso?

Risposte:


32

L'URL di rilevamento differisce tra le diverse versioni di Android.

Per Marshmallow, utilizza connectivitycheck.gstatic.com/generate_204, controlla qui il codice AndroidXRef - Marshmallow 6.0.0_r1

Per Kitkat, utilizza client3.google.com/generate_204 controlla il codice AndroidXRef - KitKat 4.4.4_r1


in realtà questa è una risposta molto migliore e dovrebbe essere contrassegnata come la risposta corretta
Moataz Elmasry

Non volevo dirottare la risposta modificandola, quindi lascerò solo un commento. Mi ci è voluto un po 'per capire che l'URL di rilevamento attiva la notifica se non è possibile raggiungerla. Inoltre, avevo bisogno che il mio punto di accesso rispondesse a questa richiesta con qualche tipo di contenuto - nel mio caso ho restituito un codice 200 e la pagina dell'indice del mio server web quando viene richiesto / generate_204. Senza contenuto nella risposta, indipendentemente dal codice di ritorno, riceverei una notifica "Il Wi-Fi non ha accesso a Internet".
ubomb,

@ubomb Sembra strano, dato che in http://connectivitycheck.gstatic.com/generate_204realtà restituisce un 204 senza contenuto e ovviamente funziona. Forse hai appena lasciato Content-Length: 0l'intestazione.
Tamir Daniely,

9

Questa tecnologia si chiama "Captive portal". Esistono diverse implementazioni. Come so, Android tenta di raggiungere un file denominato generate_204su uno dei server di Google e, se non è possibile, viene generata una notifica.

Ulteriori letture su Wikipedia: Captive_portal


In realtà so di captive portal. Ma conosco l'URL specifico per verificarlo. Voglio sapere come funziona. Non è quello che è.
Sagar Vaghela,

1
Cosa intendi con "come funziona"? Android invia una richiesta e, in assenza di una risposta positiva, significa che non esiste una connessione a Internet e viene generata una notifica. Funziona così.
Άνδρας

Qual è l'URL specifico su cui richiesta Android. Ho menzionato in questione.
Sagar Vaghela,

2
Nel tuo commento precedente hai affermato di conoscere l'URL specifico. Penso che siahttps://www.gstatic.com/generate_204
Άνδρας

2
L'URL sembra essere client3.google.com/generate_204 . Informazioni tratte da questo sito per il cromo che è probabilmente lo stesso per Android. chromium.org/chromium-os/chromiumos-design-docs/…
benjamin

2

Un portale captive viene generalmente implementato indirizzando tutto il traffico verso una risposta HTTP valida (200). Questa risposta HTTP è ciò che appare nel portale captive.

Questo può essere fatto con strumenti come iptables o dnsmasq.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.