curbでクッキーを有効にしてRailsが自動で生成するセッション情報を取得し、Railsアプリにログインするサンプルを作成してみました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
Railsアプリのクッキー、セッションIDを取得
セッションIDはクッキー内に保持されているので、curbでクッキー情報を取得し、クッキー内にセッションIDが保持されているか確認してみました。
①curbスクリプト作成
①curbスクリプト作成
c = Curl::Easy.new c.enable_cookies = true c.cookiefile = "cookie.txt" c.cookiejar = "cookie.txt" c.url = "http://localhost:3000/static_pages/home" c.http_get
②スクリプト実行
③取得したクッキー情報確認
cookie.txtファイル内にセッションIDが下記のように記述されていました。
_blog_session WVgwcGYv・・・
“blog”がRailsアプリの名前です。
WVgwcGYv・・・の部分がセッションIDと思われます。
Railsアプリへログインするサンプル
require 'curb' c = Curl::Easy.new c.url = "http://localhost:3000/signin" c.enable_cookies = true c.cookiefile = "cookie.txt" c.cookiejar = "cookie.txt" c.http_get web_page = c.body_str token = web_page.scan(/authenticity_token\" type=\"hidden\" value=\"(.*)\"/) c = Curl::Easy.http_post("http://localhost:3000/sessions", Curl::PostField.content('authenticity_token', token[0].first), Curl::PostField.content('session[owner_num]', '999'), Curl::PostField.content('session[password]', "xxxxx"), Curl::PostField.content('commit', 'ログイン')) do |curl| curl.enable_cookies = true curl.cookiefile = "cookie.txt" curl.cookiejar = "cookie.txt" curl.verbose = true end puts c.body_str.size
上記のようにクッキーを有効にしてセッション情報が保持されたクッキー情報を送ることによってログインできます。