HTTP Request Tanpa curl Menggunakan Bash /dev/TCP

Judul asli: TIL: You can make HTTP requests without curl using Bash /dev/TCP

Mengapa Ini Penting

Teknik ini memungkinkan debugging konektivitas di container minimal tanpa menambah dependencies, relevan untuk praktik containerization modern.

Bash dapat membuat permintaan HTTP langsung menggunakan /dev/tcp tanpa memerlukan curl atau wget. Fitur ini berguna di container minimal yang tidak memiliki tools HTTP client, memungkinkan pemeriksaan konektivitas dasar melalui socket TCP.

Pengembang dapat membuat permintaan HTTP menggunakan bash dengan memanfaatkan /dev/tcp, fitur internal bash yang menangani redirection TCP socket. Metode ini membuka file descriptor ke socket TCP dan menulis permintaan HTTP mentah. Sintaks dasarnya: exec 3<>/dev/tcp/service/8642 diikuti dengan printf untuk menulis permintaan GET HTTP/1.1. Header Connection: close penting untuk mencegah bash menunggu respons selamanya. Untuk menambahkan header autentikasi seperti Authorization: Bearer, tambahkan baris berakhiran \r\n sebelum baris kosong yang mengakhiri permintaan. /dev/tcp bukan file device nyata tetapi redirection yang ditangani bash secara internal, dengan bash menjalankan DNS lookup dan koneksi socket. Keterbatasan penting: ini bukan HTTP client sebenarnya, tidak menangani redirect, kompresi, TLS, atau fitur HTTP lanjutan yang dilakukan curl. Hanya bekerja untuk HTTP plaintext, bukan HTTPS. Fitur ini adalah spesifik bash, bukan POSIX, sehingga tidak tersedia di dash atau zsh. Memerlukan opsi compile-time --enable-net-redirections, meskipun sebagian besar build mainstream mengaktifkannya.

Sumber

mareksuppa.com — Baca artikel asli →