Peut-être que cela semble susceptible d'être un problème de connexion aux serveurs Google (serveur de portail captif) et non la connexion au portail captif configuré dans le navigateur que vous semblez mentionner dans votre message.
(Depuis Lollipop (5.1+)) Lorsque connecté à des réseaux (surtout des réseaux Wi-Fi), le système Android vérifie s'il y a une connexion internet active en effectuant des vérifications sur certaines URLs prédéfinies appartenant aux serveurs Google. S'il échoue, il y aura un point d'exclamation sur l'icône du signal Wi-Fi et une notification "Connecté, pas d'accès internet" est affichée (même si vous pouvez accéder à d'autres sites web et que l'internet fonctionne) donc il peut s'agir d'un problème temporaire de connectivité à cette URL spécifique :
Android essaie d'atteindre un fichier nommé generate_204
sur l'un des serveurs Google et s'il n'y a pas de réponse positive, cela signifie qu'il n'y a pas de connexion à l'internet, et une notification est générée aussi, l'URL de détection diffère entre les différentes versions d'Android.
Il semble que Google ait modifié la détection de portail captif sur les versions récentes d'Android, par exemple Oreo.
Il semble que Google vérifie maintenant à la fois un generate_204
sur connectivitycheck.gstatic.com
et un gen_204
sur www.google.com
.
Encore une fois, c'est un problème en soi, surtout dans les régions où l'accès aux services Google est bloqué. Cependant, cette réponse explique bien comment contourner cela et vous pouvez y jeter un coup d'œil.
Une partie de l'information a été extraite de cette discussion.
Sur la base de cela, vous avez plusieurs options pour contourner cela :
-
Changer le serveur de portail captif
-
Installez une application de terminal, sinon ces commandes peuvent également être exécutées via adb shell
.
-
Ouvrez l'application de terminal et exécutez su
.
-
Exécutez settings get global captive_portal_server
. Cela affichera le serveur de portail captif actuel. Une réponse "null" est généralement la valeur par défaut.
-
Exécutez settings put global captive_portal_server VOTRE_ADRESSE_SERVEUR
. Vous pouvez ajouter google.com comme serveur de portail captif, c'est-à-dire settings put global captive_portal_server google.com
.
-
Exécutez exit
une fois pour quitter su, puis sortez encore une fois pour fermer le terminal.
-
Redémarrez l'appareil Android. Cela ne fonctionnera pas sans redémarrage.
- Désactiver le portail captif
- Puisque le coupable est une méthode
isCaptivePortal()
qui accède à clients3.google.com/generate_204
pour tester si une connexion est jugée "utilisable". La page, comme son nom l'indique, est conçue pour toujours renvoyer un code de statut HTTP 204
. Sur cette base, vous avez quelques options :
i. Désactiver complètement isCaptivePortal()
- avec adb configuré, exécutez
adb shell su -c "settings put global captive_portal_detection_enabled 0"
(Android 7.1+) ou en utilisant adb shell su -c "settings put global captive_portal_mode 0"
Note : Le désavantage est que isCaptivePortal() est en fait utile pour détecter par exemple quand un réseau Wi-Fi nécessite une connexion. Si la requête à la page 204 est redirigée vers une page de connexion (pas un 204), le système comprendra et affichera le point d'exclamation comme prévu.
ii. Changer la cible de isCaptivePortal()
-
une autre solution de contournement est de remplacer l'hôte Google par un hôte qui est accessible dans la région spécifique. Cet hôte doit également renvoyer 204
à chaque fois que /generate_204
est accédé.
c'est-à-dire adb shell su -c "settings put global captive_portal_server {hôte_alternatif} "
-
Utilisation de hosts
- Vous pouvez modifier
hosts
pour bloquer l'URL de détection de portail captif, contournant ainsi l'envoi des requêtes au serveur de portail captif.
Pourquoi Linux et Windows se connectent-ils sans problème ?
Comme vous l'avez mentionné dans votre message, cela semble spécifique à Android, en effet la discussion ci-dessus le met en évidence. La raison en est que pour ces appareils (Linux et Windows), le mécanisme de connexion est complètement différent.
Ces appareils n'auront pas besoin de se connecter aux serveurs Google pour détecter d'abord si une connexion internet est active.
1 votes
Ce serait utile de savoir quels appareils vous utilisez qui posent ce problème. Si les appareils sont tous du même fabricant et que cela fonctionne correctement lorsque vous vous connectez avec un appareil d'un fabricant différent, cela limiterait les choses. Mais si cela arrive avec des appareils de plusieurs fabricants, je supposerais que cela a quelque chose à voir avec la configuration de votre routeur, mais c'est vraiment un problème bizarre.
0 votes
Je vois cela parfois au travail; j'ai tendance à l'ignorer. Nous utilisons des Solutions Umbrella pour capturer le trafic web illicite.
1 votes
Un autre point à clarifier : Tous vos services Google fonctionnent-ils correctement ? Avez-vous par exemple essayé d'utiliser Playstore, GMail, etc. ? Je ne suis pas sûr à 100 %, mais pour autant que je me souvienne (AFAIR), la détection utilise une certaine IP de Google et vérifie si elle peut être atteinte.