净https请求给了我似乎是十六进制的内容

时间:2018-11-10 05:54:43

标签: ruby ssl https proxy

在ruby中,我正在对使用SSL的网站进行HTTP GET请求,由于某种原因,它 only 会为我提供通过HTTP代理(打suite套件)进行代理时所需的数据)。

例如:

    if uri.port == 443
        response = Net::HTTP.start(uri.host, uri.port, "172.16.38.182", "8080", :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) {|http|
            http.request(request)
        }
    else
        response = Net::HTTP.start(uri.host, uri.port) {|http|
            http.request(request)
        }
    end

通过BurpSuite代理,可以看到所需的数据。但是,如果我在下面尝试以下方法:

    if uri.port == 443
        response = Net::HTTP.start(uri.host, uri.port, :use_ssl => true, :verify_mode => OpenSSL::SSL::VERIFY_NONE) {|http|
            http.request(request)
        }
    else
        response = Net::HTTP.start(uri.host, uri.port) {|http|
            http.request(request)
        }
    end

然后我得到如下十六进制字符:

enter image description here

有人知道为什么会这样吗?是因为使用了特定的SSL / TLS版本还是某种原因,Web应用程序代理知道如何与之交互,但net / https却不知道如何交互?无法解决这个问题。

1 个答案:

答案 0 :(得分:2)

弄清其外观的原因是因为它以gzip编码返回。

我能够通过使用以下命令成功对其进行解码:

    if response['content-encoding'] == 'gzip'
        gz = Zlib::GzipReader.new(StringIO.new(response.body.to_s))
        uncompressed_string = gz.read
    end