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でデータをテーブルに登録