3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2022-04-15

TL;DR

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

自動ログイン

1. Webサイトの調査

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)

このように、閲覧までにページ遷移(サーバ側との情報の受け渡し)が発生するウェブサイトを動的サイトと呼び、URLに飛べばすぐに閲覧可能なブログなどの静的サイトと区別されます。

なお、現代的なウェブサイトは、フロントエンドにはJavaScript(リクエスト毎にHTMLを生成する)、バックエンドにはRDBとそれを処理するスクリプト(リクエスト毎にデータを処理する)が仕込まれていることがほとんどですから、多くが動的サイトになります。

2. ツール選定

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

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

ChromeDriverを用いて、仮想的なブラウザ環境を作ることで、ユーザがサイト内でページ遷移する動作を、スクリプト上で再現できます。

3. スクリプト実装

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ファイルを取得し,好きなように必要な情報を取り出すことができます.

参考文献

3
5
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
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?