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

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

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

您可以从别名设置用户代理

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' 

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

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

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

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

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

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

user_agent_alias不再可用。