tomabouの日記

勉強したことなどを書いていきます

Atcoder補助ツールを作った話

Atcoder

久しぶり競技プログラミングをしようと思い、atcoderを開き、コードを書いて提出する前にテストしようとしたところ、「この単純作業を自動化しないでなーにが競技プログラミングじゃ」という思いが芽生えました。自動化しました(車輪の再発明ですが気分転換なので無問題です)。

機能

  • 問題サイトのhtmlから入力例と出力例を自動取得
  • ログイン
  • コードをコンパイルしてテスト
  • テストを通ったら自動提出

beta atcoderを利用しています

ログイン

ログインするときに送られるpostリクエストをブラウザの開発者モードで眺めると、クロスサイトリクエストフォージェリ(2012年ごろに話題になったパソコン遠隔操作事件でも使われていたものです)対策の為に、csrf_tokenがpostされていることが分かります。

csrf_tokenはcookieの中に含まれていますが、(当人以外は知らないデータをpostのデータの中に含めることで、URLを踏ませることで不正なリクエストを送ることをを防いでいます。)ログインページのhtmlのなかに含まれているのでそこから取りました。

sessionの情報はpickleして保持しておきます。

感想

割とすぐできて便利なのでいい練習になりました。 自動テストされて提出されると気分がいいですね

GitHub - tomabou/sports: sports programing utility