LoginSignup
1
2

PythonとSeleniumを使ってkeio.jpに自動ログインする方法

Last updated at Posted at 2022-04-15

TL;DR

keio.jpに自動でログインする簡単な方法についてのメモ

はじめに

keio.jp(正式名称は"Keio Single Sign-On System")にログインするとき,次のようなページ遷移(HTTP Request)を辿っています。

  1. http://www.keio.jp (Top page)
  2. https://auth.keio.jp (SSO login page)
  3. https://gslbs.adst.keio.ac.jp/student/index.html (Syllabus page)
  4. https://www.edu.keio.jp/ess2/login? (Class support page)

Web上のURLにアクセスする処理をコーディングするときに,BeautifulSoupのような静的なWebスクレイピングライブラリでは、Javascriptやページリダイレクションを含む動的なWebサイト(例:keio.jp)には対応できないため不十分です.そこで今回は、Pythonの動的なWebスクレイピングライブラリSeleniumと,Google Chromeをコマンドラインで制御するためのブラウザ専用のドライバとしてChromeDriverを使うことにします.

  • Seleniumのインストール方法については,公式リファレンスを読んでください(大抵の場合,pip install seleniumでOKです).
  • ChromeDriverのインストール方法についても,Seleniumのドキュメントページを参考にしてください(Win/Mac環境のちがいに注意!).

スクリプト

K大の学生であれば、以下のスクリプトを使ってkeio.jpに自動ログインすることができます.あなたの学内メールアドレスとパスワードを入力し,Pythonの実行環境が整ったマシンに対してコマンドラインから命令を実行してください.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

ID = "*****" # Please fill in your e-mail address at keio.jp (yukichi.fukuzawa@keio.jp) 
PW = "*****" # Please fill in your password in keio.jp

# Optional settings of chrome driver
options = webdriver.ChromeOptions()
options.add_argument('--headless')

# Boot chrome driver
driver = webdriver.Chrome("/usr/local/bin/chromedriver", options=options)
driver.set_page_load_timeout(15) # Time out 15 sec

# GET (HTML Page)
driver.get("https://auth.keio.jp")

# Find elements and POST (send keys to the input tag)
id_element = driver.find_element_by_name("j_username")
id_element.send_keys(ID)
pw_element = driver.find_element_by_name("j_password")
pw_element.send_keys(PW)

# Click login button
login_button = driver.find_element_by_name("_eventId_proceed")
login_button.click()

# GET (HTML Page)
driver.get("https://gslbs.adst.keio.ac.jp/student/index.html")

# GET (HTML Page)
driver.get("https://www.edu.keio.jp/ess2/login?")

# Close chrome driver
driver.quit()

SSO認証が終われば,HTTPリクエストによってHTMLファイルを取得し,好きなように必要な情報を取り出すことができます.

ここまで読んでいただき,ありがとうございます.
よかったら他の記事も読んでね!

参考文献

1
2
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
1
2