সার্ভারে একটি অনুরোধ প্রেরণের সময় আমি কার্ল দ্বারা তৈরি অনুরোধ শিরোনামগুলি কীভাবে দেখতে পারি?


485

আমি curlযখন সার্ভারে একটি অনুরোধ প্রেরণ করছি তখন তৈরি করা অনুরোধ শিরোনামগুলি দেখতে চাই । আমি কীভাবে এটি পরীক্ষা করতে পারি?


এই url সহায়ক হতে পারে। helloacm.com/curl

উত্তর:


501

আমি মনে করি curl -vসবচেয়ে সহজ। এটি অনুরোধ শিরোনামগুলি ('>' এর সাথে পূর্বনির্ধারিত লাইনগুলি) কোনও ফাইলকে না লিখেই ছাড়িয়ে দেবে:

$ curl -v -I -H "Testing: Test header so you see this works" http://stackoverflow.com/
* About to connect() to stackoverflow.com port 80 (#0)
*   Trying 69.59.196.211... connected
* Connected to stackoverflow.com (69.59.196.211) port 80 (#0)
> HEAD / HTTP/1.1
> User-Agent: curl/7.16.3 (i686-pc-cygwin) libcurl/7.16.3 OpenSSL/0.9.8h zlib/1.2.3 libssh2/0.15-CVS
> Host: stackoverflow.com
> Accept: */*
> Testing: Test header so you see this works
>
< HTTP/1.0 200 OK
...

58
curl -v -D - stackoverflow.com -o / dev / null (পুরো সাইটের সামগ্রী কেবলমাত্র শিরোনাম প্রদর্শন না করার জন্য)
সর্বনাম

20
curl -Ivs http://example.com > /dev/null: -Iএকটি জন্য HEADঅনুরোধ, -vপাঠানো হেডার দেখানোর জন্য, -s, লুকান উন্নতি বারে > /dev/nullশুধুমাত্র -v আউটপুট দেখানোর জন্য, অনুলিপি এড়ানো।
এখানে

@ পাইওট্রিকড -D -পরিষ্কার ছিল, তবে এটি আমার পক্ষে কার্যকর ছিল না কারণ এটি -vইতিমধ্যে প্রদর্শিত শিরোনামগুলির অনুলিপি করে । আপনি যদি অটোমেটেড মেশিন ব্যবহারের জন্য এগুলিকে পূর্বনির্ধারিত করতে চান, তবে সম্ভবত সে ক্ষেত্রে এটি আরও ভাল হবে তবে আমি কী সমস্যাটি আরও বিশদে বিশদ ছিল তা কেবলই তা দেখতে চেয়েছিলাম।
পিসিস করুন

1
"ভার্বোজ" পতাকাটির দুটি খুব সহায়ক বৈশিষ্ট্য রয়েছে: প্রথমত, এটি এইচটিটিপিএসের মাধ্যমে ওয়েবসাইট অ্যাক্সেস করার সময় টিএলএস হ্যান্ডশেক প্রক্রিয়াটিও মুদ্রণ করে curl -v https://www.example.com; দ্বিতীয়, এটি ছাপে CONNECTঅনুরোধ আপনি মাধ্যমে সাইটটির পরিদর্শন করা হয়, তাহলে HTTP প্রক্সি যেমন curl --proxy my-proxy:8080 http://www.example.com। আমি বিশ্বাস করি যে এই দুটি বৈশিষ্ট্যের কয়েকটি উদাহরণ এই উত্তরে উল্লেখ করা থাকলে এটি আরও ব্যবহারকারীদের সহায়তা করবে।
ফ্র্যাঙ্কলিন ইউ

1
টিএল; ডিআর:-I আধুনিক বিশ্বে ব্যবহার করবেন না , লোকেরা যখন শিরোনাম দেখার বিষয়ে জিজ্ঞাসা করে, তারা সম্ভবত এপিআই সম্পর্কে কথা বলছে। এবং যদি আপনি সেই "আমি -Iআমার অ্যাপাচি ওয়েবসারভার সহ শিরোনামগুলি দেখতে ব্যবহার করি" মানসিকতা HEADব্যবহার করেন তবে আপনি সম্ভবত যখন ব্যবহার করতে চান তখন কোনও পদ্ধতির বিরুদ্ধে বিকাশ করতে আপনি প্রচুর সময় নষ্ট করতে যাচ্ছেন GET। লোকদের ব্যবহার করতে বলা বন্ধ করুন -I। যদি তারা চান তবে (টিডব্লিউএসএস)HEAD-X HEAD
ব্রুনো ব্রোনোস্কি

141

কমান্ড লাইন কমান্ডটির নাম curlবোঝানো হয়েছে বা পুরো সিআরএল লাইব্রেরি কিনা তা প্রশ্নটি নির্দিষ্ট করে নি ।

সিআরএল লাইব্রেরি ব্যবহার করে নিম্নলিখিত পিএইচপি কোডটি HTTP পদ্ধতি হিসাবে প্রথম প্যারামিটার ব্যবহার করে (যেমন "GET", "পোস্ট", "বিকল্প") এবং URL হিসাবে দ্বিতীয় প্যারামিটার।

<?php
$ch = curl_init();
$f = tmpfile(); # will be automatically removed after fclose()
curl_setopt_array($ch, array(
    CURLOPT_CUSTOMREQUEST  => $argv[1],
    CURLOPT_URL            => $argv[2], 
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_FOLLOWLOCATION => 0,
    CURLOPT_VERBOSE        => 1,
    CURLOPT_HEADER         => 0,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT        => 30,
    CURLOPT_STDERR         => $f,
));
$response = curl_exec($ch);
fseek($f, 0);
echo fread($f, 32*1024); # output up to 32 KB cURL verbose log
fclose($f);
curl_close($ch);
echo $response;

ব্যবহারের উদাহরণ:

php curl-test.php OPTIONS https://google.com

নোট করুন যে ফলাফলগুলি নিম্নলিখিত কমান্ড লাইনের সাথে প্রায় একই রকম

curl -v -s -o - -X OPTIONS https://google.com

এটি সেরা উত্তর, কারণ এই পদ্ধতিতে ব্যবহৃত ফাইলটিতে অনুরোধ এবং প্রতিক্রিয়া উভয় সম্পর্কে আরও বিশদ সহ নীচে বর্ণিত curl_getinfo () এর সমস্ত কিছু রয়েছে।
মাইক_কে

3
আপনি শিরোনাম সম্পর্কিত তথ্যের জন্য CURLOPT_WRITEHEADER এবং পুরো স্থানান্তরটির জন্য CURLOPT_FILE ব্যবহার করতে পারেন
স্ট্ররোকড

1
মনে রাখবেন যে সংযোগটি যদি সেই ফাইলগুলির সাথে অস্বীকৃত হয় যা নির্দিষ্ট করে CURLOPT_WRITEHEADER এবং CURLOPT_FILEখালি থাকে।

34
কে ব্যবহার সম্পর্কে কিছু বলেছিলphp?
এডি বি

1
আমি আপনার উত্তরটিকে উঁচু করে তুলেছি কারণ যখন প্রশ্নটি পিএইচপি সম্পর্কিত ছিল না, আপনার পিএইচপি ভিত্তিক উত্তরটি আমাকে বহনকারী টোকেন প্রেরণে আমার নিজের সমস্যা সমাধানের জন্য সঠিক দিকের দিকে নির্দেশ করেছিল। ধন্যবাদ. আমি এই কারণটি এখানে কেবল একই প্রশ্নে পিএইচপি ডেভেলসের জন্য গুগল অনুসন্ধানগুলিতে এই প্রশ্নটি দেখানোর ব্যর্থ চেষ্টাতে এখানে আমার কারণটি বর্ণনা করেছি।
ক্রিস

49

আমি আমার বহির্গামী হেডারগুলি দেখতে কেবলমাত্র পরিচালনা করতে পেরেছি (পিএইচপি সহ কার্ল) নিম্নলিখিত বিকল্পগুলি ব্যবহার করছিল:

curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);

আপনার ডিবাগ তথ্য প্রাপ্ত:

$data = curl_exec($ch);
var_dump($data);
var_dump(curl_getinfo($ch));

1
আমার কাছে যা প্রতিক্রিয়ার শিরোনাম হিসাবে উপস্থিত হয়েছিল তা বহির্গামী শিরোনাম নয়।
টবি

3
var_dump $dataপ্রতিক্রিয়া শিরোনাম পাশাপাশি প্রতিক্রিয়া বডি প্রদান করবে। Var_dump curl_getinfo($ch)আপনাকে অনুরোধ শিরোনাম দেবে।
Jrgns

2
CURLOPT_HEADERপ্রতিক্রিয়া শিরোনাম - CURLINFO_HEADER_OUTঅনুরোধ শিরোনাম হয়। ওপি এটিই জিজ্ঞাসা করছে :)
রিচার্ড পার্নবী-কিং

44

--trace-asciiবিকল্প কার্ল অনুরোধ হেডার, সেইসাথে প্রতিক্রিয়া হেডার এবং প্রতিক্রিয়া শরীর প্রদর্শন করবে।

উদাহরণস্বরূপ, কমান্ড

curl --trace-ascii curl.trace http://www.google.com/ 

curl.traceনিম্নলিখিত হিসাবে শুরু একটি ফাইল উত্পাদন করে:

== Info: About to connect() to www.google.com port 80 (#0)
== Info:   Trying 209.85.229.104... == Info: connected
== Info: Connected to www.google.com (209.85.229.104) port 80 (#0)
=> Send header, 145 bytes (0x91)
0000: GET / HTTP/1.1
0010: User-Agent: curl/7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3
0050:  OpenSSL/0.9.7l zlib/1.2.3
006c: Host: www.google.com
0082: Accept: */*
008f: 

এটি একটি প্রতিক্রিয়াও পেয়েছে (একটি 302 প্রতিক্রিয়া, সুনির্দিষ্ট তবে অপ্রাসঙ্গিক হতে) যা লগড।


আপনি যদি কেবল প্রতিক্রিয়া শিরোনামগুলি সংরক্ষণ করতে চান তবে --dump-headerবিকল্পটি ব্যবহার করুন :

curl -D file url
curl --dump-header file url

আপনার যদি উপলভ্য বিকল্পগুলি সম্পর্কে আরও তথ্যের প্রয়োজন হয় তবে ব্যবহার করুন curl --help | less(এটি কয়েকশ লাইনের আউটপুট উত্পাদন করে তবে প্রচুর বিকল্পের উল্লেখ করে)। অথবা ম্যানুয়াল পৃষ্ঠাটি সন্ধান করুন যেখানে বিকল্পগুলির অর্থ কী তার আরও ব্যাখ্যা রয়েছে।


10
-ডি আপনাকে প্রতিক্রিয়া শিরোনাম দেয় (যেমন আমি-যেমন, তবে এসটিডিএনকেও)। অনুরোধ শিরোনাম জন্য প্রশ্ন জিজ্ঞাসা ।
pr1001

34

curl --trace-ascii {filename} বা স্ট্যান্ডআউটে প্রেরণের জন্য ফাইলের নামের পরিবর্তে একটি একক ড্যাশ ব্যবহার করুন:

curl --trace-ascii - {URL}

আপনি যদি libcurl ব্যবহার করেন তবে CURLOPT_DEBUGFUNCTION

এটি আপনাকে কিছু অতিরিক্ত তথ্য withোকানো সহ কার্ল প্রেরণ এবং গ্রহণ করে এমন সব কিছুই দেখায় ।


1
এটি খুব ভার্বোজ, তবে অবশ্যই আপনাকে যা জানা উচিত তা অবশ্যই আপনাকে দেখায়।
ট্রিপলি

26

আমি এখানে উত্তরগুলি চেষ্টা করে দেখেছি যে সর্বাধিক দরকারী এবং সহজতমটি উত্তর হিসাবে এখনও তালিকাভুক্ত নয়, তবে এটি হল:

curl -v https://example.com/path

এটি REQUEST শিরোনামের পাশাপাশি RESPONSE শিরোনামের পাশাপাশি অন্যান্য দরকারী যেমন এসএসএল শংসাপত্র এবং বিদ্যমান টিসিপি সংযোগটি পুনরায় ব্যবহার করা হয়েছে কিনা তা প্রিন্ট করে । -vপতাকা যেমন পুনঃনির্দেশ এবং অনুসরণ করতে HTTP প্রমাণীকরণের জন্য প্রম্পট হিসাবে অবশ্যই অন্যান্য পতাকার, সঙ্গে মিলিত করা যেতে পারে:

curl -vL --user my_username https://example.com/path

আশাকরি এটা সাহায্য করবে.


2
এটি শীর্ষস্থানীয় স্থানে তালিকাভুক্ত রয়েছে
পিএমপিআর

19

নীচের মত একটি কমান্ড তিনটি বিভাগ প্রদর্শন করবে: অনুরোধ শিরোনাম, প্রতিক্রিয়া শিরোনাম এবং ডেটা (সিআরএলএফ দ্বারা পৃথক)। এটি কারিগরী দ্বারা যুক্ত প্রযুক্তিগত তথ্য এবং সিনট্যাক্টিক্যাল শব্দকে এড়িয়ে চলে।

curl -vs www.stackoverflow.com 2>&1 | sed '/^* /d; /bytes data]$/d; s/> //; s/< //'

কমান্ডটি নিম্নলিখিত আউটপুট উত্পাদন করবে:

GET / HTTP/1.1
Host: www.stackoverflow.com
User-Agent: curl/7.54.0
Accept: */*

HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: https://stackoverflow.com/
Content-Length: 149
Accept-Ranges: bytes
Date: Wed, 16 Jan 2019 20:28:56 GMT
Via: 1.1 varnish
Connection: keep-alive
X-Served-By: cache-bma1622-BMA
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1547670537.588756,VS0,VE105
Vary: Fastly-SSL
X-DNS-Prefetch-Control: off
Set-Cookie: prov=e4b211f7-ae13-dad3-9720-167742a5dff8; domain=.stackoverflow.com; expires=Fri, 01-Jan-2055 00:00:00 GMT; path=/; HttpOnly

<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="https://stackoverflow.com/">here</a></body>

বর্ণনা:

  • -vs - শিরোনাম যুক্ত করুন (-v) তবে অগ্রগতি বার (-এস) সরান
  • 2>&1 - স্ট্যান্ডআউট এবং স্টডারকে একক স্টডআউটে একত্রিত করুন
  • sed - নীচের কমান্ডগুলি ব্যবহার করে কার্ল দ্বারা উত্পাদিত প্রতিক্রিয়া সম্পাদনা করুন
  • /^* /d - '*' (প্রযুক্তিগত তথ্য) দিয়ে শুরু হওয়া লাইনগুলি সরান
  • /bytes data]$/d - 'বাইটস ডেটা]' দিয়ে শেষ হওয়া লাইনগুলি সরান (প্রযুক্তিগত তথ্য)
  • s/> // - '>' উপসর্গ মুছে ফেলুন
  • s/< // - '<' উপসর্গ মুছে ফেলুন

11

আমি জানি এটি একটু দেরি হয়েছে, তবে এটি করার জন্য আমার অনুকূল পদ্ধতিটি হ'ল netcatআপনি যা curlপাঠিয়েছেন ঠিক তেমনই; এটি --traceবা --trace-asciiবিকল্পগুলির থেকে পৃথক হতে পারে যা অ-এএসসিআইআই অক্ষরগুলি সঠিকভাবে প্রদর্শন করবে না (তারা কেবল বিন্দু হিসাবে দেখায় বা ডিকোডিং করা দরকার)।

প্রথম প্রকারে দুটি টার্মিনাল উইন্ডো খোলার মাধ্যমে আপনি এটি খুব সহজেই করতে পারেন:

nc -l localhost 12345

এটি আপনার স্থানীয় মেশিনের 12345 পোর্টে শ্রবণ প্রক্রিয়াটি খুলবে।

দ্বিতীয় টার্মিনাল উইন্ডোতে আপনার কার্ল কমান্ড লিখুন, উদাহরণস্বরূপ:

curl --form 'foo=bar' localhost:12345

প্রথম টার্মিনাল উইন্ডোতে আপনি অনুরোধে ঠিক কী কার্ল প্রেরণ করেছেন তা দেখতে পাবেন ।

এখন অবশ্যই ncপ্রতিক্রিয়াতে কিছু প্রেরণ করবে না (যদি আপনি এটি নিজের মধ্যে টাইপ না করেন), তাই আপনাকে কার্ল কমান্ড (কন্ট্রোল-সি) বাধা দিতে হবে এবং প্রতিটি পরীক্ষার জন্য প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে।

তবে, আপনার অনুরোধটি কেবল ডিবাগ করার জন্য এটি একটি দরকারী বিকল্প, কারণ আপনি কোথাও কোনও রাউন্ড ট্রিপ জড়িত করছেন না বা বোগাস উত্পাদন করছেন না, যতক্ষণ না আপনি এটি সঠিক না হওয়া পর্যন্ত কোথাও পুনরাবৃত্তি অনুরোধগুলি; আপনি যখন আদেশটি দ্বারা খুশি হন, কেবলমাত্র এটি কোনও বৈধ URL এ পুনঃনির্দেশ করুন এবং আপনি যেতে ভাল।

আপনি যে কোনও সিআরএল লাইব্রেরির জন্যও একই কাজ করতে পারেন, ncআপনি যতক্ষণ না খুশি হন ততক্ষণ স্থানীয় শ্রোতার প্রতি নির্দেশ করার জন্য আপনার অনুরোধটি সম্পাদনা করুন ।


6

এক ফাইলে শিরোনাম এবং প্রতিক্রিয়াটির পেডলোডকে একটি আলাদা ফাইলে ডাম্প করুন

curl -k -v -u user:pass  "url" --trace-ascii headers.txt >> response.txt

5
curl -s -v -o / dev / null -H "টেস্টহেডার: পরীক্ষা" http://www.example.com

আপনি -Iযদি একটি প্রধান অনুরোধ প্রেরণ করতে চান এবং জিইটি অনুরোধটি না চান তবে আপনি বিকল্পটিও ব্যবহার করতে পারেন।


3

কুকিজ অন্তর্ভুক্ত পোস্ট কোয়েরি করতে এখানে php এ আমার HTTP ক্লায়েন্টটি রয়েছে:

function http_login_client($url, $params = "", $cookies_send = "" ){

    // Vars
    $cookies = array();
    $headers = getallheaders();

    // Perform a http post request to $ur1 using $params
    $ch = curl_init($url);
    $options = array(   CURLOPT_POST => 1,
                        CURLINFO_HEADER_OUT => true,
                        CURLOPT_POSTFIELDS => $params,
                        CURLOPT_RETURNTRANSFER => 1,
                        CURLOPT_HEADER => 1,
                        CURLOPT_COOKIE => $cookies_send,
                        CURLOPT_USERAGENT => $headers['User-Agent']
                    );

    curl_setopt_array($ch, $options);

    $response = curl_exec($ch);

/// DEBUG তথ্য প্রতিধ্বনি $ প্রতিক্রিয়া; var_dump (curl_getinfo ($ ch)); ///

    // Parse response and read cookies
    preg_match_all('/^Set-Cookie: (.*?)=(.*?);/m', $response, $matches);

    // Build an array with cookies
    foreach( $matches[1] as $index => $cookie )
        $cookies[$cookie] = $matches[2][$index];

    return $cookies;
} // end http_login_client

3

আপনি এটি ব্যবহার করে দেখতে পারেন -iv

$> curl  -ivH "apikey:ad9ff3d36888957" --form  "file=@/home/mar/workspace/images/8.jpg" --form "language=eng" --form "isOverlayRequired=true" https://api.ocr.space/Parse/Image

1

যে কোনও নেটওয়ার্ক ট্র্যাফিক (HTTP- র) দেখার জন্য আপনি ওয়্যারশার্ক বা tcpdump ব্যবহার করতে পারেন ।


11
যদি পে-লোড এইচটিটিপিএসের ওপরে থাকে তবে সেগুলি প্রক্সি বা অ্যাপ্লিকেশন স্তর মনিটর ছাড়াই অকেজো।
p00ya

1

Https://http-tools.appspot.com/reflect-http-request/some-unique-id এ একটি নমুনা অনুরোধ করুন এবং তার অনুরোধকারী অনুসন্ধানী url https দ্বারা এই অনুরোধটিতে (অনুরোধ শিরোনাম, অনুরোধের শরীর, অনুরোধের পরামিতি) কী রয়েছে তা যাচাই করুন : //http-tools.appspot.com/reflect-http-request-finder/some-unique-id । এর পরিবর্তে আপনি যে কোনও স্ট্রিং ব্যবহার করতে পারেন some-unique-id, আরও তথ্যের জন্য https://http-tools.appspot.com দেখুন।


1
ধন্যবাদ, প্রশ্নের সঠিক উত্তর না দেওয়ার সময়, আমার ঠিক এটির প্রয়োজন ছিল। ডিভাইস এ একটি অনুরোধ করে, ডিভাইস বি একটি অনুরোধ করা হয়েছে তা পরীক্ষা করে।
পোষ্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.