2012-04-12 14 views
3

Mechanize 2.3でカスタムヘッダーを設定する簡単な方法はありますか?Rubyでページを読み込む前にRefererヘッダーを設定する方法は?

私はformer solutionを試みたが、取得:

この質問については
$agent = Mechanize.new 
$agent.pre_connect_hooks << lambda { |p| 
    p[:request]['Referer'] = 'https://wwws.mysite.com/cgi-bin/apps/Main' 
} 

# ./mech.rb:30:in `<main>': undefined method `pre_connect_hooks' for nil:NilClass (NoMethodError) 
+0

agent.get 'http://www.google.com/', [], agent.page.uri, {'foo' => 'bar'} 

代わりにあなたが好きかもしれませんそれ自体は有効なものなので、私はkepそれで同じことに困惑している人たちのための答えを投稿しました。別の問題は、私が直面しているように見える機械化の実際の問題を隠すだけです。それ以外はこれとは無関係です。 – Marcos

答えて

2

私は、人々が使用するように見える気づい:

page = agent.get("http://www.you.com/index_login/", :referer => "http://www.you.com/") 

さておき、今、私はこの答えをテストしていること、このだったようだと私の実際の問題の背後にある問題ではありません。私が掻いているサイトを訪れるたびに、最初にログインした訪問の数秒後にログインシーケンスページを再度通過する必要があります。 yaml形式のjarファイルしかし、それはもちろん別の質問につながるでしょう。

3

あなたがコピーしたコードが間違っています。この例では改行がありましたが、コードとしてタグ付けされていないので、書式設定では消えてしまいました。 $agentにはnilが含まれています。これは、初期化する前に使用しようとしているためです。オブジェクトを初期化してから使用する必要があります。ただ、この方法を試してください。

$agent = Mechanize.new 
$agent.pre_connect_hooks << lambda { |p| p[:request]['Referer'] = 'https://wwws.mysite.com/cgi-bin/apps/Main' } 
+0

良い通知、ありがとう! – Marcos

9

The docsは言う:

get(uri, parameters = [], referer = nil, headers = {}) { |page| ... } 

ので、例えば:質問には何の問題もありませんでした

agent.request_headers = {'foo' => 'bar'} 
agent.get url 
関連する問題