HTTP-Anfragen ohne curl erstellen

Möglicherweise arbeiten Sie auf einem Server ohne curl oder wget. Sie müssen einen Endpunkt testen, aber diese Tools fehlen. Sie können Bash verwenden, um HTTP-Anfragen direkt zu senden.

Bash verfügt über eine versteckte Funktion namens /dev/tcp. Dies ist keine echte Datei. Es handelt sich um ein spezielles Gerät, das Bash versteht. Wenn Sie in /dev/tcp/hostname/port schreiben, öffnet Bash eine TCP-Verbindung für Sie.

So funktioniert es:

Sie verwenden den exec-Befehl, um Dateideskriptoren zu verwalten. Zum Beispiel können Sie den Dateideskriptor 3 zum Lesen und Schreiben öffnen.

Die Syntax sieht so aus: exec 3<>/dev/tcp/example.com/80

Sobald diese Verbindung offen ist, können Sie Daten dorthin senden. Sie können auch Daten von dort lesen. Diese Methode zeigt Ihnen, wie das HTTP-Protokoll auf einer niedrigen Ebene funktioniert.

So führen Sie eine GET-Anfrage aus:

Um Daten abzurufen, müssen Sie die korrekten Header senden. Sie benötigen am Ende eine Leerzeile, um das Ende Ihrer Anfrage zu signalisieren.

Folgen Sie diesen Schritten:

Beispielskript:

HOST="example.com" PORT=80 REQUEST_PATH="/" exec 3<>/dev/tcp/${HOST}/${PORT} printf "GET ${REQUEST_PATH} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3 cat <&3 exec 3>&-

Diese Technik hilft Ihnen zu verstehen, wie Clients und Server miteinander kommunizieren. Es ist eine nützliche Fähigkeit für das Debugging auf minimalistischen Systemen.

Quelle: https://dev.to/kelvin_kariuki_20f4bec616/developer-take-on-til-you-can-make-http-requests-without-curl-using-bash-devtcp-578k