Rejestruj wszystkie interakcje sieciowe aplikacji Java
Mam potworną aplikację Java (klient mało znanego serwera aplikacji GNUEnterprise) i jej źródło, które mogę skompilować po wprowadzeniu w niej zmian. Aplikacja intensywnie korzysta z sieci i muszę monitorować każde żądanie i odpowiedź. Mogłabym użyć sniffera takiego jak Wireshark, ale aplikacja działa z serwerem przez SSL, więc nie znając klucza prywatnego certyfikatu SSL, każdy podsłuchiwany ruch jest całkiem bezużyteczny.
Co mogę zrobić, aby każde żądanie i odpowiedź były rejestrowane z samej aplikacji? Muszę zobaczyć wszystkie wysłane i odebrane nagłówki. Nie chcę zmieniać całego kodu odpowiedzialnego za interakcję z siecią. Chcę umieścić kod podobny do tego
Network.setDefaultLogger(myCustomLoggerInstance);
gdzieś w pobliżu początku aplikacji, a następnie wmyCustomLoggerInstance
zrób wszystko, czego potrzebuję.
Ponadto, biorąc pod uwagę wszystkie operacje sieciowe są wykonywaneURLConnection
s, mogę uzyskać nagłówki odpowiedzi zcon.getHeaderFields()
i zażądaj nagłówkówcon.getRequestProperties()
. Ale dlaczego nie ma ciasteczek? Jak zrzucić wysłane i odebrane pliki cookie w ten sam sposób?
EDYTOWAĆ: To, co próbuję osiągnąć, to naśladowanie komunikacji aplikacji RPC z serwerem za pomocą SSL, na przykład za pomocącurl
. W tym celu muszę uzyskać szczegółowy dziennik ruchu sieciowego aplikacji.