Help us understand the problem. What is going on with this article?

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

公衆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に接続した際に自動でログインできるようになりました.

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした