Como o WiFi no Android detecta se o dispositivo precisa entrar ou não?

28

Quando o dispositivo tenta se conectar a um ponto de acesso ou roteador, ele precisa entrar na página do portal cativo com a mensagem

"Faça login na rede Wi-Fi".

Como o ponto de acesso / roteador identifica que é necessária uma conexão para o dispositivo e qual é o processo por trás dele?

Sagar Vaghela
fonte

Respostas:

32

O URL de detecção difere entre diferentes versões do Android.

Para o Marshmallow, ele usa connectivitycheck.gstatic.com/generate_204, verifique o código aqui AndroidXRef - Marshmallow 6.0.0_r1

Para Kitkat, ele usa customers3.google.com/generate_204, verifique o código AndroidXRef - KitKat 4.4.4_r1

RyanDH
fonte
na verdade, isso é muito melhor resposta e deve ser marcado como a resposta correta
Moataz Elmasry
Eu não queria sequestrar a resposta editando-a, então deixarei um comentário. Demorei um pouco para perceber que o URL de detecção aciona a notificação se não puder ser alcançada. Além disso, eu precisava do meu ponto de acesso para responder a essa solicitação com algum tipo de conteúdo - no meu caso, retornei um código 200 e a página de índice do meu servidor Web quando / generate_204 é solicitado. Sem conteúdo na resposta, independentemente do código de retorno, eu receberia uma notificação "O Wi-Fi não tem acesso à Internet".
ubomb
@ubomb Parece estranho, já que http://connectivitycheck.gstatic.com/generate_204na verdade retorna um 204 sem conteúdo e, obviamente, funciona. Talvez você tenha deixado de fora o Content-Length: 0cabeçalho.
Tamir Daniely
9

Essa tecnologia é chamada "portal cativo". Existem várias implementações. Como eu sei, o Android tenta acessar um arquivo nomeado generate_204em um dos servidores do Google e, se não for possível, uma notificação é gerada.

Outras leituras na Wikipedia: Captive_portal

Άνδρας
fonte
Na verdade eu sei sobre o portal cativo. Mas eu sei o URL específico para verificá-lo. Eu quero saber como é o trabalho. Não é o que é.
Sagar Vaghela
1
O que você quer dizer com "como é o trabalho"? O Android envia uma solicitação e, se não houver resposta positiva, significa que não há conexão com a Internet e é gerada uma notificação. É assim que funciona.
Άνδρας
Qual é o URL específico no qual a solicitação do Android. Eu tenho menção em questão.
Sagar Vaghela 15/09/2015
2
No seu comentário anterior, você disse que conhece o URL específico. Eu acho que éhttps://www.gstatic.com/generate_204
Άνδρας
2
O URL parece ser customers3.google.com/generate_204 . Informações retiradas deste site para o cromo, provavelmente o mesmo para o Android. chromium.org/chromium-os/chromiumos-design-docs/…
benjamin
2

Um portal cativo é geralmente implementado direcionando todo o tráfego para uma resposta HTTP válida (200). Essa resposta HTTP é o que aparece no portal cativo.

Isso pode ser feito com ferramentas como iptables ou dnsmasq.

Jude Osborn
fonte