Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@altescy

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

More than 1 year has passed since last update.

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

6
Help us understand the problem. What is going on with this article?
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
altescy

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?