Saya mencari alat (mungkin di Linux) yang akan memungkinkan saya untuk membuat permintaan HTTP atau HTTPS manual. Secara manual, saya benar-benar bersungguh-sungguh: Saya harus dapat memberinya file teks yang terlihat seperti itu
POST /foo HTTP/1.1
Host: www.example.com
Accept: text/xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-gb,en;q=0.5
Content-Type: text/plain
Content-Length: 11
Hello world
dan URL tujuan (www.example.com/foo), dan kirim permintaan ke URL. Paling-paling, akan bermanfaat jika header Content_Length dihitung secara otomatis.
Saya akan dapat menulis alat seperti itu menggunakan beberapa pustaka seperti httplib dengan Python, tetapi alasan utama saya membutuhkannya adalah untuk melakukan penyelidikan manual ketika ada masalah dengan pustaka tersebut.
Jawaban:
wget memiliki opsi --post-file yang seharusnya cocok untuk Anda.
Sunting: Juga, ada Ncat , yang akan Anda gunakan dengan cara yang mirip dengan saran telnet Randolf Richardson, kecuali bahwa itu juga mendukung SSL / HTTPS:
sumber
Untuk HTTP (bukan HTTPS), salah satu alternatif dari perintah "wget" yang muncul di pikiran adalah menggunakan telnet sebagai berikut:
File "input.txt" adalah daftar perintah yang Anda tentukan sebelumnya yang ingin Anda beri makan ke host di nama host dan file "output.txt" akan menyimpan respons.
sumber
Anda dapat mengeluarkan permintaan GET dengan OpenSSL:
Perhatikan bahwa Anda juga dapat menggunakan "HTTP / 2", tetapi berhati-hatilah karena beberapa server (mis. Github.com) tidak mendukungnya.
sumber
Bagi saya, itu bekerja membuat file permintaan (Contoh:
request.txt
)Dan kemudian panggil
openssl s_client
perintah:cat request.txt | openssl s_client -quiet -connect www.example.com:443
Namun, berhati-hatilah dalam beberapa hal:
Content-type: text/plain; charset=utf-8
jika file tersebut dikodekan utf-8.HTTP/1.1 505 HTTP Version Not Supported
, karena protokol HTTP standar menggunakan CR / LF untuk akhir baris ( https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html ). Anda dapat menggunakanunix2dos
perintah untuk melakukan konversi ini.Connection: close
header untuk mengakhiri permintaan dan kembali dari panggilan. Jika tidak, perintah akan menunggu interaksi pengguna, jika server biasanya merespons denganConnection: keep-alive
header.sumber
Saya terkejut tidak ada yang menyebutkan CURL . Itu dibuat persis untuk apa yang ingin Anda lakukan. Dan itu tersedia di hampir semua platform (termasuk Windows).
Jadi untuk contoh Anda semua yang akan Anda lakukan adalah:
Yang ditangkap dari Wireshark akan menjaring Anda:
Anda dapat dengan mudah memodifikasi tajuk lebih lanjut jika Anda ingin melakukan segala macam hal (yaitu mengubah agen-pengguna, dll).
Sunting: Tidak memperhatikan persyaratan "dari file". Anda dapat melakukannya juga, baik ascii biasa atau file biner. Anda cukup menentukan nama file dengan simbol @
sumber