Расшифровка SSL-трафика c из тела ответа OkHttp - PullRequest
1 голос
/ 03 февраля 2020

Я работаю над приложением, где я подключаюсь к веб-сайту с OkHttp , получаю данные ответа и извлекаю необходимые данные с помощью Jsoup .

Все все в порядке, пока я не подключусь к незащищенному URL-адресу HTTP. Когда я подключаюсь к URL-адресу HTTPS, ответ кодируется, и я понятия не имею, как его декодировать.

Я просмотрел несколько потоков StackOverflow об этой конкретной проблеме c и о том, как работает SSL, но безрезультатно .

Вот блок кода, который я использую:

private void startInternal() throws Exception {
    Request request = new Request.Builder()
            .url(att_link)
            .get()
            .addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0")
            .addHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8")
            .addHeader("Accept-Language", "en-US,en;q=0.5")
            .addHeader("Accept-Encoding", "gzip, deflate, br")
            .addHeader("Connection", "keep-alive")
            .addHeader("Referer", "https://www.abcdx.org/")
            .addHeader("Upgrade-Insecure-Requests", "1")
            .build();
    Response response = null;
    try {
        response = client.newCall(request).execute();
    } catch (Exception e) {
        runner.onError();
        e.printStackTrace();
    }
    if (response != null) {
        if (response.body() != null) {
            obtainCookieAndGo(Objects.requireNonNull(response.body()).string());
        } else {
            runner.onError();
        }
    } else {
        runner.onError();
    }
}

ОЖИДАЕМЫЙ ВЫХОД

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><meta charset="utf-8" /><title>
</title><link href="images/favicon.png" rel="shortcut icon" /><link href="css/dashboard.css" rel="stylesheet" type="text/css" media="all" /><link href="css/font-awesome.css" rel="stylesheet" type="text/css" media="all" /><link href="css/font-awesome.min.css" rel="stylesheet" type="text/css" media="all" /><link href="css/menu.css" rel="stylesheet" type="text/css" media="all" />
    <script src="js/jquery-1.7.2.min.js"></script>
    <script src="js/organictabs.jquery.js" type="text/javascript"></script>
    <script src="tinymce3.x/jscripts/tiny_mce/tiny_mce.js" type="text/javascript"></script>
</head>
<body>
    <form method="post" action="./student-attendance.aspx" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="CMjQBN==" />
</div>

АКТУАЛЬНЫЙ ВЫХОД

��������������`I�%&/m�{J�J��t�`$ؐ@������iG#)�*��eVe]fx@
�흼��{���{���;�N'���?\fdl��J�ɞ!���?~|?"~��7N��O�<y��
�<M���L_~����I���ݻ߽wr���7O����o�x��w�7u�l����Yy��鋏ҏ�m�zt�������޸�/�yu
`���u������GG�5��y6;z���,����>Z����w��E[����N���/�:OO�
�2��by�f�Y�E��.�E�lG��U���<k    �]y�qY,ߦ�:?��bA����e1�����⣴���>j�U�N�
m�Ϲc�i�e�|Re�lL����2o�y�~��׫�����]{�,�Y�}�QV�1h�ղ�ή�Z��<�E��F�E�_�o

1 Ответ

3 голосов
/ 03 февраля 2020

Это не имеет ничего общего с SSL.

        .addHeader("Accept-Encoding", "gzip, deflate, br")

Вы заявляете, что поддерживаете различные кодировки контента (сжатие), но тогда вы не обрабатываете их в своем коде. Если вы хотите получить простой ответ, просто не претендуйте на поддержку сжатого ответа.

...