Получите ответный IP-адрес от QNetworkReply

Доброе утро,

Я делаю несколько запросов get, используя QNetworkAccessManager из Qt5.12. Когда я создаю QNetworkRequest, я использую URL-адрес, содержащий имя хоста. Я хотел бы знать точный IP сервера, который отвечает (поскольку имя хоста может быть привязано ко многим адресам, а адреса меняются).

Я не смог найти ничего в QNetworkReply, который я получаю (возможно, это неправильный класс анализировать? я не уверен)

Кто-то знает, где взять эту информацию?

ОБНОВИТЬ:

Как указано в комментариях, найденный мной хак (начиная с Qt5.13):

  • разрешить имя хоста самостоятельно (и распечатать его)
  • использовать IP для отправки запроса
  • используйте setPeerVerifyName в запросе с именем хоста для проверки сертификата

Но то, что я действительно хотел бы, это API, подобный следующему, когда у меня есть QNetworkReply (и я получил готовый сигнал)

if ( http_code != HTTP_OK )
{
    print network_reply.getIp()
}

person n3mo    schedule 23.09.2020    source источник
comment
Я считаю, что вы должны запросить IP-адрес хоста с вашего DNS-сервера. QNetworkReply не содержит такой информации.   -  person vahancho    schedule 23.09.2020
comment
Да, я думал об этом... но я боюсь, что между моим DNS-запросом и вторым запросом от Qt что-то может измениться (например, сам DNS-сервер может измениться)... не должен ли IP-адрес содержаться в IP-пакет хотя бы? Могу ли я получить эту информацию?   -  person n3mo    schedule 23.09.2020
comment
Один хак, который у меня есть, заключался в следующем: я сам запрашивал IP-адрес у DNS, а в QNetworkRequest просто устанавливал IP-адрес напрямую вместо имени хоста... но я бы предпочел что-то в самом Qt...   -  person n3mo    schedule 23.09.2020
comment
Непонятно, зачем вам эта информация?   -  person vahancho    schedule 23.09.2020
comment
В целях отладки. Серверы, на которые я отправляю запрос, также являются нашими собственными серверами. Иногда запросы на получение терпят неудачу, и мы не можем воспроизвести или понять, почему. Одна идея состоит в том, что конкретный сервер каким-то образом сломан/неправильно настроен. Регистрация IP может нам помочь.   -  person n3mo    schedule 23.09.2020
comment
Если вам нужно отслеживать активность по IP-адресам, просто используйте IP-адреса вместо имен хостов.   -  person vahancho    schedule 23.09.2020
comment
Я не могу использовать жестко закодированные IP, их много и они очень изменчивы. Я мог бы сам разрешить имя хоста, зарегистрировать IP-адрес и создать запрос, используя сам IP-адрес. Но я хотел бы получить эту информацию в ответе, чтобы я мог иметь что-то вроде if (reply_code != HTTP_OK) { log the ip }   -  person n3mo    schedule 23.09.2020
comment
Если бы это был python, возможно, я бы использовал что-то вроде что   -  person n3mo    schedule 23.09.2020
comment
На самом деле, хак, о котором я говорил несколько комментариев назад, не сработает, потому что сертификаты привязаны к имени хоста, и соединение TLS будет разорвано... Так что на данный момент у меня нет рабочего решения....   -  person n3mo    schedule 23.09.2020
comment
Я думаю, что мог бы сам разрешить имя хоста и использовать IP напрямую... для проверки сертификата я мог бы использовать doc.qt.io/qt-5/qnetworkrequest.html#setPeerVerifyName (но только начиная с Qt5.13)   -  person n3mo    schedule 23.09.2020