LoginSignup
7
10

More than 3 years have passed since last update.

Wi-FiのWeb認証を自動化する

Posted at

公衆Wi-Fiの多くは接続時にログインを要求されます.
しかし,毎回アカウントやパスワードを入力するのが面倒なのでこれを自動的にログインできるようにします.

Linuxでの設定は以下で紹介されています:
- 【小ネタ】Web認証の自動化【Linux編】

ここではmacOSにおける設定を行います.

1. Captive Network Assistant

macOSではウェブ認証が必要なネットワークに接続するとCaptive Network Assistantという専用のアプリが自動的に起動して認証画面が表示されます.
このアプリが起動すると他からの通信ができなくなってしまうので,以下のコマンドでこれの起動を停止します.

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

ちなみに以下で元の設定に戻せます:

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

この設定を行った後,一度再起動してWi-Fi接続時にCaptive Portalの画面が開かなくなればOKです.
ログインする際はブラウザで適当なところにアクセスすると認証画面にリダイレクトされます.

2. ログイン用スクリプト

ユーザー認証のページを調べるなどして以下のようなログインスクリプトを適当な場所に保存してください.

#!/bin/bash

SSID=`/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/airport -I | awk '/ SSID:/ {print $2}'`

if [ "${SSID}" = "[対象Wi-FiのSSID]" ]; then
    ping -o -c 100 1.1.1.1
    curl https://example.com/login -F "user=USERNAME" -F "password=PASSWORD"
fi

次の手順でWi-Fiへの接続を検出した際にこのスクリプトを実行するようにするのですが,以下の方法では検出のタイミングと疎通のタイミングがうまく合わなかったので適当なところにpingを送って疎通できるまで待つようにしました.

3. LaunchAgents

Wi-Fi接続時にスクリプトを実行するために~/Library/LaunchAgents/WifiAutoLogin.plistとして以下の内容を保存します.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>WifiAutoLogin</string>
  <key>ProgramArguments</key>
  <array>
      <string>[ログイン用スクリプトへの絶対パス]</string>
  </array>
  <key>WatchPaths</key>
  <array>
    <string>/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist</string>
  </array>
</dict>
</plist>

そして以下のコマンドで作成したplistをロードします.

$ launchctl load ~/Library/LaunchAgents/WifiAutoLogin.plist

これでWi-Fiに接続した際に自動でログインできるようになりました.

7
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
10