У меня есть чудовищное приложение Java (клиент малоизвестного сервера приложений GNUEnterprise) и его источник, который я могу скомпилировать после внесения в него некоторых изменений. Приложение сильно использует сеть, и мне нужно отслеживать каждый запрос и ответ. Я мог бы использовать sniffer, например Wireshark, но приложение работает со своим сервером через SSL, поэтому не зная секретный ключ SSL-сертификата, какой-либо обнюхивающий трафик довольно бесполезен.
Что я могу сделать, чтобы каждый запрос и ответ регистрировались из самого приложения? Мне нужно увидеть все отправленные и полученные заголовки. Я не хочу изменять весь код, ответственный за сетевое взаимодействие. Я хочу поставить код типа
Network.setDefaultLogger(myCustomLoggerInstance);
где-то рядом с приложением, а затем в myCustomLoggerInstance
выполните все необходимые записи.
Кроме того, если все сетевые операции выполняются с помощью URLConnection
s, я могу получить заголовки ответов с con.getHeaderFields()
и запросить заголовки с con.getRequestProperties()
. Но почему печенья там нет? Как сбрасывать отправленные и полученные файлы cookie таким же образом?
EDIT. То, что я пытаюсь достичь, - это имитировать связь RPC-приложения с сервером через SSL, скажем, с помощью curl
. Для этого мне нужно получить подробный журнал сетевого трафика приложения.