2012年1月 9日

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

三輪です。

(2012/01/07 0:03), KADO Masanori wrote:
> 2012年1月6日23:33 三輪晋( Miwa Susumu ) <miwarin@xxxxx>:
>> ↓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@;xxxxx/~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 mailing list
tDiary-users-talk@xxxxx
http://lists.sourceforge.jp/mailman/listinfo/tdiary-users-talk


投稿者 xml-rpc : 2012年1月 9日 01:09
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/108065
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。