【问题标题】:Opening a non-HTTP proxy URI on https domain using OpenURI使用 OpenURI 在 https 域上打开非 HTTP 代理 URI
【发布时间】:2015-04-22 13:56:58
【问题描述】:

我在代理后面,我必须获取 HTTPS 网页来收集一些信息,但 OpenURI 返回错误:“非 HTTP 代理 URI”。

这是问题:

> yadayada@ubuntu:~/Desktop/test/lib$ ruby JenkinsTest.rb 
/home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:257:in `open_http': Non-HTTP proxy URI: https://web-proxy.yadayada:8088 (RuntimeError)
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:736:in `buffer_open'
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:211:in `block in open_loop'
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:209:in `catch'
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:209:in `open_loop'
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:150:in `open_uri'
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:716:in `open'
from /home/yadayada/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/open-uri.rb:34:in `open'
from JenkinsTest.rb:6:in `<main>'
yadayada@ubuntu:~/Desktop/test/lib$ 

这是我正在运行的代码:

  1 require 'rubygems'
  2 require 'nokogiri'
  3 require 'open-uri'
  4 
  5 # Request the Jenkins webpage
  6 @jenkinsWebPage = Nokogiri::HTML(open("https://yadayad.yada.yada.com:8443"))
  7 
  8 # Prints the received page
  9 puts @jenkinsWebPage 

代理没有登录名/密码。

有什么想法吗?

【问题讨论】:

  • 我之前查过,但是我使用的代理没有认证;由于Jenkins服务器上的自签名证书无效,该jenkinsWebPage之后会出现问题,但我认为这不是open-uri目前抱怨的问题,我正在积极搜索几个星期来解决这个问题:(

标签: ruby https proxy nokogiri open-uri


【解决方案1】:

好的,所以我已经找到了如何获取该页面,但我必须将 open-uri 切换为 net/https,此外,我将 OpenSSL 设置为 VERIFY_NONE,因为它是一个自签名证书(公司服务器):

require 'rubygems'
require 'nokogiri'
require 'net/https'
require 'openssl'

class JenkinsTest
    # Request the Jenkins webpage
    def request_jenkins_webpage
        uri = URI.parse("https://https://yadayad.yada.yada.com:8443")
        http = Net::HTTP.new(uri.host, uri.port)
        http.use_ssl = true
        http.verify_mode = OpenSSL::SSL::VERIFY_NONE
        request = Net::HTTP::Get.new(uri.request_uri)
        response = http.request(request)
        @@page = Nokogiri::HTML(response.body)
    end

    def print_jenkins_webpage
        puts @@page
    end
end

它看起来很丑,如果有人找到更好的方法来放置这个,请编辑这个帖子,但到目前为止,它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多