"三輪晋(Miwa Susumu)"
miwar****@gmail*****
2012年 1月 9日 (月) 01:09:56 JST
三輪です。 (2012/01/07 0:03), KADO Masanori wrote: > 2012年1月6日23:33 三輪晋( Miwa Susumu ) <miwar****@gmail*****>: >> ↓auth を設定しておけばよい、と解釈してたんですが、何か足りないということかしら.... > Mechanizeが対応してないか問題があるような気がしますねえ。 > 本家で聞いてみるのが早いかもです。 > 聞いてみたところ「HTTP ヘッダを比較してみろ」と言われたので比較してみま した。 [Mechanize-users] 500 error in tdiary using mechanize http://rubyforge.org/pipermail/mechanize-users/2012-January/000713.html 結局 referer の指定が不足していたようです。 Firefox と mechanizeでの HTTP ヘッダを比較してみたらreferer が異なってい ました。 mechanize: request-header: referer => http://test:test****@www*****/~rin/diary/update.rb Firefox: Referer: http://www.area51.gr.jp/~rin/diary/update.rb submit の headers に referer を追加したら日記に「追記」できました。 #!/usr/pkg/bin/ruby -Ku require 'rubygems' require 'mechanize' require 'logger' require 'pp' def main uri = "http://localhost/~rin/diary/update.rb" user = "test" pass = "test" referer = "http://www.area51.gr.jp/~rin/diary/update.rb" text = "!test\nhello tdiary!\n" agent = Mechanize.new agent.log = Logger.new($stdout) agent.auth(user, pass) agent.get(uri, nil, referer) agent.page.form_with(:action => "update.rb") { |form| form['body'] = text form.submit(form.button_with(:name => "append"), headers={"referer" => referer}) } end main referer についてはこっちのドキュメントに書いてありました ('A`) Mechanize - Ruby Mechanize wiki (ja) - livedoor Wiki(ウィキ) http://w.livedoor.jp/ruby_mechanize/d/Mechanize#submit >> 第 3引数 headers は追加の HTTP リクエストヘッダです。headers のキーは大 文字小文字無関係の文字列です。Mechanize::Chain::CustomHeaders? <http://w.livedoor.jp/ruby_mechanize/e/add?pagename=Mechanize%3a%3aChain%3a%3aCustomHeaders> で処理されるのでそちらを参照してください。 リファラは常に現在のページになります。変更は headers 引数で。 ~~~~~~~~~~~~~~~~~~~~~~~ << ありがとうございました。 しかし同じコードで たださんは動作して、私は動作しなかったのは謎です ('A`)