ターミナルで出席登録がしたい!
はじめに
この記事は、"Tokyo City University Advent Calendar 2021"の18日目の記事になります!
https://adventar.org/calendars/6738
自己紹介
12/18を担当します、あめふりです。(@Amefuri_Tell) 見かけたら話しかけてくださいね。 最近メインOSをUbuntuにしました。 大まかな操作がコマンドでできる便利さを知ってしまい、Windowsに戻れなくなりそうです。(まだ勉強中) あと原神がたのしいですね。
ターミナルで出席登録したい!!
Ubuntuのコマンド操作が便利だということに気が付き数週間、ある授業中ふと思いました。
ターミナルで出席登録したい!
だって思いませんか? スマホを出して、chrome開いて、ブックマークから出席システムページに飛んで… こんなことをしていたら、鶏頭の私は番号を忘れてしまいます!!! じゃあ、パソコンでやればいいという話なんですが、Chromeを開いてブックマークから…とかやってたらやはり忘れてしまいます…
じゃあ、コマンドだったらどうだろうという話なんですが、
Alt + F2 -> attend 番号 -> enter
めっちゃ楽やん!!
ということで作りはじめました。
開発者ツールで通信を覗いてみる
まず真っ先にやったことは、「一体どんな通信をしてるか」を調べました。 Chromeの開発者モードのNetwork欄を見ると、通信が覗けます。
すると、めっちゃ簡単な通信しかしていないことがわかりました。
1, 2がlogin処理、3, 4が出席登録のようなので、単純にcurlを2回やれば良さそうです!
ログイン処理
まずは、Loginの処理を送ります。 開発者ツールによるとこのURLにRequestしていることがわかります。
そして、引数として、uid, pass, menunameを送信しています。
uidにはg学籍番号 passにはパスワード menunameには出席が入っています。
しかし、view sorceでみると、出席が%E5%87%BA%E5%B8%ADになっています…文字コードやめろ。
材料が揃ったので、Loginしてみます。
$curl https://call.off.tcu.ac.jp/Default/Login -d "uid=学籍番号" -d "pass=パスワード" -d "menuname=%E5%87%BA%E5%B8%AD"
すると、きちんとログインできてることがわかります!白く隠しているところに、執筆中に受けてる授業の名前とID、担当教員が入っています。
[:id:AmefuriTell:20211217160103p:plain]
後々、cookieと科目IDは使うので、今返ってきたhtmlとcookieを保存しておきます。
cookieの保存は、 -c ファイル名
のオプションで取得できます。
出席番号の送信
開発者ツールによると、にRequestしていることがわかります https://call.off.tcu.ac.jp/Sk/ProcedureAcc そして引数として、SelKamoku, InpNo, submitButtonNameを送信しています
SelKamokuには、先程HTMLで返ってきていた科目ID
InpNoには、出席番号
submitButtonNameには、%E5%87%BA%E5%B8%AD%E7%99%BB%E9%8C%B2
が入っています。いつもの文字コード
そして、Payloadには書かれていませんが、cookieが送信されています。
cookieは、session, XSRF-TOKEN, laravel_sessionというのが必要っぽいです。cookieからawkとsedで取り出して、変数においておきます。
ここでわかるのが、出席登録システムはLaravelで作られてるっぽいですね。
さて、材料は揃いました。実際に登録してみます。
$curl https://call.off.tcu.ac.jp/Sk/ProcedureAcc --cookie "PHPSESSID=${PHPSESSID}" --cookie "XSRF-TOKEN=${XSRFTOKEN}" --cookie "laravel_session=${session}" -d "SelKamoku=${SelKamoku}" -d "InpNo=${AttNum}" -d "%E5%87%BA%E5%B8%AD%E7%99%BB%E9%8C%B2"
無事受付されました!!
これの処理をbashに書いて、コマンド化して今回のプロジェクトは完了です!! ↓実際に使っている様子
おわりに
結構、楽しかったです。が、仕様変更に耐えられなさそうなので、ちゃんとChromeなどのブラウザからやるのが安心ですよ。
それと、良ければ星マークつけてくれると嬉しいです。 ではでは、お相手はあめふりてるでした!
2021年も1ヶ月が過ぎました。
もう1カ月過ぎた
さて、一月も今日入れてあと二日ですが皆様いかがお過ごしでしょうか。 今月はいろんなことがありました…
1月前半は、第4クオーターも最終ラウンドといった感じで、押し寄せてくる最終課題を必死に終わらせたりしました…。
終わらせた後は、やりたいこと爆発が起きました。
やりたいことまとめ
まず、自分のHPがつくりたくなりました。 試しに、GitHub Pagesで簡単なHTMLを書いてみました。HTML/CSS/JSの知識が乏しいので勉強しなきゃなぁと思っている次第です。
それから、HSP3の講習会に向けてHSP3の勉強をしていました。 DLLの仕様がわからず苦戦しています。
次に、ウェブアプリケーションを作りたくなりました。 手始めにHSP3DishでJSのみのアプリケーションとして、アナログ時計を作りました。
amefuritell.github.io 今作りたいアプリケーションとして、「やりたいことリスト共有アプリ」を作ろうかなと考えています。 やりたいことをポイっと投げてみて、同じくやりたい人をつなげてみるアプリです。
また、去年の夏にやってた「遊び大全PC化計画」も進めたいところです。
春休みの目標
さて、春休みに入った私ですが、春休み中の目標があります。
それは、「Webアプリケーションを一つ完成させること」です。 そこで、フロントエンド・バックエンドのどちらも一通り触ってみようと思います。
手始めに、昔はやった掲示板にようなソフトから始まって、ログイン機能を付けた「やりたいこと共有アプリ(名称仮)」を作り上げていきたいと思います。
では、また会いましょう。 あめふりてる*でした。
2020の振り返りと、2021の目標
はじめに
あめふりてるです。今年はいろいろありましたので、記事にしておこうかと思いました。
上半期
1月
オーストラリアへの留学を直前でやめた。親にめちゃめちゃいろいろ言われた。けれども、結果論から言うととても幸運だった。某流行り病の影響で留学組はわずか2ヶ月で返されてるので、不憫だなと思いつつ「あのとき行くって言わなくてよかった」と思った。そんな年始だった。
2月
春休みが始まった。このころ、自作キーボードにはまった。そして、一カ月に一回秋葉原に行く習慣がついた。
いい感じに自作できた pic.twitter.com/2PdHmYEcPW
— あめふり てる* (@Amefuri_Tell) 2020年2月5日
3月
このころは、「競プロあさ活部」が盛んだった(名前は勝手につけた)。私もプロテイン片手に頑張った!あ、このころは筋トレにはまっていました。毎日3km走った結果、急に運動したせいで捻挫して、そこからやらなくなってしまった…やっぱり下限って大事!
4月
コロナで学校が始まらなかったのでいろいろ勉強しよう!!となって始めたのが遺伝的アルゴリズムでオセロ学習プロジェクトでした。
そして、競プロもそろそろ緑!!ってなった時期でした。モチベーション結構高かった。そして、中高時代の同級生に垢ばれした。 それから、店員のバイトを新たに始めました。今日一日、オセロ学習させながらゲームしてた
— あめふり てる* (@Amefuri_Tell) 2020年4月16日
盤面評価値の学習 pic.twitter.com/1geLS3S8PX
5月
外せないのは、入緑したことですかね!!この時に、同じ大学の競プロerに連絡ができて、ICPCにでるお誘いを受けて、踊ってました。
このころから、大学が始まり、課題に追われる日々が来ました。つらかったです。 パソコンのガジェットを集め始めたのがこの時期でしたね。入緑しました!! pic.twitter.com/57e3ZfTWTX
— あめふり てる* (@Amefuri_Tell) 2020年5月17日
6月
コドフォに手を出しました。が、生活習慣が大いに乱れましたね。 このころは、適当作問をTwitterに投げ始めましたね。結構解法を考えるのが楽しかったりしました。 課題が辛かったです…
7月
学校が落ち着いてきたので、遺伝的アルゴリズムの勉強がてらに作った「ムダにクリエイティブなHello,World」に思いのほか反響がありました。
Hello, World!! pic.twitter.com/yl30oGULbG
— あめふり てる* (@Amefuri_Tell) 2020年7月22日
このころ、麻雀にはまりました。今も毎日打ち続けています。AI作りたいね。
8月
遊び大全のゲームすべてをPCでできるようにしたい!と思い、始めたが、結局が断念。もうちょっと頑張りたいね。 また、HSPの勉強もかなり頑張りました。 Discord用に仮想カメラで画面をキャプチャするソフトを作ってICPCの時に活躍してもらいました!
9月
バ美肉をしたくて、したくてしょうがなくなった時期です。 それから、サークルに初参加しました!楽しいですね!
10月
遺伝的アルゴリズムでオセロAIをしました。が、勝率が65%で頭打ちになってしまい、断念。来年は、ちゃんと尽くしたいね。 そして、榊さんや店長さん、kichiさんとエンカ!競プロerとのエンカは初めてだったのでテンション上がりました! そして、外せないのがしぐれうい先生の個展「雨天決行」!!めっちゃ興奮してました!今も、デスクトップ画像です。
しぐれうい先生の個展「雨天決行」行ってきました!!!
— あめふり てる* (@Amefuri_Tell) 2020年10月11日
天井からいろんな色の傘がかかってたのすごく良かったです!!!
画集や画面で見てたものとはまた違った印象がありました。
特に印象が変わったのは、入ってすぐのところにかかっていた雨の中傘を指す女の子の絵でした。画集で見てて好きだったのが↓ pic.twitter.com/RS7xnbPbKo
11月
こるぼーさん、きゃっとさん、ぽうえっとさんとエンカウントしました!!とっても楽しい一日で今年の思い出のベスト3に入っています!今度はラーメン食いに行きたいですね。 あ、そういえばこるぼーさん。メモリいつ受け渡ししますか?
そして、ICPCも出ました。結果は残念ながら予選突破ならずでしたが、来年はポリエステルさんが水色になってもっと大きな戦力なので予選突破したいですね。
12月
12月は、あんまり、思い出がないのですが、マイクを買い、4枚の表情差分でVTuberになれるソフトを開発しました。
いい感じ pic.twitter.com/9kuDvej9TH
— あめふり てる* (@Amefuri_Tell) 2020年12月23日
大したことはしていませんが、先週ぐらいまではこんなのを作っていました。https://t.co/b5rySs6Cyl
— あめふり てる* (@Amefuri_Tell) 2020年12月30日
以前は、こんなのも作りました。https://t.co/8AIRkwQfjT
今現在は、オセロの学習をHSPでやろうと奮闘中です。
来年の目標
さて、つらつらと書いてきましたが、来年の目標ですね。3つあります。
1つ目は、「進化計算アルゴリズムを頑張る」です。オセロAIを来年こそは完成させたいですね。 2つ目は、「ゲームを作る」です。今年は、技術開拓をメインにやりましたが、今年は作品として一つ何か作りたいと思っています。麻雀っぽいゲームを作りたいですね。 3つめは、「遊ぶ!」です。今年は、かなり遊びの年でしたが、来年は今年よりも遊び、つまり「自分の赴くままに!」をモットーにしていきたいと思いました。
おわりに
今年お世話になった人ありがとうございました。 来年もよろしくお願いいたします。