En grundläggande kompetens för utvecklare och systemadministratörer är förmågan att felsöka applikationer, API:er och tjänster. Att ha rätt verktyg till hands kan vara avgörande för att lösa problem effektivt.
Vad innebär felsökning?
Felsökning kan liknas vid detektivarbetet i en kriminalserie. Det handlar om en systematisk process för att identifiera och korrigera fel och brister i programvara. Det kräver taktik och en metodisk approach.
Mer specifikt fokuserar felsökning på att åtgärda problem som hindrar korrekt funktionalitet i en programvara, till exempel en webbapplikation. Ofta innebär detta att man försöker återskapa det problem som ska lösas.
Detta kan kräva att man skickar API-anrop, men det kan bli problematiskt. Webbläsare hindrar ofta ändringar i ursprungshuvuden, och det finns begränsningar i URL-längd.
För att återskapa och lösa problemen kan det alltså vara nödvändigt att manipulera HTTP-kommunikationen, vilket i sin tur kräver specifika och kraftfulla verktyg.
Felsökningsprocessen kan inkludera följande komponenter eller metoder:
- Interaktiv felsökning
- Analys av kontrollflöde
- Enhetstestning
- Integrationstestning
- Loggfilsanalys
- Övervakning
- Minnesdumpar
- Profilering
Intressant nog har vissa webbläsare inbyggda webbutvecklarverktyg som kan användas för felsökning av API:er. Detta innebär att man inte alltid behöver skapa egna verktyg från grunden.
Vad är en HTTP-klient?
Om du utvecklar ett system som använder HTTP för kommunikation, till exempel en webbapplikation, är det viktigt att förstå HTTP-klientens roll.
HTTP, HyperText Transfer Protocol, är grunden för all dataöverföring på webben. Det är det protokoll som gör det möjligt för oss att surfa på internet.
En HTTP-klient är ett system som skickar förfrågningar i HTTP-textformat till en server och tar emot svar i samma format.
Det är viktigt att förstå skillnaderna mellan HTTP-klienter och HTTP-servrar.
Skillnaden mellan HTTP-klient och server
HTTP-klienter är oftast webbläsare eller specialiserade verktyg, medan HTTP-servrar fungerar som proxyservrar till applikationsservrar.
I enklare termer, alla enheter som ansluter till internet, som smartphones, TV-apparater och spelkonsoler, använder sannolikt en HTTP-klient.
En HTTP-server är den nätverksdator som HTTP-klienten ansluter till. Relationerna mellan dem kan ses som en dialog, där klienten skickar en begäran och servern svarar.
Exempel på HTTP-förfrågningar
Förfrågan | Beskrivning |
GET | Hämta hela resursen |
HEAD | Hämta resursens huvud, utan brödtext |
POST | Lägg till innehåll i en webbresurs |
PUT | Ändra en befintlig webbresurs |
DELETE | Ta bort en specificerad resurs |
TRACE | Visa ändringarna i en webbresurs |
OPTIONS | Visa tillgängliga HTTP-metoder för en URL |
CONNECT | Konvertera begäran till en transparent TCP/IP-tunnel |
PATCH | Ändra delvis en webbresurs |
Med rätt verktyg har felsökning av webbapplikationer blivit enklare och smidigare.
HTTPie
HTTPie syftar till att göra interaktionen med webbtjänster via kommandoraden användarvänlig. Verktyget använder en naturlig syntax för att skicka HTTP-förfrågningar.
HTTPie kan användas för att felsöka, testa och ansluta till HTTP-servrar. Den stöder både HTTP, HTTPS och proxyservrar.
Funktioner:
- Inbyggt stöd för JSON
- Tillgänglig för Windows, macOS och Linux
- Stöd för anpassade HTTP-huvuden och metoder
- Möjlighet att skicka formulär
- Offlineläge
- Grundläggande och sammanfattad autentisering
- Intuitiv syntax
Om du inte vill installera HTTPie lokalt, kan du använda det online.
Fiddler
Fiddler är en plattformsoberoende proxy för webbsökning. Det kan användas för att manipulera webbsessioner, inspektera HTTPS-trafik och övervaka trafiken mellan din dator och internet.
Fiddler finns för Windows, macOS och Linux, och är ett populärt val för felsökning av webbtrafik.
RESTer
RESTer är ett tillägg för Google Chrome och Firefox.
Funktioner:
- Auktoriseringshuvuden med Basic- eller Auth2-autentisering
- Visa förfrågningshistorik
- Utför förfrågningar med valfri metod, URL, brödtext och anpassade huvuden
- Testa och felsöka API:er
Paw
Paw är en komplett HTTP-klient som kan hantera alla typer av HTTP-förfrågningar. Med Paw kan du både testa och utforska nya API:er.
Paw är utvecklat exklusivt för macOS och är känt för sin användarvänlighet. Den stöder import och generering av Swagger, RAML och JSON-schema.
Funktioner:
- Stöd för flera autentiseringsmetoder som Basic, OAuth, Hawk och Digest
- Dynamiska värden
- Miljöhantering
- Utökningsbar med java-scriptbaserade tillägg
- Cookie- och sessionshantering
Requester
Requester är en kraftfull klient som kombinerar funktionerna i HTTPie, Postman och Paw. Den fungerar endast med Sublime Text editor.
Funktioner:
- Stöd för JSON-schema
- Förfrågningssamlingar och historik
- Färgad utdata med syntaxmarkering
- Modern användarupplevelse
- Enkel hantering av cookies, anpassade huvuden, förfrågningstext och frågeparametrar
- Stöd för GraphQL
Postman
Om du arbetar mycket med API:er kan Postman vara ett verktyg som du kommer att uppskatta.
Postman är en av de mest populära HTTP-klienterna för felsökning av webbapplikationer och förenklar API-utvecklingen avsevärt.
Funktioner:
- Kraftfullt GUI med ett användarvänligt gränssnitt
- Förfrågningshistorik
- Automatiserad testning med samlingslöpare
- Flexibel API-övervakning
- Stöd för REST, GraphQL och SOAP
- Stöd för flera format, inklusive JSON och HTML
cURL
cURL är ett kommandoradsverktyg som används för att skicka data med URL-syntax.
cURL är ofta förinstallerat på UNIX-liknande operativsystem och stöder ett brett utbud av protokoll som FTP, LDAP, POP3, SMTP, GOPHER, IMAP, HTTP, HTTPS och SCP.
Charles Proxy
Som namnet antyder är Charles Proxy en HTTP- och omvänd proxy som dirigerar lokal trafik genom sig själv.
Charles kan användas för SSL-proxying, bandbreddsbegränsning, AJAX-felsökning, brytpunkter och mer.
Whistle
Whistle är ett NodeJS-baserat plattformsoberoende verktyg för att fånga och manipulera HTTP-, HTTPS-, WebSocket- och TCP-trafik.
För att använda Whistle måste du först installera NodeJS, och sedan Whistle via npm:
npm install -g whistle
Om standardfunktionerna inte räcker till kan du utöka verktyget med hjälp av plugins.
mitmproxy
mitmproxy är en populär HTTPS-proxy med öppen källkod, särskilt användbar för säkerhetsforskare. Den kan användas via CLI, webbgränssnitt eller Python API.
Webbgränssnittet påminner om Chrome’s utvecklarverktyg, och mitmproxy stöder även HTTP/2.
Proxyman
Liksom Paw, är Proxyman en avancerad, macOS-specifik applikation för webbfelsökning.
Proxyman fungerar som en ”man-in-the-middle” för webbtrafik och erbjuder ett flertal funktioner som:
- SSL-proxying
- Möjlighet att repetera förfrågningar
- Stöd för Protobuf
- Omskrivning via skript
- Lokal och fjärrkartläggning
- Innehållsfiltrering
- Syntaxmarkering
Proxymans användargränssnitt är mycket användarvänligt.
HTTP Toolkit
HTTP Toolkit är en HTTP-debugger med öppen källkod som finns tillgänglig som skrivbordsapplikation för Windows, Mac och Linux.
Till skillnad från många andra HTTP-debuggers, erbjuder HTTP Toolkit automatiskt riktad avlyssning för specifika klienter. Istället för att avlyssna all trafik, kan man välja att avlyssna endast specifik applikationstrafik, vilket minskar risken för irrelevant trafik eller störningar i andra applikationer.
Med ett enkelt klick kan man fånga trafik från webbläsare (som Chrome, Firefox m.fl.), backend- eller skriptspråk som Node.js, Python och PHP, kommandoradsverktyg, Electron-applikationer eller Android-enheter och emulatorer, inklusive HTTPS-avlyssning på systemnivå.
HTTP Toolkit erbjuder de vanliga funktionerna för HTTP-felsökning, inklusive brytpunkter och omskrivning av HTTP(S)-trafik, filtrering och sökning av insamlad trafik, samt markering och automatisk formatering av många vanliga format för förfrågnings- och svarsbrödtexter. Grundfunktioner för att avlyssna, inspektera och skriva om HTTP(S) är tillgängliga gratis, medan vissa avancerade funktioner som import/export och automatiska mock-regler kräver ett betalkonto.
Sammanfattning
Dessa HTTP-klienter och webbfelsökningsproxys kan hjälpa dig på många sätt. De flesta erbjuder en gratisversion eller en testperiod, så det kan vara värt att prova några av dem för att hitta det verktyg som passar dig bäst.
Lycka till med felsökningen!