𝗠𝗲𝗹𝗮𝗸𝘂𝗸𝗮𝗻 𝗣𝗲𝗿𝗺𝗶𝗻𝘁𝗮𝗮𝗻 𝗛𝗧𝗧𝗣 𝗧𝗮𝗻𝗽𝗮 𝗖𝘂𝗿𝗹
Anda mungkin bekerja di server tanpa curl atau wget. Anda perlu menguji sebuah endpoint tetapi alat-alat tersebut tidak tersedia. Anda dapat menggunakan Bash untuk mengirim permintaan HTTP secara langsung.
Bash memiliki fitur tersembunyi yang disebut /dev/tcp. Ini bukan file sungguhan. Ini adalah perangkat khusus yang dipahami oleh Bash. Saat Anda menulis ke /dev/tcp/hostname/port, Bash akan membuka koneksi TCP untuk Anda.
Cara kerjanya:
Anda menggunakan perintah exec untuk mengelola file descriptor. Sebagai contoh, Anda dapat membuka file descriptor 3 untuk membaca dan menulis.
Sintaksnya terlihat seperti ini: exec 3<>/dev/tcp/example.com/80
Setelah koneksi ini terbuka, Anda dapat mengirim data ke dalamnya. Anda juga dapat membaca data darinya. Metode ini menunjukkan kepada Anda bagaimana protokol HTTP bekerja pada tingkat rendah.
Cara melakukan permintaan GET:
Untuk mendapatkan data, Anda harus mengirimkan header yang benar. Anda memerlukan baris kosong di bagian akhir untuk menandakan akhir dari permintaan Anda.
Ikuti langkah-langkah berikut:
- Atur variabel host, port, dan path Anda.
- Buka koneksi menggunakan exec.
- Gunakan printf untuk mengirim permintaan GET. Gunakan \r\n untuk akhiran baris.
- Gunakan cat atau loop untuk membaca respons.
- Tutup file descriptor setelah selesai.
Contoh skrip:
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>&-
Teknik ini membantu Anda memahami bagaimana klien dan server berkomunikasi satu sama lain. Ini adalah keterampilan yang berguna untuk debugging pada sistem minimalis.