← Alle artikelen

Ontwikkelaars · 2 min

Live verkeer inspecteren met Caddy en mitmproxy, zonder herstart

Zet één Caddy-route tijdens het draaien via mitmproxy met @viaalink/caddy-api-client, lees de echte verzoeken en zet de route terug. Er wordt niets herstart.

  • caddy
  • mitmproxy
  • debugging
  • typescript
  • api
  • developer-tools

TL;DR: @viaalink/caddy-api-client kan één Caddy-route via mitmproxy sturen en weer terugzetten terwijl Caddy blijft draaien. Je ziet de precieze verzoeken die je backend bereiken. Bekijk de uitleg op YouTube.


Waarom naar het verkeer kijken

Veel zoekopdrachten staan nergens in je code geschreven. Een zoekbackend bouwt ze op uit wat de gebruiker kiest: filters, categorieën, vinkjes, sorteervolgorde. Als je de code leest, zie je de onderdelen. Je ziet niet de query die uiteindelijk bij Elasticsearch aankomt.

Het verkeer laat precies dat zien. Zet een proxy in het pad en lees de verzoeken terwijl ze binnenkomen.

Een route tijdens het draaien wisselen

De Admin API van Caddy kan één route veranderen zonder herladen. De client gebruikt dat om mitmproxy in het pad te zetten: hij verwijdert de directe route op zijn @id, voegt de geproxte route toe met dezelfde @id, en wisselt later weer terug.

buildMitmproxyRoutePair bouwt beide routes uit één set opties:

ts

Caddy blijft draaien en alleen die ene route verandert. Het verwijderen en toevoegen zijn twee aanroepen, dus er is even een moment waarop de route ontbreekt. Gebruik dit op verkeer dat dat moment kan verdragen.

Wat de demo laat zien

De uitleg draait een productzoekopdracht achter Caddy, met een backend en Elasticsearch erachter. Eén klik op de zoekopdracht, en het verzoek verschijnt in mitmproxy.

Ook laat de demo een bug zien die de code alleen niet onthult. Elasticsearch antwoordt met 200 OK en nul resultaten. Het verzoek vraagt naar een veld product_name en de categorie electronics. Een eerder, goed antwoord laat zien dat de echte documenten name gebruiken en de categorie Electronics, met een hoofdletter E. Het verkeer toont de afwijking in seconden.

Als je je services met de Viaalink CLI draait, zet je inspect: true op een service in your Viaalink CLI config. via stuurt die service dan op verzoek via de eigen mitmproxy, zodat je de wisseling niet zelf hoeft op te zetten.

Waarmee het werkt

De wisseling werkt voor databases en services die HTTP spreken, zoals Elasticsearch, OpenSearch, CouchDB en ClickHouse over HTTP. Het laat geen SQL-verkeer zien van Postgres of MySQL over TCP. Dat wordt nog niet ondersteund.

Gebruik dit op ontwikkel- of testverkeer. mitmproxy ziet de inhoud van verzoeken, en die kan inloggegevens en persoonsgegevens bevatten.

Aan de slag

Contact

Een onderwerp voor ons?

Schrijf ons.