सवाल आप कर्ल के साथ पोस्ट डेटा कैसे प्रदर्शित करते हैं?


उदाहरण के तौर पर, -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)

मैंने जो डेटा पोस्ट किया है उसका कोई उल्लेख नहीं है।

आउटपुट में "firstname = john और lastname = doe" स्ट्रिंग को प्रदर्शित करने के लिए curl में कोई विकल्प है?

नोट: जाहिर है कि जिस स्ट्रिंग को मैं चाहता हूं वह उस आदेश में है जिसे मैंने निष्पादित किया था, लेकिन कई अन्य पोस्ट विकल्प जैसे कि --form और --data-ascii आदि हैं। मैं सर्वर पर कच्चे डेटा को भेजना चाहता हूं।


115
2018-06-01 09:10


मूल


आप सर्वर पर भेजे जा रहे वास्तविक डेटा को कैप्चर करने के लिए tcpdump भी चला सकते हैं। या वायरसहार्क (बेहतर) यदि आपके पास है। - Keith
मुझे यकीन नहीं है कि आप कर सकते हैं। क्या यह अस्पष्टता से सुरक्षा का एक उदाहरण है? - stackoverflow.com/questions/198462/... - slotishtype


जवाब:


उपयोग किए बिना मुझे सबसे नज़दीक मिला 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

146
2018-06-01 10:50



मुझे पता है कि यह आपका स्वयं का जवाब है, लेकिन मुझे लगता है कि आप इसे सही उत्तर के रूप में स्वीकार कर सकते हैं। यह वैसे भी मेरे लिए हल किया, धन्यवाद :-) - Darren Cook
किसी को हटा दें -v या --verbose क्योंकि वे ट्रेस निर्देश को ओवरराइड करते हैं। - AlikElzin-kilaka
@AugustinRiedinger यह https के साथ ठीक काम करता है। मैंने अभी कोशिश की और पेलोड देखा। डेटा एन्क्रिप्ट किया गया है लेकिन चूंकि आप कनेक्शन का अंत बिंदु हैं, इसलिए आपके पास सभी डेटा उपलब्ध हैं, और इसलिए कर्ल इसे देख सकता है। - Gerald Kaszuba
का उपयोग करते हुए --trace-ascii ओएस एक्स 10.8.5 माउंटेन शेर पर मेरे लिए काम किया। मैंने दो छवियों और एक जेसन बॉडी के साथ एक मल्टीपार्ट फॉर्म इकाई अपलोड की है और सबकुछ अपेक्षित के रूप में काम करता है - Heath Borders
के बजाय --trace-ascii /dev/stdout आप ऐसा कर सकते हैं --trace-ascii - (डैश) - Adam Michalik


या आप के साथ परीक्षण कर सकते हैं 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"
}

19
2017-09-30 09:21





आप उपयोग कर सकते हैं चार्ल्स तथा curl --proxy localhost:8888। साधारण!


7
2017-08-28 13:51



नहीं, यह https के साथ काम नहीं करता है। स्वीकृत उत्तर ठीक और आसान है। - akostadinov
https प्रश्न में एक आवश्यकता नहीं थी: पी - Dori
@CasparHarmer स्वीकृत उत्तर के साथ आपकी क्या संभावना है? यदि आपको और अधिक चाहिए, तो टीसीपीडम्प सौदा करता है। - Gewure
यह 3 साल पहले हुआ था। मुझे याद नहीं। - Caspar Harmer


नेटकैट विकल्प जोड़ना चाहते हैं

#!/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
)

7
2018-05-21 13:04