【问题标题】:How to set a custom user agent in ruby如何在 ruby​​ 中设置自定义用户代理
【发布时间】:2011-08-13 11:19:57
【问题描述】:

我的任务是通过自动化测试 URL 上的不同用户代理。我正在使用ruby进行编码,并且我一直在尝试使用以下方法设置用户代理,但它似乎无法识别用户代理。

@http = Net::HTTP.new(URL)
response = @http.request_get(URL, {'User-Agent' => useragent})  

有没有其他方法可以做到这一点,或者我做错了什么?

【问题讨论】:

    标签: ruby user-agent net-http


    【解决方案1】:
    http = Net::HTTP.new("your.site.com", 80)
    req = Net::HTTP::Get.new("/path/to/the/page.html", {'User-Agent' => 'your_agent'})
    response = http.request(req)
    puts response.body
    

    非常适合我。

    【讨论】:

    • 有没有办法在全局范围内设置它,这样您就不必在每次调用时设置哈希?
    【解决方案2】:

    还有一个对我有用的:

    require 'open-uri'
    html = open('http://your.site.com/the/page.html', 'User-Agent' => 'Ruby').read
    puts html
    

    希望这会对你有所帮助。

    【讨论】:

      【解决方案3】:

      包含的Net::HTTPHeaderinitialize_http_header 方法:

      @http = Net::HTTP.new(URL)
      @http.initialize_http_header({'User-Agent' => useragent})
      response = @http.request_get(URL)  
      

      HTH

      【讨论】:

      • 你在错误的类上调用它。不会工作。
      • @user2398029 这适用于 1.9.3。欢迎编辑:)
      【解决方案4】:

      我找不到既适用于https 又适用于提供标头的解决方案。这是一个有效的版本:

      require "net/http"
      
      uri = URI("https://pokemongolive.com/events/community-day/")
      
      request = Net::HTTP::Get.new(uri)
      request["User-Agent"] = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
      
      response = Net::HTTP.start(uri.hostname, uri.port, :use_ssl => (uri.scheme == 'https')) {|http|
        http.request(request)
      }
      
      puts response.code
      puts response.body
      

      使用的 Ruby 版本是:ruby 2.6.3p62 (2019-04-16 revision 67580)

      【讨论】:

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