Net https запросы дает мне то, что кажется шестнадцатеричным - PullRequest
0 голосов
/ 10 ноября 2018

В ruby ​​я делаю HTTP-запрос GET к веб-сайту, использующему SSL, и по какой-то причине он только дает мне данные, которые мне нужны при прокси через HTTP-прокси (пакет Burp) .

Например:

    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 или чего-то другого, и прокси веб-приложения знает, как с ним взаимодействовать, а net / https - нет? не могу понять это.

1 Ответ

0 голосов
/ 10 ноября 2018

Оказывается, причина, по которой это выглядит так, потому что она возвращается с кодировкой gzip.

Мне удалось успешно расшифровать его, используя следующее:

    if response['content-encoding'] == 'gzip'
        gz = Zlib::GzipReader.new(StringIO.new(response.body.to_s))
        uncompressed_string = gz.read
    end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...