如何在Rails中为Mechanize设置自定义用户代理

时间:2011-02-15 11:28:01

标签: ruby-on-rails ruby ruby-on-rails-3 mechanize

我知道您可以通过设置agent.user_agent_alias ='Linux Mozilla'来使用一组预定义的别名,但是如果我想设置自己的用户代理,我正在编写一个Web爬虫并且想要识别它,对于我正在编制索引的网站。就像Googlebot一样。

似乎有一个user_agent方法,但我似乎找不到任何关于它的功能的文档。

4 个答案:

答案 0 :(得分:57)

您可以从别名

设置用户代理
a = Mechanize.new
a.user_agent_alias = 'Mac Safari'

可用的别名存储在AGENT_ALIASES常量。

p Mechanize::AGENT_ALIASES

否则,请使用#user_agent设置自定义用户代理。

a = Mechanize.new
a.user_agent = 'Custom agent'

答案 1 :(得分:5)

我一直在寻找为Mechanize设置随机用户代理的方法,所以我最终这样做了:

a = Mechanize.new do |agent|
  agent.user_agent_alias = (Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample
end

答案 2 :(得分:0)

只是为了得到一个新的代理,这不是机械化

Mechanize::AGENT_ALIASES[(Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample]

答案 3 :(得分:0)

正如@Arkhitech所回答,现在你想做:

  agt = Mechanize.new 
  agt.agent.user_agent = Mechanize::AGENT_ALIASES[(Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample] 

user_agent_alias不再可用。