如何在 Rails 中为 Mechanize 设置自定义用户代理
Posted
技术标签:
【中文标题】如何在 Rails 中为 Mechanize 设置自定义用户代理【英文标题】:How to set custom user-agent for Mechanize in Rails 【发布时间】:2011-06-27 13:05:07 【问题描述】:我知道你有一组预定义的别名,你可以通过设置 agent.user_agent_alias = 'Linux Mozilla' 来使用,但是如果我想设置自己的用户代理,因为我正在编写一个网络爬虫并且想要识别它,因为我正在索引的网站。就像 Googlebot。
似乎有一个 user_agent 方法,但我似乎找不到任何关于它的功能的文档。
【问题讨论】:
【参考方案1】:您可以通过别名设置用户代理
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'
【讨论】:
谢谢。我想这可能是它,但找不到确认。【参考方案2】:我一直在寻找一种为 Mechanize 设置随机用户代理的方法,所以我最终这样做了:
a = Mechanize.new do |agent|
agent.user_agent_alias = (Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample
end
【讨论】:
我得到了这个NoMethodError Exception: undefined method user_agent_alias for #<Mechanize:0x007fd9f6c695f8>
错误...
应该是 = Mechanize.new do |agent| agent.user_agent = Mechanize::AGENT_ALIASES[(Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample] 结束【参考方案3】:
正如@Arkhitech 回复的那样,现在您想要这样做:
agt = Mechanize.new
agt.agent.user_agent = Mechanize::AGENT_ALIASES[(Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample]
user_agent_alias
不再可用。
【讨论】:
【参考方案4】:只是为了得到一个新的特工,那不是机械化
Mechanize::AGENT_ALIASES[(Mechanize::AGENT_ALIASES.keys - ['Mechanize']).sample]
【讨论】:
以上是关于如何在 Rails 中为 Mechanize 设置自定义用户代理的主要内容,如果未能解决你的问题,请参考以下文章
Rails:如何在 Rails 中为 Devise 设置密钥?
如何在 Rails 4 中为 AngularJS 更正设置根路由?
如何在 Rails 中为 collection_select 设置 HTML 选项?
如何在 Rails 中为 datetime_field_tag 设置默认值