[tDiary-users-talk: 0493] Re: ruby mechanizeで日記更新したい

Zurück zum Archiv-Index

"三輪晋(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`)




tDiary-users-talk メーリングリストの案内
Zurück zum Archiv-Index