【问题标题】:ruby Nokogiri requests 403 Forbiddenruby Nokogiri 请求 403 Forbidden
【发布时间】:2014-07-15 10:36:17
【问题描述】:

您好,我使用 gem Nokogiri 从 ruby​​-toolbox 中抓取 gem 的 gtails

Nokogiri::HTML(open("https://www.ruby-toolbox.com/categories/by_name"))

但我收到错误:“403 Forbidden”

谁能告诉我为什么会出现这个错误?

提前致谢

【问题讨论】:

    标签: ruby nokogiri http-status-code-403


    【解决方案1】:

    尝试更改您的用户代理:

    Nokogiri::HTML(open("https://www.ruby-toolbox.com/categories/by_name", 'User-Agent' => 'firefox'))
    

    www.ruby-toolbox.com 似乎不接受“ruby”作为代理。

    【讨论】:

      【解决方案2】:

      如前所述,必须更改用户代理。但是,除此之外,您还必须禁用 SSL 证书验证,因为它也会引发错误。

      require 'nokogiri'
      require 'open-uri'
      require 'openssl'
      
      url = 'https://www.ruby-toolbox.com/categories/by_name'
      content = open(url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE, 'User-Agent' => 'opera')
      doc = Nokogiri::HTML(content)
      doc.xpath('//div[@id="teaser"]//h2/text()').to_s
      # "All Categories by name"
      

      【讨论】:

      • 您最好解释一下为什么禁用验证有效,为什么它首先存在,以及关闭它会导致什么问题。未经验证的 SSL 已失效。
      【解决方案3】:

      这似乎是OpenURI issue。试试这个:

      Nokogiri::HTML(open("https://www.ruby-toolbox.com/categories/by_name", 'User-Agent' => 'ruby'))
      

      【讨论】:

      • 但它仍然显示错误“OpenURI::HTTPError: 403 Forbidden”
      • 啊..换个 https > http怎么样?
      【解决方案4】:

      我花了大约 1 小时尝试解决 403 forbidden 的问题,包括修改 User-AgentNokogiri::HTML(open(www.something.com, User-Agent: "Safari")) 的参数、查看代理和其他事情。

      但是一直以来我的代码都没有问题,我被自动浏览的网站微妙地改变了url,并且它之前访问的url被禁止了。

      我希望这可以为其他人节省一些时间。

      【讨论】:

        猜你喜欢
        • 2018-04-14
        • 1970-01-01
        • 2020-08-25
        • 1970-01-01
        • 1970-01-01
        • 2019-12-21
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多