Comment se connecter automatiquement à des portails captifs sous OS X?


67

Comment puis-je me connecter automatiquement à des portails captifs sous OS X?

Un portail captif est utilisé par les réseaux sans fil (souvent non protégés par un mot de passe) qui présentent une page Web dès que vous vous y connectez, ce qui vous oblige à vous connecter.

Je dois me connecter très souvent à différents réseaux sans fil comme celui-ci, et aucun des portails captifs ne semble se souvenir de mes informations de connexion / mot de passe. Existe-t-il un moyen d'automatiser le processus de connexion, ou au moins de stocker les paires nom d'utilisateur / mot de passe dans le trousseau?

Mise à jour: Il existe une application iOS appelée AutoWifi qui gère cela en gros. S'il est possible de le faire sur iOS avec toutes ses restrictions, il doit sûrement être possible de faire quelque chose de similaire sur OS X, n'est-ce pas?


Fait amusant: Voici comment Apple teste les portails captifs sous OS X et iOS:

OS X et iOS font une demande à http://www.apple.com/library/test/success.htmlchaque fois que vous vous connectez à un réseau WiFi.

Depuis Yosemite, l'URL est maintenant: http://captive.apple.com/hotspot-detect.html

Cette URL renvoie le code HTML suivant:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>

1
Jetez un coup d'œil à /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist. Manipuler les préférences ici peut facilement aggraver des risques de sécurité sérieux, en plus des nombreuses applications décidées par Apple. Je ne sais pas quel navigateur utiliser pour vous connecter via ces portails captifs, mais vous pouvez également essayer de configurer leurs emplacements réseau ou de créer une macro simple en fonction de ce que vous voulez remplir automatiquement.
l'L'l

2
C'est la chose - chaque fois que OS X détecte un portail captif, il ouvre une fenêtre contextuelle WebView (pas une véritable interface utilisateur de navigateur) avec la page de connexion.
Mathias Bynens

Si vous avez une chance poster le code source de la popup.
l'L'l

@ ioi La source HTML de la page dépend du réseau. Une fois que vous obtenez la fenêtre contextuelle, il est possible de naviguer sur la même page en ouvrant simplement un navigateur et en essayant de charger une URL.
Mathias Bynens

2
Aucune des réponses ne répond à la question!
Tyilo

Réponses:


28

Vous pouvez renommer

/System/Library/CoreServices/Captive Network Assistant.app

dans

/System/Library/CoreServices/No More Captive Network Assistant.app

et vous êtes tous ensemble. La saisie du mot de passe s'effectue maintenant via le navigateur de votre choix et peut être enregistrée à l'aide de 1password ou d'autres plugins. Notez que si vous êtes déjà connecté lors du changement de nom, l’expiration de votre session peut prendre un certain temps ...


1
Au plaisir de tester ceci :) Aucun inconvénient?
Mathias Bynens

1
Bien que cela puisse être une solution simple (st?), Je penserais que la réponse de cwd est la bonne façon de le faire, même si c’est une tâche administrative. Il y a certaines choses sur Mac sur lesquelles Apple nous oblige en quelque sorte à être administrateur, lorsque nous voulons "penser différemment" par rapport à Apple.
David

Sur les versions plus récentes de macOS, vous devez désactiver System Integrity Protection avant de pouvoir renommer ce fichier. Je ne m'oppose pas à renommer des éléments du système lorsque cela est nécessaire, mais la réponse de cwd est meilleure dans ce cas.
Wowfunhappy

54

Vient de trouver cette fonctionnalité Désactiver le réseau captif dans OS X

Qui mentionne "Pour le désactiver, définissez cette préférence:"

sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.captive.control Active -boolean false

Au cas où vous voudriez un jour supprimer ce paramètre, vous pouvez faire:

sudo defaults delete /Library/Preferences/SystemConfiguration/com.apple.captive.control Active

Ensuite, comme @Leon le mentionne, utilisez le navigateur Web habituel pour vous connecter. Ou si vous êtes sur un réseau où cela ne fonctionne pas, vous pouvez toujours essayer d'ouvrir l'application manuellement (située à l'adresse /System/Library/CoreServices/Captive Network Assistant.app)


2
cwd ++ C'est toujours la meilleure réponse. Aujourd'hui sur Mojave, je n'ai pas pu renommer ou supprimer Captive Network Assistant.app, mais j'ai pu forcer la désactivation par défaut
danielpops

16

Le projet NetworkAutoLogin de Tyilo sur github est un démon os.x qui "se connecte automatiquement à Captive Portal Networks" avec les informations d'identification fournies par l'utilisateur.

Il utilise PhantomJS & CasperJS pour publier les informations nécessaires dans les champs de la page de connexion au portail captif. Cela pourrait être le "mot de passe" de connexion secret, une paire nom d'utilisateur-mot de passe, ou simplement l'activation d'une case à cocher CLUF et du bouton "connecter"

Je ne me souviens pas exactement comment cela est déclenché, mais il enregistre une .plist avec launchctl.

Vous définissez les options de configuration dans un fichier json en spécifiant le nom du groupe de champs (facultatif) sur la page de portail captif, ainsi que les paires nom de champ + contenu nécessaires (obligatoire). Voici un exemple du fichier de configuration stocké dans~/.networkautologin.js

{ // Example with all possible options
    match: {
        SSID: ['Example WiFi 1', 'Example WiFi 2'],
        BSSID: '01:23:45:67:89:AB',
        URL: 'http://logon.example.org/?url=http://www.apple.com/library/test/success.html'
    },
    form_selector: 'form#login_form',
    fields: {
        'username': 'test',
        'password': '123123'
    }
}

1
pas fou qu'il ait besoin d'un démon supplémentaire en arrière
cwd

Je l'ai compilé, mais je n'ai pas pu observer le déclencheur de démon lorsque la page de connexion réseau captive prédéfinie lui est présentée.
Mac Cowell

De même (même mis à jour les nouveaux paramètres dans yosemite +)
Jeef

6

La suppression (ou le changement de nom) /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistn'arrête- t-elle pas l'auto-vérification?

Cela pourrait au moins empêcher l’ouverture de la popup WebView.

Sinon, remplacez toutes les URL dans cette Settings.plistcopie par une copie hébergée locale du success.htmlfichier et hébergez-le success.htmlsur votre serveur Web localhost.


3

Je vois les demandes de portail captives sur mon réseau domestique toutes les 5 min. Mais j'ai changé dans le fichier /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

string: http://www.apple.com/library/test/success.html à http://captive.apple.com/hotspot-detect.html (je voulais dire section ProbeURL). apple a changé l'URL de sonde pour le nouveau système d'exploitation, je ne sais pas pourquoi, mais la nouvelle réponse d'URL est 200 (OK) et devrait fonctionner (j'ai le même problème sur mon mbp 2011 Mavericks).


3

Grâce à AppleScript, Lynx, Fakeapp / Safari et ControlPlane, Mon MacBook est désormais toujours automatiquement connecté au portail captif de mon bureau. Ce n’est toujours pas un moyen efficace de le faire, mais le travail est toujours parfaitement fait. J'espère que quelqu'un pourra le rendre plus simple.

Voici le code:

  1. Assurez-vous que nous sommes dans le bon SSID

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Vérifier l'existence d'une adresse de portail captif

    try
        do shell script ("ping -c 2 " & CaptiveAddress) -- set your captive address here
        set CaptiveExist to "yes"
    on error
        set CaptiveExist to "no"
    end try
    
  3. Tester la connexion au portail

    try
        set PortalOpened to do shell script ("/usr/local/bin/lynx --dump http://www.apple.com/library/test/success.html | grep 'Success'")
        if PortalOpened is "   Success" then
            set PortalOpened to "yes"
        else
            set PortalOpened to "no"
        end if
    on error
        set PortalOpened to "no"        
    end try
    
  4. Se connecter au portail

    tell application "Fake"
        load URL "http://YourPortalAddress.html" -- put your captive address here
        set value of element with name "username" to "user"
        set value of element with name "password" in form with name "password" to "password"
        click element with id "logincaption"
    end tell
    
  5. Enregistrez ces scripts en une seule application. Utilisez ensuite les règles ControlPlane pour le faire fonctionner lorsqu'il est déclenché avec le SSID spécifié.

Le formulaire de connexion sur Captive peut sûrement avoir un autre élément HTML. Vous pouvez ajouter des boîtes de dialogue ou des notifications, un autre SSID différent avec ses propres éléments HTML et nom d'utilisateur / mot de passe. Fake est un navigateur + automate, ce qui facilitera la vie.

N'oubliez pas de désactiver la connexion captive popup. Maintenant, votre Mac se connecte à 100% automatiquement au portail.

J'espère que ça t'as aidé.


2

Un portail captif n'est pas comme un mot de passe. Cela ressemble plus à une feuille de signe. Chaque fois que le réseau auquel vous êtes connecté attribue une adresse IP via DHCP, il vous donne le portail captif auquel vous pouvez vous connecter / accepter et vous permet ensuite de vous connecter. D'après ce que j'ai compris, il s'agit d'une restriction entre plates-formes qui ne peut être modifiée. Cela peut être quelque chose que les administrateurs réseau peuvent changer, mais cela peut dépendre du type d’équipement utilisé.


Vous avez absolument raison de dire que cela ressemble plus à une feuille de connexion qu'à un mot de passe, mais je suis surpris qu'il ne semble pas être un moyen facile de remplir automatiquement cette feuille :) Sur iOS, certaines applications peuvent prendre en charge cette. N'y a-t-il rien de semblable pour OS X?
Mathias Bynens

Quelles applications pour iOS peuvent faire cela? Ne devriez-vous pas alors utiliser cette application pour naviguer sur le Web, etc.?
Matt Love

1
L' application AutoWiFi gère cela automatiquement; tout ce que vous avez à faire est de cliquer sur «Connecter» une fois et vous êtes connecté.
Mathias Bynens

2

Bien que âgée de quelques années, cette question et cette réponse montrent que cela est très utile dans Google. Malheureusement, MacOS a changé depuis. Cette page sur MacWorld de 2016 semble décrire l’état actuel (au moment de la rédaction de cet article).

Ce qui est essentiellement dû au fait que SIP vous permet de désactiver l'assistant uniquement en mode de récupération. Je n'ai pas encore trouvé de solution à l'autre partie de cette question, "pouvons-nous automatiser la connexion?"


1
En haute sierra, il ne semble plus possible de renommer Captive \ Network \ Assistant.app comme suggéré ici. Au moins, je ne pouvais même pas utiliser root.
Henry Story le

Vous devez désactiver cette dernière fonctionnalité de protection d’exploitation MacOS. support.intego.com/hc/en-us/articles/… Je ne sais pas si cette approche fonctionne toujours, mais au moins, vous pouvez maintenant essayer.
historystamp

0

Vous pouvez utiliser Mili , un outil open source que j'ai écrit pour les pages de points d'accès à connexion automatique. Cela fonctionne aussi sous Linux.

Lorsque vous modifiez votre connexion Wi-Fi, Mili recherche les services Mikrotik, puis tente de se connecter avec vos informations de connexion.

Vous pouvez également utiliser les informations de connexion multiple comme ceci:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}

Bienvenue sur Ask Different. Les règles du site exigent que vous indiquiez dans votre réponse si vous êtes affilié au logiciel que vous recommandez. Dans ce cas, vous en êtes l'auteur, mais vous ne l'indiquez pas dans votre réponse. Veuillez consulter la section Comment répondre pour des informations sur les réponses fournies ici et modifiez votre réponse pour inclure les informations manquantes.
fsb le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.