如何在使用Ruby mechanize加载页面之前设置Referer标头?

Mar*_*cos 3 ruby http-referer mechanize http-headers

有没有一种直接的方法来使用Mechanize 2.3设置自定义标头?

我试过以前的解决方案,但得到:

$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)
Run Code Online (Sandbox Code Playgroud)

pgu*_*rio 12

文档说:

get(uri, parameters = [], referer = nil, headers = {}) { |page| ... }
Run Code Online (Sandbox Code Playgroud)

例如:

agent.get 'http://www.google.com/', [], agent.page.uri, {'foo' => 'bar'}
Run Code Online (Sandbox Code Playgroud)

或者你可能会喜欢:

agent.request_headers = {'foo' => 'bar'}
agent.get url
Run Code Online (Sandbox Code Playgroud)