Ruby版のMechanizeを使用して、弊社の雇用主のチケットを、私たちが離れて行くチケット管理システムから抽出します。これはAPIを提供しません。Mechanizeリクエスト間でクッキーを維持する
require 'rubygems'
require 'nokogiri'
require 'mechanize'
@agent = Mechanize.new
page = @agent.post('http://<url>.com/user_session', {
'authenticity_token' => '<token>',
'user_session[login]' => '<login>',
'user_session[password]' => '<password>',
'user_session[remember_me]' => '0',
'commit' => 'Login'
})
page = @agent.get 'http://<url>.com/<organization>/<repo-name>/tickets/1'
puts page.title
user_session
は、サイトのログインページのポストにURLであり、私はしました:
問題は、Mechanizeのはpost
コールと以下のようget
呼び出しの間でクッキーを保っていないようで、ありますこれが実際にログインしていることが確認されましたが、get
コールから返されるページは「おっと、ログインしていません!ページ。
post
コールから返されたページ上のリンクがclick
であることを確認しましたが、実際にはJavaScriptなしで移動する必要はありません。もちろん、同じログインでブラウザでうまくやったことがあります。
私は間違っていますか?
です:
gem install mechanize --pre
を行い、この後に機械化gem uninstall mechanize 'some_version'
の古いバージョンを取り除くことを確認して次のように、あなたは、単に行うことができ、最新のをインストールするには 悪い、なぜ新しい機械化のインスタンスが必要ですか? –@DitmarWendtこれは、ログインポスト実行後に以前に取得したクッキーを再利用する方法の一例です。 –