Nowoczesne aplikacje sieciowe korzystają z REST, który jest de facto standardem w dzisiejszym developmencie, zarówno dla aplikacji webowych jak i aplikacji mobilnych. REST (Representational state transfer) to architektura aplikacji webowych, która opisuje backend jako stan, który może być pobierany lub modyfikowany poprzez zapytania wysyłane do zbioru endpointów (POST, PUT, GET), które przyjmują i zwracają obiekty w formacie JSON.
Przy debugowaniu aplikacji webowych często pojawia się potrzeba przeanalizowania zapytań REST. Czasami logi w aplikacji są niewystarczające lub niemożliwe do uzyskania. Wtedy pojawia się potrzeba narzędzia, które umożliwi przenalizowanie ruchu sieciowego bez ingerencji w samą aplikację. Aby to osiągnąć możemy skorzystać z narzędzia Wireshark.
W tym artykule zaprezentuję jak skorzystać z Wiresharka do zalogowania i analizy ruchu sieciowego pomiędzy częścią backendową i frontendową aplikacji.
Aby zainstalować Wiresharka najlepiej skorzystać z oficjalnych instrukcji lub z repozytorium dostępnego dla wybranego systemu operacyjnego. Kliknij, aby przejść do oficjalnej strony pobierania.
Dodatkowo stworzymy prostą aplikację webową, która wystawi prosty endpoint
RESTowy. W tym celu skorzystamy z frameworka express.js, który jest jednym z
najpopularniejszych frameworków do tworzenia aplikacji webowych w Node.js. Aby
tego dokonać skorzystamy z poniższego kodu (wklej do pliku app.js
w nowym
folderze):
const express = require("express");
const app = express();
const port = 3000;
app.get("/api", (req, res) => {
res.json({ message: "Hello World!" });
});
app.listen(port, () => {
console.log(`Listening at http://localhost:${port}`);
});
Do uruchomienia aplikacji niezbędny będzie node.js oraz zainstalowanie
zależności za pomocą npm. Aby uruchomić aplikację należy skorzystać z poniższych
komend (przed uruchomieniem upewnij się, że masz zainstalowanego node.js oraz
jesteś w folderze z plikiem app.js
):
npm init -y
npm install express
node app.js
Aby przetestować działanie aplikacji należy otworzyć przeglądarkę i wpisać adres
http://localhost:3000/api
. W odpowiedzi powinno pojawić się
{"message":"Hello World!"}
.
Następnie należy uruchomić Wiresharka i wybrać właściwy interfejs. Jeżeli nie
wiesz, który interfejs wybrać, skorzystaj z opcji any
, która pozwala na
nasłuchiwanie wszystkich interfejsów sieciowych.
Warto zaznaczyć, że Wireshark wymaga uprawnień administratora, aby móc nasłuchiwać ruch sieciowy na wszystkich interfejsach. Jeżeli podejrzewasz, że Wireshark nie działa poprawnie, sprawdź uprawnienia. Np. w systemie Linux można uruchomić Wiresharka z uprawnieniami roota za pomocą poniższej komendy:
sudo wireshark
Po wykonaniu tych kroków Wireshark zacznie logować cały ruch sieciowy, który przechodzi przez wybrany interfejs sieciowy. Zwykle ilość zalogowanych danych jest bardzo duża, ponieważ domyślnie Wireshark loguje wszystkie pakiety sieciowe. Aby zobaczyć tylko interesujące nas zapytania HTTP, należy skonfigurować odpowiednie filtry.
Najważniejsze filtry dla naszego przypadku to:
http
- filtruje wszystkie zapytania HTTPip.src
- filtruje zapytania wysyłane z określonego adresu IPip.dst
- filtruje zapytania wysyłane do określonego adresu IPAby przefiltrować zalogowane dane należy dodać odpowiednie wyrażenie w pasku
filtrów w górnej części interfejsu. Np. aby zobaczy wszystkie pakiety wysyłane
na adres ip localhost należy wpisać: ip.dst = 127.0.0.1
, aby zobaczyć
wszystkie zapytania HTTP wysyłane lub odbierane przez aplikację uruchomioną na
localhoście należy wpisać:
(ip.dst = 127.0.0.1 or ip.src = 127.0.0.1 and http)
.
Localhost (127.0.0.1) to adres IP, który jest przypisany do interfejsu sieciowego loopback, który jest używany do komunikacji między procesami na tym samym urządzeniu. W przypadku aplikacji webowej uruchomionej na lokalnym serwerze, zapytania HTTP będą wysyłane na adres IP.
Teraz wireshark wyświetla tylko przychodzący i wychodzący ruch naszej aplikacji. Po odświeżeniu strony w przeglądarce powinny pojawić się nowe zapytania HTTP. Na przykładzie poniżej pierwsze dwa zapytania to odpowiednio request do i response z naszej aplikacji.
Warto wiedzieć również jak zobaczyć payload zapytań w formacie JSON. Domyślnie Wireshark pozwala na analizę payloadu zapytań w nieintuicyjnym, natywnym formacie. Aby otrzymać dane w bardziej czytelnym formacie należy skorzystać z funkcji "copy as printable text" dostępną w menu, pod prawym przyciskiem myszy w sekcji wyświetlającej body zapytania.
Aby otrzymać body zapytania w formacie JSON należy wybrać odpowiednie zapytanie
oraz Java Script Object Notation
, a następnie skorzystać z opcji
copy as printable text
.
Aby otrzymać header zapytania należy wybrać odpowiednie zapytanie oraz
Hypertext Transfer Protocol
, a następnie skorzystać z opcji
copy as printable text
.
Omówiłem kluczowe aspekty wykorzystania narzędzia Wireshark do debugowania aplikacji webowych, koncentrując się na zapytaniach REST, które są podstawą nowoczesnych aplikacji internetowych i mobilnych. Wireshark, jako zaawansowane narzędzie do analizy ruchu sieciowego, pozwala na obserwację zapytań HTTP bez konieczności ingerencji w kod aplikacji. Prawidłowo skonfigurowane filtry pozwalają na dostosowanie działania Wiresharka do naszych potrzeb.
W Blues Brackets zajmujemy się rozwiązywaniem prawdziwych problemów za pomocą najnowszych technologii.
Agile Software Development Polska
Usługi tworzenia oprogramowania metodą Agile
Usługi Tworzenia Chatbotów AI
Animowane Strony Internetowe | Profesjonalne Usługi
Eksperci w Embedded Android i Bluetooth
Aplikacje webowe vs desktopowe | bluesBrackets
Aplikacje webowe czy mobilne? Fullstack & UX/UI
Ekspercka firma tworząca aplikacje iOS w Polsce
Tworzenie oprogramowania medycznego
Aplikacje mobilne dla biznesu | bluesBrackets
Profesjonalny rozwój projektów Arduino
Polski Software House | UI/UX, Fullstack, Mobile, IoT
Automatyczne testy regresji i kompleksowy development
Dedykowane oprogramowanie na zamówienie
Body leasing React Native i embedded
Rozwój aplikacji cross-platform (wieloplatformowych)
Nowoczesny software house: Dyrektor IT jako usługa (CTO as a Service), DevOps, UX/UI
DevOps jako Usługa | Doradztwo AWS Cloud
Polski Software House: Agile & UI/UX
Tworzenie oprogramowania zgodnego z EAA
Edge Computer Vision i Embedded | bluesBrackets
Skalowalne aplikacje desktopowe i embedded – bluesBrackets
Firma konsultingowa DevOps | bluesBrackets
Rozwiązania AI szyte na miarę dla biznesu
Migracje Data Center i IT – Bezpieczne Usługi
Konsulting migracji do chmury – bluesBrackets
Tworzenie aplikacji Flutter | bluesBrackets
Usługi Rozwoju Aplikacji Flutter
Outsourcing IT i AI dla branży medycznej
Usługi tworzenia aplikacji hybrydowych
Integracje systemów i wdrożenia ChatGPT
Bezpieczne testy systemowe i integracja
Usługi integracji systemów IT
Oprogramowanie IoT i Smart City | bluesBrackets
Usługi inżynierii oprogramowania embedded | bluesBrackets
Tworzenie oprogramowania IoT dla przemysłu
IoT MQTT Dashboardy i rozwiązania embedded
IIoT i Przemysł 4.0 – oprogramowanie na miarę
Polski Software House | Rozwiązania IoT i Embedded
Tworzenie produktów IoT | Embedded & Fullstack Software House
Rozwój IoT i Wearable | bluesBrackets
Oprogramowanie IoT dla handlu, wearables, nieruchomości
Platforma zarządzania IoT i dedykowane rozwiązania
Usługi backend i JavaScript | bluesBrackets
Konsultacje Machine Learning i Rozwój Oprogramowania | UI/UX, Fullstack, Mobile, Embedded
Koszty wdrożenia i rozwoju sklepu online
Eksperckie rozwiązania embedded i mikrokontrolerów
Ekspercka migracja oprogramowania | bluesBrackets
Mikroserwisy czy Monolit: Ekspercka Architektura
Modernizacja aplikacji legacy dla firm
Usługi rozwoju MVP | Firma tworząca MVP dla startupów
Dedykowane MVP i oprogramowanie szyte na miarę
Tworzenie MVP oprogramowania | Wdrażanie MVP i POC
Eksperci IoT i Embedded | bluesBrackets
NB-IoT, systemy wbudowane i zwinne IT
IT Nearshoring i rozwój oprogramowania Polska
Usługi Next.js i WordPress
Dedykowane CMS i oprogramowanie na miarę
Tworzenie dedykowanych aplikacji webowych | bluesBrackets
Aplikacje webowe & AI szyte na miarę
Systemy Zarządzania i Oprogramowanie AI
Node.js, React i Next.js Polska – bluesBrackets
Firma Node.js – zaufane usługi i rozwój
Rozliczenie ryczałtowe czy T&M – co wybrać?
Business Intelligence dla firm | bluesBrackets
Tworzenie oprogramowania dla branży turystycznej
Tworzenie oprogramowania dla nieruchomości
Profesjonalne prototypowanie oprogramowania
Dedykowane rozwiązania IT dla firm i startupów
Outsourcing inżynierii oprogramowania Polska
Outsourcing Python – Polska firma offshore
Firma outsourcingowa IT — Polska
Polska firma outsourcingu IT
Eksperci embedded i bare metal | bluesBrackets
Zaufana firma offshore software development w Polsce
Ekspercka firma projektowa sprzętu | Własna elektronika
Usługi Proof of Concept i Proof of Principle
Proof of Concept a Prototyp – Agile Software
Tworzenie aplikacji webowych ReactJS
Rozszerzanie zespołów IT dla startupów i firm
Kompleksowe rozwiązania IT | Software House Polska
Języki i usługi tworzenia aplikacji mobilnych
Tworzenie aplikacji mobilnych na Androida i iOS
Usługi Rozwoju Aplikacji React
Rozwój produktów IoT i dedykowane oprogramowanie
Oprogramowanie Embedded i IoT | bluesBrackets
Agencja wdrożeń LLM | bluesBrackets
Tworzenie progresywnych aplikacji webowych | bluesBrackets Polska
Eksperckie usługi hardware | bluesBrackets
Usługi rozwoju systemów wbudowanych
Rozwiązania embedded z RTOS
Rozwój oprogramowania SaaS: chmura zgodna z RODO
saas_chmurowe_rozwi
Rozwój oprogramowania SaaS: chmura zgodna z RODO
Skalowanie aplikacji dla startupów — rozwiązania skalowalne
Oprogramowanie SLA & usługi zarządzane Polska
Firmy programistyczne | Rozwiązania na miarę
Software House Polska | Tworzenie Aplikacji i Systemów Wbudowanych
Expert Software Migration Services | bluesBrackets
Specjalistyczne usługi inżynierii oprogramowania
Rozwój aplikacji dla sportu i ochrony zdrowia
Staff Augmentation | Rozszerzenie zespołu IT
Modernizacja systemów IT i dedykowane oprogramowanie
Rozwiązania IT dla magazynowania energii i IoT
Usługi testowania jakości | bluesBrackets
Testy i integracja systemów IT end-to-end
Tworzenie aplikacji PWA | iOS i Android
Tworzenie PWA na iOS – Aplikacje mobilne
Uczenie maszynowe w analizie predykcyjnej
Rozwiązania ML dla łańcucha dostaw
Dedykowane usługi IT i outsourcing w Polsce
Rozwiązania AI Chatbot dla Firm
Usługi inżynierii danych i wizualizacji
Dedykowane usługi IT na żądanie | bluesBrackets
Rozwój aplikacji chmurowych | Polska firma IT
Usługi rozwoju IoT | Internet rzeczy IoT
Usługi rozwoju oprogramowania | bluesBrackets
Usługi tworzenia oprogramowania na zamówienie — bluesBrackets
Zdalne wsparcie IT i utrzymanie aplikacji
Utrzymanie oprogramowania i modernizacja | bluesBrackets
Profesjonalne usługi UX/UI design
Staff augmentation czy usługi zarządzane?
Warsztaty Product Discovery dla startupów i firm
Usługi chmury i transformacji cyfrowej
Usługi tworzenia aplikacji webowych od bluesBrackets
Eksperci white label dla aplikacji i IoT
Dedykowane systemy do zarządzania projektami
Liderzy Java w Polsce – zatrudnij ekspertów
Zatrudnij dedykowany zespół IT w Polsce
Zatrudnij dedykowany zespół IT w Polsce
Dedykowane zespoły programistyczne w Europie