CGIを使ってRubyでTwitterスパムを作った
大学でTwitterスパム作るか
— 人生ノリと勢い (@y_sni) 2017年2月13日
「大人のセンター試験」スパムが流行っているので, これくらいCGIを使えば簡単に作れるやろ〜〜ってノリで作った。試験期間中にも関わらず。ツイートを読み返すと4時間かかったらしい。
引っかかった点をメモする。
むっずwwこれまじで難しいwwww
— 人生ノリと勢い (@y_sni) 2017年2月13日
■大人センター試験
評価判定: C
正解数 : 6問/10問中
【大手企業就職可能レベル 】
□コメント あなたならもっと出来たはずhttps://t.co/GHtSVwpgMQ
Do what you like
— 人生ノリと勢い (@y_sni) 2017年2月13日
システム構成
cgiファイルをcoins機室で書き, 全学計算機から公開する。
Ruby gemを使えない
全学計算機のユーザー環境では gem install
できるが, CGIサーバーには反映されないため, requireでエラーになる。幸いにもCGIサーバーにbundler
gem はインストールされているため, Gemfile
を書き, bundle install --path=./gems
でローカルにインストールし, Rubyスクリプト(CGIファイル)内で require 'bundler'; Bundler.require
することでgemを使える。
ちなみに, なぜかcoins機室のCentOSではgemをインストールすることができなかった。
セッション管理にはCGIライブラリを使う
RubyでCGIを書いている人なんていない(みんなSinatraを使ってる)ので, セッション管理やURIパラメータの取得方法がわかりにくいが, CGIではCGIライブラリを使う。sinatra
のparams#.[]
(ハッシュっぽいの)は CGI#.[]
に対応。
CGIライブラリはSymbolに対応していない
cgi.header( { status: 'REDIRECT', Location: url })
って書きたくなるけど, これではHTTPヘッダとして扱われないので, ちゃんと cgi.header( { 'status' => 'REDIRECT', 'Location' => url } )
と書かないといけない。
CGIレスポンスの文法
めっちゃ細かかったと思うけど記憶が定かではないから各自で調べて
結局アクセスされたん?
ユーザー認証ページまで進む人はたくさんいるが, 認証してくれたのはこの12時間で1人だけらしい。残念。