Como fazer login automaticamente em portais cativos no OS X?

66

Como posso entrar automaticamente em portais cativos no OS X?

Um portal cativo é usado por redes sem fio (geralmente não protegidas por senha) que apresentam uma página da Web assim que você se conecta a elas, exigindo o login.

Preciso fazer login em diferentes redes sem fio como essa com muita frequência, e nenhum dos portais em cativeiro parece lembrar minhas informações de login / senha. Existe uma maneira de automatizar o processo de login de alguma forma, ou pelo menos armazenar os pares de login / senha no Keychain?

Atualização: existe um aplicativo iOS chamado AutoWifi que basicamente lida com isso. Se é possível fazer isso no iOS com todas as suas restrições, certamente deve ser possível fazer algo assim no OS X, certo?


Curiosidade relacionada: é assim que a Apple testa portais em cativeiro no OS X e iOS:

O OS X e o iOS fazem uma solicitação http://www.apple.com/library/test/success.htmlsempre que você se conecta a uma rede WiFi.

A partir de Yosemite, o URL agora é: http://captive.apple.com/hotspot-detect.html

Este URL retorna o seguinte HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
    <TITLE>Success</TITLE>
</HEAD>
<BODY>
Success
</BODY>
</HTML>
Mathias Bynens
fonte
11
Dê uma olhada em /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist. Manipular as preferências aqui pode facilmente constituir sérios riscos à segurança, além dos muitos que a Apple implementou por conta própria. Não tenho certeza de qual navegador você usa para se conectar por meio desses portais cativos, mas também pode tentar configurar locais de rede para eles ou criar uma macro simples, dependendo do que você deseja preencher automaticamente.
l'L'l
2
É isso aí - sempre que o OS X detecta um portal cativo, ele abre uma janela pop-up do WebView (não uma interface de usuário real do navegador) com a página de login.
Mathias Bynens
Se você tiver uma chance, publique o código fonte do pop-up.
1
@ioi A fonte HTML da página depende da rede. Depois de obter o pop-up, é possível navegar para a mesma página, basta abrir qualquer navegador e tentar carregar um URL.
Mathias Bynens
2
Nenhuma das respostas responde à pergunta!
Tyilo

Respostas:

27

Você pode renomear

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

para dentro

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

e está tudo pronto. A inserção de senha agora passa pelo navegador de sua escolha e pode ser armazenada usando 1password ou outros plugins. Observe que, se você já estava conectado ao renomear, pode levar algum tempo até a sua sessão expirar ...

Leon
fonte
11
Ansioso para testar isso :) Não há desvantagens?
Mathias Bynens
11
Embora essa possa ser uma solução simples (st?), Eu acho que a resposta do cwd é a maneira correta de fazer isso, mesmo que seja admin-ish. Há certas coisas no Mac que a Apple nos força a administrar, quando queremos "pensar diferente" da Apple.
David
Nas versões mais recentes do macOS, será necessário desativar o System Integrity Protection antes de renomear este arquivo. Não sou contra mudar o nome do sistema quando necessário, mas a resposta do cwd é melhor nesse caso.
Wowfunhappy 17/02
54

Acabei de encontrar esta opção Desativar suporte de rede cativa no OS X

Que menciona "Para desativá-lo, defina esta preferência:"

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

Caso deseje remover essa configuração, você pode:

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

Então, como o @Leon menciona, use o navegador da Web comum para fazer login. Ou se você estiver em uma rede onde isso de alguma forma não funcione, você poderá tentar abrir o aplicativo manualmente (localizado em /System/Library/CoreServices/Captive Network Assistant.app)

cwd
fonte
2
cwd ++ Essa ainda é a melhor resposta. Hoje em Mojave, eu era incapaz de renomear ou excluir o Captive de rede Assistant.app, mas eu era capaz de forçar a desativação via defaults
danielpops
16

O projeto NetworkAutoLogin do Tyilo no github é um daemon os.x que "efetua login automaticamente no Captive Portal Networks" com credenciais fornecidas pelo usuário.

Ele usa o PhantomJS & CasperJS para postar as informações necessárias nos campos na página de login do portal cativo. Pode ser o login secreto "senha", um par de nome de usuário e senha ou apenas ativar uma caixa de seleção do EULA e o botão "conectar".

Não me lembro exatamente como ele é acionado, mas registra um .plist com o launchctl.

Você coloca opções de configuração em um arquivo json, especificando o nome do conjunto de campos (opcional) na página do portal cativo e o nome do campo + pares de conteúdo necessários (necessário). Aqui está um exemplo do arquivo de configuração armazenado em~/.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'
    }
}
Mac Cowell
fonte
11
não é louco que ele requer ainda um outro daemon a ser executado em segundo plano
cwd
Eu o compilei, mas não consegui observar o gatilho do daemon quando apresentado com uma página de login de rede em cativeiro predefinida.
Mac Cowell
Da mesma forma (mesmo atualizado com as novas configurações em Yosemite +)
Jeef
6

A exclusão (ou renomeação) não /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plistinterrompe a investigação automática?

Pelo menos, poderia parar a abertura do pop-up do WebView.

Caso contrário, substitua todos os URLs nele Settings.plistpor uma cópia hospedada local do success.htmlarquivo e hospede o success.htmlarquivo no servidor da web localhost.

Pro Backup
fonte
3

Estou vendo solicitações de portal em cativeiro na minha rede doméstica a cada 5 minutos. Mas eu mudei no arquivo /Library/Preferences/SystemConfiguration/CaptiveNetworkSupport/Settings.plist

string: http://www.apple.com/library/test/success.html para http://captive.apple.com/hotspot-detect.html (eu quis dizer a seção ProbeURL). A Apple mudou o URL do probe para o novo sistema operacional, não sei por que, mas a nova resposta do URL é 200 (OK) e deve funcionar (já enfrentei o mesmo problema no meu mbp 2011 Mavericks).

Alexander Unger
fonte
3

Com alguma ajuda para usar o AppleScript, Lynx, Fakeapp / Safari e ControlPlane, o My MacBook agora sempre se conecta ao portal cativo automaticamente no meu escritório. Ainda não é uma maneira eficiente de fazê-lo, mas ainda faz o trabalho perfeitamente. Espero que alguém possa simplificar.

Aqui está o código:

  1. Verifique se estamos com o SSID correto

    do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
    
  2. Verifique a existência do endereço de portal cativo

    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. Testar a conexão do portal

    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. Fazendo login no portal

    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. Salve esses scripts como um aplicativo. Em seguida, use as regras do ControlPlane para executá-lo quando acionado com o SSID especificado.

Certamente o formulário de login em cativeiro pode ter outros elementos HTML. Você pode adicionar algumas caixas de diálogo ou notificações, outro SSID diferente com seus próprios elementos HTML e nome de usuário / senha. O Fake é um navegador + um automatizador, por isso facilitará a vida.

Não se esqueça de desativar o pop-up de login em cativeiro. Agora, seu Mac 100% se conecta automaticamente ao portal.

Espero que ajude.

Koes N
fonte
2

Um portal cativo não é como uma senha. É mais como uma folha de entrada. Toda vez que a rede à qual você está conectado entrega um endereço IP através do DHCP, ele fornece o portal cativo para entrar / concordar e, em seguida, permite a conexão. Pelo que entendi, essa é uma restrição de plataforma cruzada que não pode ser alterada. Ele pode ser algo que os administradores de rede podem mudar, mas mesmo isso pode depender do tipo de equipamento a ser utilizado.

Matt Love
fonte
Você está absolutamente certo de que é mais uma planilha de login do que uma senha, mas estou surpreso por não parecer uma maneira fácil de preencher automaticamente essa planilha :) No iOS, existem aplicativos que podem cuidar de esta. Não existe algo semelhante para o OS X?
Mathias Bynens 23/03
Quais aplicativos para iOS podem fazer isso? Você não precisaria usar esse aplicativo para navegar na web etc.?
você
11
O aplicativo AutoWiFi lida com isso automaticamente; tudo que você tem que fazer é clicar em “Conectar” uma vez e você está logado.
Mathias Bynens
2

Embora com alguns anos de idade, essa pergunta e resposta são muito importantes no Google. Infelizmente, o MacOS mudou desde então. Esta página no MacWorld de 2016 parece descrever o estado atual (até o momento em que este artigo foi escrito).

O que basicamente é que, por causa do SIP, você pode desativar o assistente apenas no modo de recuperação. Ainda não encontrei nenhuma solução para a outra parte desta pergunta: "podemos automatizar o login?"

thoni56
fonte
11
Em High sierra, não parece mais possível renomear Captive \ Network \ Assistant.app, conforme sugerido lá. Pelo menos eu não conseguia nem rodar como root.
Henry Story
Você precisa desativar o último recurso de proteção operacional do MacOS. support.intego.com/hc/en-us/articles/… Não sei se essa abordagem ainda funciona, mas pelo menos agora você pode tentar.
historystamp
0

Você pode usar o Mili , uma ferramenta de código aberto que escrevi para páginas de ponto de acesso automático. Também funciona no Linux.

Quando você altera sua conexão Wi-Fi, o Mili verifica os serviços Mikrotik e tenta fazer login com suas informações de login.

Você também pode usar informações de login múltiplo como este:

{
    "username": "USER 1",
    "password": "PASS 1",
    "share": 5
}, 
{
    "username": "USER 2",
    "password": "PASS 2",
    "share": 1
}
Sadegh Hayeri
fonte
Bem-vindo ao perguntar diferente. As regras do site exigem que você indique na sua resposta se é afiliado ao software que está recomendando. Nesse caso, você é o autor, mas não declara isso na sua resposta. Consulte Como responder para obter informações sobre como fornecer respostas aqui e edite sua resposta para incluir as informações ausentes.
fsb 16/02