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
上記のようにクッキーを有効にしてセッション情報が保持されたクッキー情報を送ることによってログインできます。
- CentOSにcurb(ruby)をインストールする手順
- Windows7にcurb(ruby)をインストールする手順
- Windows7の環境でRubyでMySQLに接続する手順
- Ruby curbでリファラーとユーザーエージェントを設定してWebページを取得
- Windows7でruby2、open-uriを使ってWebページを取得
- Ruby open-uriでリファラーとユーザーエージェントを設定してWebページを取得
- Ruby curb、scan、gsubを使ってWebページから特定の情報を抽出
- RubyでWebサイト上のPDFファイルの情報を取得
- RubyでWebサイト上のエクセルファイルの情報を取得
- Rubyで既存のエクセルファイルにデータを追加
- RubyでWebページの応答時間を計測し、メールで通知
- Ruby curbでPOSTデータ送信
- curbでRailsアプリのクッキー、セッションIDを取得し、ログイン
- Ruby mysql2でSQLインジェクション対策
- Ruby mysql2でデータをテーブルに登録