আপনি কীভাবে সিআরএল দিয়ে পোষ্ট ডেটা প্রদর্শন করবেন?


139

উদাহরণস্বরূপ, -v আর্গুমেন্ট সহ একটি ওয়েব সার্ভারে পোস্ট করা:

curl -v http://testserver.com/post -d "firstname=john&lastname=doe"

এবং আউটপুট

> POST /post HTTP/1.1
> User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3
> Host: testserver.com
> Accept: */*
> Content-Length: 28
> Content-Type: application/x-www-form-urlencoded
> 
< HTTP/1.1 200 OK
(etc)

আমি যে ডেটা পোস্ট করেছি তার কোনও উল্লেখ নেই।

আউটপুটে "প্রথম নাম = জন এবং শেষ নাম = ডো" স্ট্রিংটি প্রদর্শনের জন্য কি সিআরএল-এ কোনও বিকল্প আছে?

দ্রষ্টব্য: স্পষ্টতই আমি চাইছি স্ট্রিংটি আমি সম্পাদিত কমান্ডের মধ্যে রয়েছে তবে এখানে আরও কয়েকটি পোস্ট অপশন রয়েছে যেমন - ফার্ম এবং --ডাটা-এসসিআই ইত্যাদি I'd আমি সার্ভারে কাঁচা তথ্য প্রেরণ করা দেখতে চাই।


1
আপনি সার্ভারে প্রেরণ করা প্রকৃত তথ্য ক্যাপচার করতে tcpdump চালাতে পারেন। বা ওয়্যারশার্ক (আরও ভাল) যদি আপনার কাছে থাকে।
কিথ

আমি নিশ্চিত আপনি পারবেন না। অস্পষ্টতা দ্বারা সুরক্ষার এটি কি উদাহরণ? - stackoverflow.com/questions/198462/...
slotishtype

উত্তর:


175

tcpdumpব্যবহার না করেই আমার কাছে সবচেয়ে কাছেরটি হ'ল --trace-asciiবিকল্পটি ব্যবহার করা :

~ curl http://w3.org/ -d "hello=there" --trace-ascii /dev/stdout
== Info: About to connect() to w3.org port 80 (#0)
== Info:   Trying 128.30.52.45... == Info: connected
== Info: Connected to w3.org (128.30.52.45) port 80 (#0)
=> Send header, 210 bytes (0xd2)
0000: POST / HTTP/1.1
0011: User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.1
0051: 9.7 OpenSSL/0.9.8l zlib/1.2.3
0070: Host: w3.org
007e: Accept: */*
008b: Content-Length: 11
009f: Content-Type: application/x-www-form-urlencoded
00d0: 
=> Send data, 11 bytes (0xb)
0000: hello=there

দুর্ভাগ্যক্রমে, আপনি পোস্ট করার সময় এটি কাজ করে না multipart/form-data:

~ curl http://w3.org/ -F hello=there -F testing=123 --trace-ascii /dev/stdout
== Info: About to connect() to w3.org port 80 (#0)
== Info:   Trying 128.30.52.45... == Info: connected
== Info: Connected to w3.org (128.30.52.45) port 80 (#0)
=> Send header, 270 bytes (0x10e)
0000: POST / HTTP/1.1
0011: User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.1
0051: 9.7 OpenSSL/0.9.8l zlib/1.2.3
0070: Host: w3.org
007e: Accept: */*
008b: Content-Length: 244
00a0: Expect: 100-continue
00b6: Content-Type: multipart/form-data; boundary=--------------------
00f6: --------19319e4d1b79
010c: 
<= Recv header, 32 bytes (0x20)
0000: HTTP/1.1 301 Moved Permanently

4
আমি জানি এটি আপনার নিজের উত্তর, তবে আমি মনে করি আপনি এটি সঠিক উত্তর হিসাবে গ্রহণ করতে পারেন। এটি যাইহোক এটি আমার জন্য সমাধান করেছে, ধন্যবাদ :-)
ড্যারেন কুক

4
যেকোনটি সরান -vবা --verboseতারা ট্রেস নির্দেশকে ওভাররাইড করে।
অ্যালিকেলজিন-কিলাকা

2
@ অগাস্টিনরিডঞ্জার এটি https এর সাথে দুর্দান্ত কাজ করে। আমি কেবল এটি চেষ্টা করে দেখেছি পে-লোড। ডেটা এনক্রিপ্ট করা হয়েছে তবে যেহেতু আপনি সংযোগের শেষ পয়েন্ট, তাই আপনার কাছে সমস্ত ডেটা উপলব্ধ রয়েছে এবং তাই কার্ল এটি দেখতে পারে।
Gak

2
ব্যবহার করা --trace-asciiউপর OS X এর 10.8.5 মাউন্টেন লায়ন আমার জন্য কাজ করেন। আমি দুটি ছবি এবং একটি জসন বডি সহ একটি মাল্টিপার্ট ফর্ম সত্তা আপলোড করেছি এবং প্রত্যাশার মতো সবকিছুই কাজ করেছে
সীমানা

4
পরিবর্তে --trace-ascii /dev/stdoutআপনি --trace-ascii -(ড্যাশ) করতে পারেন
আদম মিশালিক

27

অথবা আপনি https://httpbin.org/ দিয়ে পরীক্ষা করতে পারেন

$ curl https://httpbin.org/post -d "firstname=john&lastname=doe"
{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "firstname": "john", 
    "lastname": "doe"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Content-Length": "27", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.43.0"
  }, 
  "json": null, 
  "origin": "78.228.163.126", 
  "url": "https://httpbin.org/post"
}

12

নেটক্যাট বিকল্প যুক্ত করতে চান

#!/bin/bash
nc -l 8080 &

curl "http://localhost:8080" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
--data @<(cat <<EOF
{
  "me": "$USER",
  "something": $(date +%s)
}
EOF
)

9

আপনি চার্লস এবং ব্যবহার করতে পারে curl --proxy localhost:8888। Simples!


4
না, এটি https এর সাথে কাজ করে না। গৃহীত উত্তরটি সূক্ষ্ম এবং সহজ।
আকোস্টাডিনভ

httpsপ্রশ্নে কোনও প্রয়োজন ছিল না: পি
ডোরি

@ ক্যাস্পারহার্মার মেনে নেওয়া উত্তর নিয়ে আপনার সমস্যা কী? আপনার যদি আরও প্রয়োজন হয়, টিসিপিডাম্প ডিল করে।
গেভুরে

এই ঘটেছে 3 বছর আগে। আমি মনে করতে পারছি না.
ক্যাস্পার হারমার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.