1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LumosAdvent Calendar 2023

Day 19

大学の課題を自動通知して欲しかった

Posted at

はじめに

これは、Lumos Advent CalendarのDay19の記事です。

内容

プログラミングを知ってから一年経っていない者が大学の課題通知BOTサービスを作ろうとして諦めるまでの流れをまとめました。

手法

方法としては、

  • 大学のLMSという教材提供サイトにアクセスし、
  • 課題とその期限が載っている文字列を取得し、
  • discordで通知する
    という方法を使いました。

プログラムはPythonで書き、SeleniumというWebスクレイピングのライブラリを使いました。

※Webスクレイピングとは、Webサイトのhtmlテキストから、指定した部分の文字列を取得したりする方法のこと。

改良

上記の手法は上手くいったので、サービス化に向けて以下の問題点を改良します。

  • discordは普通の人にはハードルが高いので、LINEでの通知に変更する
  • パスワードの扱いがos.getenvで環境変数から取得していたので、データベースを用いる
  • パスワードのハッシュ化など安全に配慮する

パスワードハッシュ化の問題点

最初作ったものは、ログインIDとパスワードを入力させて大学サイトにログインしていたのですが、ユーザーから預かったハッシュ値を用いても大学サイトにログインできません。
以下に該当のプログラムを載せておきます。

username_input = driver.find_element(By.XPATH, '//	*[@id="loginForm"]/div[1]/div[1]/div[1]/div[2]/input')
password_input = driver.find_element(By.XPATH, '//	*[@id="loginForm"]/div[1]/div[1]/div[2]/div[2]/input')
username_input.send_keys(username) #username変数にgetenvで得たユーザーIDを格納していた
password_input.send_keys(password) #password変数にgetenvで得たパスワードを格納していた
next_btn = driver.find_element(By.XPATH, '//*[@id="loginForm"]/div[2]/button')
next_btn.click()    

結論

パスワードの文字列そのものがないとログインできないので、ユーザーが大学サイトにそのパスワードでログインしたときにハッシュ値を得てトリガーにする、パスワードの保存の了承を得る、など別の方法を取るかリスクを取るかする必要がありそうです。

参考文献

Pythonでハッシュ化を試してみる
Markdown記法 サンプル集

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?