Quando o dispositivo tenta se conectar a um ponto de acesso ou roteador, ele precisa fazer login na página do portal cativo com a mensagem
“Faça login na rede Wi-Fi”.
Como funciona o ponto de acesso / roteador identificar que um login é necessário para o dispositivo e qual é o processo por trás dele?
Resposta
O url de detecção difere entre diferentes versões do Android.
Para Marshmallow, ele usa conectividadecheck.gstatic.com/generate_204, verifique o código aqui AndroidXRef – Marshmallow 6.0.0_r1
Para Kitkat, ele usa clients3.google.com/generate_204 verifique o código AndroidXRef – KitKat 4.4.4_r1
Comentários
Resposta
Esta tecnologia é denominada “portal cativo”. Existem várias implementações. Como eu sei, o Android tenta acessar um arquivo chamado generate_204
em um dos servidores do Google e, se não for possível, uma notificação é gerada.
Leituras adicionais na Wikipedia: Captive_portal
Comentários
- Na verdade eu sei sobre o portal cativo. Mas eu sei o URL específico para verificar. Eu quero saber como funciona. Não o que é.
- O que você quer dizer – " como funciona "? 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. É ' como funciona.
- Qual é o URL específico em que o Android solicita. Eu mencionei em questão.
- Em seu comentário anterior, você disse que conhece o URL específico. Acho que ' s
https://www.gstatic.com/generate_204
- O URL parece ser clients3.google.com/generate_204 . As informações retiradas deste site para o cromo, que provavelmente são as mesmas para o Android. chromium.org/chromium-os/chromiumos-design-docs/…
Resposta
Um portal cativo geralmente é implementado direcionando todo o tráfego para uma resposta HTTP válida (200). Esta resposta HTTP é o que aparece no portal cativo.
Isso pode ser feito com ferramentas como iptables ou dnsmasq.
http://connectivitycheck.gstatic.com/generate_204
na verdade retorna um 204 sem conteúdo e obviamente funciona. Talvez você tenha apenas omitido oContent-Length: 0
cabeçalho.