Paramètres du portail captif

10

Il existe plusieurs paramètres de portail captif que l' on pourrait appliquer à un appareil Android via settings put global- le plus célèbre étant probablement

settings put global captive_portal_detection_enabled 0

pour désactiver complètement la vérification du portail captif (pour Android <8). Quelqu'un peut-il expliquer comment utiliser les autres - par exemple pour définir un "serveur de portail captif personnalisé pour les feuilles d'étain"? Par exemple, on ne peut pas simplement faire un

settings put global captive_portal_server example.com

car cela entraînerait, dans la plupart des cas, un échec permanent de la vérification du portail captif (arrière-plan: ce faisant, la vérification du portail construirait une URL http://example.com/generate_204et vérifierait cela, en attendant une réponse spécifique).

Donc, outre la simple désactivation de la vérification du portail captif (ce qui pourrait, comme je l'ai lu, entraîner d'autres problèmes comme la non-redirection vers le portail approprié dans certains cas), que pouvons-nous faire d'autre pour améliorer la confidentialité dans ce contexte?

Exemples (si je les ai bien compris):

  • captive_portal_mode (Android 8+?):
    • 0: N'essayez pas de détecter des portails captifs
    • 1: Inviter l'utilisateur à se connecter
    • 2: Se déconnecter immédiatement du réseau et ne pas se reconnecter à ce réseau à l'avenir
  • captive_portal_detection_enabled (Android <8?):
    • 0: Désactiver complètement les vérifications du portail captif
    • 1: L'activer (par défaut)

Bien que ces exemples soient assez simples: comment utiliser les autres paramètres?

Izzy
la source

Réponses:

12

Configuration du comportement du portail captif

  • captive_portal_detection_enabled (<= Android 7.1.1)
    • fonctionne comme décrit dans le corps de la question
  • captive_portal_mode (> = Android 7.1.2)
    • fonctionne comme décrit dans le corps de la question

Définition d'URL de portail captif

  • captive_portal_server (<= Android 6.0.1)
    • Le serveur qui contient une generate_204page, utilisé pour créer en interne une URL pour la détection de portail captif ( new URL("http", mServer, "/generate_204");- obsolète depuis Android 7.0, voir ci-dessous)
  • captive_portal_use_https (> = Android 7.0)
    • 0: N'utilisez pas HTTPS pour la validation du réseau
    • 1: Utiliser HTTPS (par défaut)
  • captive_portal_http_url (> = Android 7.0)
    • L'URL utilisée pour la détection de portail captif HTTP - à utiliser avec captive_portal_use_https(définie sur 0)
    • > = Android 7.1.1: le système d'exploitation ne s'ajoute plus generate_204automatiquement à l'URL, ce qui donne une certaine flexibilité à l'URL d'entrée
  • captive_portal_https_url (> = Android 7.0)
    • L'URL utilisée pour la détection de portail captif HTTPS - à utiliser avec captive_portal_use_https(définie sur 1)
    • > = Android 7.1.1: le système d'exploitation ne s'ajoute plus generate_204automatiquement à l'URL

Obligation d'utiliser l'URL

Un code de réponse HTTP 204 ("aucun contenu") provenant du serveur est utilisé pour la validation, aucun contenu supplémentaire n'est nécessaire: prenez l'URL de détection par défaut, par exemple, curl clients3.google.com/generate_204retourne vide et inspectez la réponse HTTP en ajoutant des --write-out %{http_code}retours 204. '

Une petite liste d'URL de serveur de portail captif utilisables en Chine continentale (testée personnellement)

https://captive.v2ex.co/generate_204 (hébergé par v2ex.com)

https://connect.rom.miui.com/generate_204 (hébergé par Xiaomi, utilisé par défaut sur MIUI)

https://noisyfox.cn/generate_204 (hébergé par noisyfox.cn)

https://www.google.cn/generate_204 & https://developers.google.cn/generate_204 (hébergé par Google)

https://www.qualcomm.cn/generate_204 (hébergé par Qualcomm)

Notes complémentaires

La source mentionne aussi les paramètres captive_portal_user_agent, captive_portal_fallback_urlet captive_portal_other_fallback_urls:

  • captive_portal_fallback_url (> = Android 7.1.1) est évidemment censé contenir une seule URL, tandis que
  • captive_portal_other_fallback_urls contient plusieurs URL supplémentaires (liste séparée par des virgules, il est donc possible que les URL ne contiennent aucune virgule).

Mais j'ai personnellement effectué des tests sur Android 8.0.0, et les deux paramètres de secours ne fonctionnent pas. En supposant que ce sont des déclarations sans implémentation pour l'instant.

Quelques exemples de paramètres de portail captif d'Android en Chine montrent l'utilisation de certains des paramètres ci-dessus:

les paramètres du shell adb mettent global captive_portal_http_url http://www.google.cn/generate_204
les paramètres du shell adb mettent global captive_portal_https_url https://www.google.cn/generate_204
les paramètres du shell adb mettent global captive_portal_fallback_url http://www.google.cn/generate_204
les paramètres du shell adb mettent global captive_portal_other_fallback_urls http://www.qualcomm.cn/generate_204

Sachant cela, les «feuilles d'étain» pouvaient même mettre en place leur propre service de vérification. Avec Apache:

RewriteEngine On
RewriteCond% {REQUEST_URI} / generate_204 $
RewriteRule $ / [R = 204, L]

ou avec Nginx:

location / generate_204 {return 204; }

Références

1 , 2 (chinois), 3 (chinois)

Andy Yan
la source
1
Article connexe - et au moins avec MM, le code suivant est utilisé: new URL("http", mServer, "/generate_204");(avec mServerinitialisation par captive_portal_serversi défini) - il devrait donc s'agir simplement du nom du serveur (ou IP) là-bas (ce qui était probablement l'une des raisons pour lesquelles il a échoué pour moi sur un appareil MM). Je ne sais pas quand cela a changé alors - mais d'après ce que vous écrivez probablement avec N. Pour le 204, j'ai trouvé cela - donc il semble que j'ai supposé correctement: juste le code 204, pas de contenu.
Izzy
@Izzy Malheureusement, les 2 options de secours ne semblent pas fonctionner. Utiliser la valeur par défaut captive_portal_https_urlet mettre une URL accessible captive_portal_fallback_urln'élimine pas la marque croisée, et il en va de même pour la mise en place captive_portal_other_fallback_urls- La mise en captive_portal_https_urlligne droite est la seule issue. Notez que les tests sont effectués sous LTE au lieu du WiFi, car pour une raison quelconque, le WiFi de mon école me dirigerait toujours vers le portail captif même si je définissais une URL complètement invalide.
Andy Yan
Ces paramètres de secours peuvent avoir été introduits avec Oreo (notez que nous avons examiné le code Oreo pour les trouver). Je suppose que vous avez vérifié sur Nougat, non? // Bonne idée d'inclure une petite liste de serveurs. AFAIK là aussi était g.cndisponible;)
Izzy
1
@Izzy Oh ouais, je ne m'en étais pas rendu compte, je n'ai encore flashé aucun de mes appareils avec LOS15. Cela pourrait être digne de vérifier, et si cela fonctionne, je mettrai à jour et vous cinglerai pour nettoyer les commentaires. De plus, le certificat HTTPS de g.cn aurait expiré sur le continent, il n'est donc plus utilisable pour HTTPS. // Mais attendez ... Le code source 7.1.2 contient également une référence à captive_portal_fallback_url.
Andy Yan
Comme avec de nombreuses nouvelles fonctionnalités, les références apparaissent parfois avant la fin de la fonctionnalité. Et le fichier référencé définit principalement les constantes, pas la fonctionnalité, non?
Izzy