【问题标题】:How to set custom user-agent for Mechanize in Rails如何在 Rails 中为 Mechanize 设置自定义用户代理
【发布时间】:2011-06-27 13:05:07
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多