Para acessar a Internet, preciso fazer login na página de login fornecida pelo ISP, que é um endereço IPv4 privado (192.168.xx.xx). Se eu abrir o Firefox sem fazer login nessa conta, o Firefox mostrará esta notificação dizendo "Você deve fazer login nesta rede antes de acessar a Internet" com um botão "Abrir página de login de rede". Esse botão abre a página de login do ISP. Aqui está uma captura de tela dessa notificação:
Então, minha pergunta é como o Firefox pode saber o endereço da página de login?
Na verdade, não.
Seu ISP usa uma tecnologia conhecida como Portal Cativo . Os portais cativos funcionam "de alguma forma" sequestrando a solicitação HTTP do navegador e redirecionando-a para o portal de login.
Este "de alguma forma" pode ser alcançado de diferentes maneiras, por exemplo
Seu navegador, por sua vez, tenta detectar esse "seqüestro" tentando recuperar uma página da web conhecida e verificando se a resposta que eles recebem é a resposta que eles estão esperando ou outra coisa. Aqui estão alguns exemplos de páginas que esses "sistemas de detecção de sequestro" usam:
O do Google dá uma dica de como funciona: o servidor da web responderá com um código de status HTTP 204 No Content . Um portal cativo, no entanto, retornará conteúdo (caso contrário, seria inútil) e, portanto, nunca responderá com um código de status 204. Muito provavelmente, ele usará um redirecionamento temporário 307 para informar ao navegador para buscar um URI diferente (o URI da página de login do portal cativo).
Os outros usam um pequeno documento com conteúdo conhecido (por exemplo, o da Apple simplesmente contém a palavra "Success").
A detecção de sequestro não precisa ser realizada pelo navegador, na verdade. A maioria dos dispositivos modernos executará automaticamente essa "detecção de sequestro de portal cativo" automaticamente sempre que se conectar a um WiFi aberto e exibirá automaticamente uma caixa de diálogo que permitirá que você vá para o portal cativo, sem que você precise abrir explicitamente seu navegador e visitar alguma página da web .
A razão para isso é que, no mundo moderno da Internet, um navegador não é necessariamente o primeiro aplicativo com o qual um usuário tentaria usar a Internet. Pode ser o cliente do Facebook, WhatsApp ou cliente de e-mail, por exemplo.
Observe que usei o termo "seqüestro" deliberadamente. Essas técnicas são, na verdade, basicamente realizando um ataque Man-in-the-Middle . (A diferença é que um invasor "real" tentaria redirecioná-lo para um site exatamente igual ao que você deseja visitar e induzi-lo a inserir seu nome de usuário e senha no site falso.) Portanto, essas técnicas funcionam apenas como desde que você esteja tentando visitar um site "inseguro", ou seja, um site que não usa SSL/TLS (ou seja, não
https://
), não usa HTTP Strict Transport Security (HSTS) e similares.Isso está começando a se tornar um problema, porque cada vez mais sites são acessíveis apenas por HTTPS (TLS). Os navegadores modernos lembram se um site oferece suporte a HTTPS e usarão a versão HTTPS, independentemente do que você inserir na barra de URI. Técnicas como HSTS garantem que os navegadores sempre usem a versão criptografada de um site. Versões mais recentes do protocolo HTTP, como HTTP/2 e HTTP/3, não exigem estritamente criptografia, mas todos os principais fornecedores de navegadores decidiram implementá-los apenas para conexões HTTPS.
Se você tentar visitar o Facebook ou SuperUser, por exemplo, seu navegador usará automaticamente uma conexão criptografada e autenticada e, quando o portal cativo tentar redirecionar o navegador para a página de login, o navegador detectará essa manipulação e gerará um erro. Normalmente, isso é exatamente o que você deseja, mas, neste caso, impedirá que você faça login no portal cativo e, portanto, use a Internet.
Se você já teve problemas quando está conectado ao WiFi, mas seus aplicativos mostram erros ou carregam indefinidamente, o motivo é quase certo que, por algum motivo, você não está logado no portal cativo. Talvez você não tenha visto o pop-up de notificação, talvez a detecção tenha falhado, pode haver muitos motivos.
Nesse caso, você pode resolver o problema visitando um site que sabe ser "inseguro", ou seja, que não usa HSTS, SSL/TLS ou HTTP/2 (o padrão especifica HTTP e HTTPS, mas os fornecedores de navegadores decidiram que eles irão suportar apenas HTTPS para HTTP/2 daqui para frente). Os URIs mencionados acima devem funcionar, mas na verdade existe um site que algumas pessoas legais criaram que serve exatamente a esse propósito e cujo URI é fácil de memorizar: http://neverssl.com/ .
NeverSSL faz exatamente o que seu nome sugere: é simplesmente um site completamente inútil, cujo único objetivo é nunca usar SSL/TLS, HSTS, HTTP/2, QUIC ou qualquer coisa que não seja HTTP/ não criptografado, não autenticado, inseguro e simples 1.1, para que o portal cativo possa interceptar a requisição e redirecionar para sua página de login.
O recurso é chamado de detecção de portal cativo. O Firefox tentará obter http://detectportal.firefox.com/success.txt e registrará a resposta. Se houver um redirecionamento, ele saberá que existe uma página de login e exibirá o aviso.
Uma descrição rápida que explica o recurso e mostra como desativá-lo, se necessário, está em http://support.moonpoint.com/network/web/browser/firefox/detect_portal/
Além da resposta muito completa do @JörgWMittag , os portais cativos também implementam o protocolo WISPr , definido pela Wifi Alliance, que deve ser entendido por qualquer cliente/roteador/AP que implemente portais cativos.
Está presente na implementação de portais cativos dos principais fornecedores, nomeadamente Cisco e Aruba, e também na implementação de portais cativos no PfSense.
O Firefox também entende isso, e o próprio WISPr aciona o famoso navegador restrito de autenticação automática da Apple (CNA). (a julgar pelos meus testes, redirecionamentos sozinhos não são suficientes para acionar essas janelas, pelo menos em equipamentos da Apple)
O WISPr real está presente na página principal para a qual o cliente é redirecionado como tags HTML e define URLs para as páginas de login, logout e cancelamento. Ele também define códigos de status para as páginas geradas por essas URLs.
Como em:
Para mais detalhes (e pistas) sobre como implementar/lidar com páginas cativas, veja minhas outras respostas:
Obtendo tags WISPr de um portal de autenticação FON
Implementando um portal cativo usando o Apache
Detecção de portal cativo, implementação de pop-up?
Relacionado:
Desativando o CNA no MacOS
Como usar um portal cativo no modo de texto?
PS Curiosamente, alguns CPEs/cable modems estão (ab)usando WISPr para mostrar aos clientes, em seus navegadores, mensagens de erro na ausência de conexão com a Internet/ao inicializar.