কমান্ড লাইন কার্ল দিয়ে কীভাবে অনুরোধ শিরোনাম প্রদর্শিত হবে


565

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


28
curl --head http://google.com-Iপতাকা হিসাবে একই কাজ করবে :)
আবেল তেরেফ

9
--head/ / ব্যবহার করার বিষয়ে নোট করুন -Iসমস্ত সার্ভার HEADঅনুরোধের কাছে ঠিক একই রকমের প্রতিক্রিয়া Content-Encodingদেখায় না (উদাহরণস্বরূপ, আপনি যদি শরীরটি জিপিপড হয়ে যাবেন কিনা তা যাচাই করার চেষ্টা করছেন তবে অনুপস্থিত হবে) এবং সমস্ত সার্ভার সমর্থন করে না HEAD-vসাধারণত নিরাপদ পছন্দ।
cfeduke

উত্তর:


749

কার্ল -vবা --verboseবিকল্পটি অন্যান্য বিষয়গুলির মধ্যেও HTTP অনুরোধ শিরোনাম দেখায় shows এখানে কিছু নমুনা আউটপুট:

$ curl -v http://google.com/
* About to connect() to google.com port 80 (#0)
*   Trying 66.102.7.104... connected
* Connected to google.com (66.102.7.104) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.16.4 (i386-apple-darwin9.0) libcurl/7.16.4 OpenSSL/0.9.7l zlib/1.2.3
> Host: google.com
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.com/
< Content-Type: text/html; charset=UTF-8
< Date: Thu, 15 Jul 2010 06:06:52 GMT
< Expires: Sat, 14 Aug 2010 06:06:52 GMT
< Cache-Control: public, max-age=2592000
< Server: gws
< Content-Length: 219
< X-XSS-Protection: 1; mode=block
< 
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact
* Closing connection #0

6
আমি যদি কেবল প্যাকেজটি তৈরি করতে চাই তবে তা পাঠাতে চাই না?
পুয়েরকপপ

@jacobsimeon আমি মনে করেন যে এর কারণ এটা না শুধুমাত্র দেখায় অনুরোধ হেডার কিন্তু রেসপন্স হেডার এবং রেসপন্স শরীর
পিএমপিআর

233

প্রতিক্রিয়া শিরোনাম প্রদর্শনের জন্য একটি জনপ্রিয় উত্তর , তবে ওপি অনুরোধ শিরোনাম সম্পর্কে জিজ্ঞাসা করেছিল ।

curl -s -D - -o /dev/null http://example.com
  • -s : অগ্রগতি বার প্রদর্শন করা এড়ানো
  • -D -: একটি ফাইলের শিরোলেখ ডাম্প, কিন্তু -stdout এ প্রেরণ
  • -o /dev/null : প্রতিক্রিয়া বডি উপেক্ষা

এটি অনুরোধ -Iনা প্রেরণের চেয়ে এটি আরও ভাল HEAD, যা বিভিন্ন ফলাফল আনতে পারে।

এটির চেয়ে ভাল -vকারণ আপনার এটিকে ভার্বোস বানানোর জন্য এত হ্যাকের দরকার নেই।


17
প্রশ্নটি পড়ুন - এটি প্রতিক্রিয়া শিরোনামগুলির জন্য শিরোনামগুলির অনুরোধ নয়
গ্রিম স্টুয়ার্ট

56
এই উত্তরটি আমার পক্ষে দরকারী কারণ আমিও প্রশ্নটি ভুল করে লিখেছি।
লিয়াম

2
উইন্ডোজের জন্য এই কমান্ডটি কিছুটা আলাদা: curl -sD - -o NULL http://example.com
সের্গেই ভ্লাসভ

2
@ সার্জেভ্লাসভ আসলে /dev/nullউইন্ডোজের সমতুল্য nul, না null
ফ্রান্সিসকো জারাবোজো

2
যদিও এই প্রশ্নটির জন্য অনুরোধ শিরোনামগুলির জন্য জিজ্ঞাসা করা হয়েছে, গুগল এখানে প্রত্যেককে নির্দেশ দিচ্ছে যারা প্রতিক্রিয়া শিরোনাম খুঁজছেন তাই আমরা সকলেই এই উত্তরটি এখানে পেয়ে খুশি। এবং এই উত্তরটি প্রতিক্রিয়া শিরোনাম পাওয়ার জন্য সেরা। ধন্যবাদ !!!
বায়োমাইকার

96

আমি বিশ্বাস করি যে আপনি যে কমান্ড লাইনের স্যুইচটি কার্ল এ যাওয়ার জন্য সন্ধান করছেন তা হল -I

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

$ curl -I http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287  
HTTP/1.1 301 Moved Permanently
Date: Sat, 29 Dec 2012 15:22:05 GMT
Server: Apache
Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/
Content-Type: text/html; charset=iso-8859-1

অতিরিক্তভাবে, যদি আপনি 301 এর প্রতিক্রিয়া HTTP স্থিতি কোডটির মুখোমুখি হন তবে আপনি URL টি পুনর্নির্দেশগুলি অনুসরণ -Lকরতে বলতে কোনও যুক্তি স্যুইচও করতে চান curlএবং এই ক্ষেত্রে, নীচের চিত্রিত সমস্ত পৃষ্ঠার শিরোনাম (ইউআরএল পুনঃনির্দেশগুলি সহ) মুদ্রণ করুন :

$ curl -I -L http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287
HTTP/1.1 301 Moved Permanently
Date: Sat, 29 Dec 2012 15:22:13 GMT
Server: Apache
Location: http://heatmiser.counterhack.com/zone-5-15614E3A-CEA7-4A28-A85A-D688CC418287/
Content-Type: text/html; charset=iso-8859-1

HTTP/1.1 302 Found
Date: Sat, 29 Dec 2012 15:22:13 GMT
Server: Apache
Set-Cookie: UID=b8c37e33defde51cf91e1e03e51657da
Location: noaccess.php
Content-Type: text/html

HTTP/1.1 200 OK
Date: Sat, 29 Dec 2012 15:22:13 GMT
Server: Apache
Content-Type: text/html

38
-Iবিকল্প দেখায় প্রতিক্রিয়া হেডার। প্রশ্নটি ছিল অনুরোধ শিরোনাম সম্পর্কে ।
আসফ

53
-Iঅপশন কারণ একটি করতে কার্ল HTTP HEAD, যা সার্ভারের প্রতিক্রিয়াতে পরিবর্তন হতে পারে। -vআমি বিশ্বাস করি সুইচ ব্যবহার করা ভাল Bet
এপ্রি 17'13

1
যদি আপনি এটি HEADঅনুরোধ (পছন্দ মতো -X POST) ব্যতীত অন্য কোনও কিছু দিয়ে চেষ্টা করে থাকেন এবং "আপনি কেবল একটি HTTP অনুরোধ নির্বাচন করতে পারেন!" স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 286982/… এর চেয়ে সম্ভবত আপনাকে সাহায্য করবে। জিনিস যে -Iএকটি করে HEADমত, অনুরোধ acwবিবৃত এবং যখন আপনার curlকল অন্য কল করতে সেট আপ আপনি দুটি HTTP অনুরোধ আছে curlকল ...
ফ্লু

7
এটি একটি খুব ভুল উত্তর। (আমি প্রতিশ্রুতি দিচ্ছি যে আমি এখানে সাধারণত খুব সদয় হয়)) 1. এটি ওপি যা বলবে তার বিপরীত কাজ করে। ২. এটি HEADপরিবর্তে GETবা এর অনুরোধের পদ্ধতি ব্যবহার করে POST। ৩. যদি আপনি এটির চেষ্টা না করে থাকেন যে আপনার সার্ভারটি কোনও এর HEADবিপরীতে যেমন ভিন্নভাবে প্রতিক্রিয়া দেখায় তবে এটি "কেবলমাত্র শিরোনামগুলি দেখতে" ব্যবহার করা উচিত নয় GET। এটি বেশিরভাগ সময় একই রকম হবে তবে সর্বদা নয়। শুধুমাত্র শিরোনাম ব্যবহার দেখতে curl -o /dev/null -D /dev/stdout। এটি প্রত্যাশিত ফলাফলগুলিকে 100% সময় দেবে।
ব্রুনো ব্রোনোস্কি

79

ভার্বোস বিকল্পটি সুবিধাজনক, তবে আপনি যদি কার্ল যা কিছু করে তা দেখতে চান (এইচটিটিপি বডি যা সংক্রমণ করে এবং কেবলমাত্র শিরোনামই নয়) তবে আমি নীচের বিকল্পগুলির মধ্যে একটি ব্যবহার করার পরামর্শ দিচ্ছি:

  • --trace-ascii - # স্টডআউট
  • --trace-ascii output_file.txt # ফাইল

আমি প্রতিক্রিয়া শিরোনাম এবং শরীরের খুব দেখায় তাই আমি মনে করি না!
পিএমপিআর

55

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

 curl -L -v -s -o /dev/null google.de
  • -L, --location পুনঃনির্দেশগুলি অনুসরণ করুন
  • -v, --verbose আরও আউটপুট, দিক নির্দেশ করে
  • -s, --silent একটি অগ্রগতি বার প্রদর্শন করবেন না
  • -o, --output /dev/null প্রাপ্ত শরীর দেখান না

বা সংক্ষিপ্ত সংস্করণ:

 curl -Lvso /dev/null google.de

ফলাফল স্বরূপ:

* Rebuilt URL to: google.de/
*   Trying 2a00:1450:4008:802::2003...
* Connected to google.de (2a00:1450:4008:802::2003) port 80 (#0)
> GET / HTTP/1.1
> Host: google.de
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.de/
< Content-Type: text/html; charset=UTF-8
< Date: Fri, 12 Aug 2016 15:45:36 GMT
< Expires: Sun, 11 Sep 2016 15:45:36 GMT
< Cache-Control: public, max-age=2592000
< Server: gws
< Content-Length: 218
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
<
* Ignoring the response-body
{ [218 bytes data]
* Connection #0 to host google.de left intact
* Issue another request to this URL: 'http://www.google.de/'
*   Trying 2a00:1450:4008:800::2003...
* Connected to www.google.de (2a00:1450:4008:800::2003) port 80 (#1)
> GET / HTTP/1.1
> Host: www.google.de
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Fri, 12 Aug 2016 15:45:36 GMT
< Expires: -1
< Cache-Control: private, max-age=0
< Content-Type: text/html; charset=ISO-8859-1
< P3P: CP="This is not a P3P policy! See https://www.google.com/support/accounts/answer/151657?hl=en for more info."
< Server: gws
< X-XSS-Protection: 1; mode=block
< X-Frame-Options: SAMEORIGIN
< Set-Cookie: NID=84=Z0WT_INFoDbf_0FIe_uHqzL9mf3DMSQs0mHyTEDAQOGY2sOrQaKVgN2domEw8frXvo4I3x3QVLqCH340HME3t1-6gNu8R-ArecuaneSURXNxSXYMhW2kBIE8Duty-_w7; expires=Sat, 11-Feb-2017 15:45:36 GMT; path=/; domain=.google.de; HttpOnly
< Accept-Ranges: none
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
<
{ [11080 bytes data]
* Connection #1 to host www.google.de left intact

যেমন আপনি curlবহির্গামী এবং আগত হেডার উভয়ই দেখতে পাচ্ছেন এবং শরীর কতটা বড় তা আপনাকে বলার বডিডাটা বাদ দেয়।

অতিরিক্তভাবে প্রতিটি লাইনের জন্য দিকটি নির্দেশিত হয় যাতে এটি পড়া সহজ হয়। পুনঃনির্দেশগুলির দীর্ঘ শৃঙ্খলাগুলি সনাক্ত করতে আমি এটি বিশেষ কার্যকর বলে মনে করেছি।


4
আমি -vবেশি ভোটের বিকল্পের চেয়ে এটি পছন্দ করি। এছাড়াও, শুধুমাত্র সংক্ষিপ্ততার জন্য এটি curl -Lvso /dev/null <target>যতক্ষণ oনা শেষে আসবে ততক্ষণ হতে পারে ।
shriek

12

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

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/< // - '<' উপসর্গ মুছে ফেলুন

7

ওয়েব অ্যাপ্লিকেশনগুলি ডিবাগ করার সময় আমাকে নিজেই এই সমস্যাটি কাটিয়ে উঠতে হয়েছিল। -vমহান, কিন্তু একটু খুব আমার কাণ্ডকীর্তি জন্য বাগাড়ম্বরপূর্ণ। এটিই (বাশ-কেবল) সমাধান আমি নিয়ে এসেছি:

curl -v http://example.com/ 2> >(sed '/^*/d')

এটি কাজ করে কারণ আউটপুটটি -vস্ট্ডার-এ পাঠানো হয়, স্টাডাউট নয়। এটি একটি সাব-শেলের কাছে পুনর্নির্দেশের মাধ্যমে আমরা sedএটি দিয়ে শুরু হওয়া লাইনগুলি সরাতে পারি *। যেহেতু আসল আউটপুট সাব-শেলের মধ্য দিয়ে যায় না, এটি প্রভাবিত হয় না। সাব-শেল ব্যবহার করা কিছুটা ভারী-হস্ত, তবে স্টাডারকে অন্য কমান্ডে পুনঃনির্দেশ করার এটি সহজতম উপায়। (যেমনটি আমি উল্লেখ করেছি, আমি এটি কেবল পরীক্ষার জন্য ব্যবহার করছি, সুতরাং এটি আমার পক্ষে ভাল কাজ করে))


4

কার্লের জন্য -v বিকল্পটি ত্রুটি আউটপুটে খুব ভার্জোজ যা নেতৃস্থানীয় *(স্থিতি রেখা) বা >(অনুরোধের প্রধান ক্ষেত্র) বা <(প্রতিক্রিয়া শিরোনাম ক্ষেত্র) ধারণ করে contains শুধুমাত্র অনুরোধ প্রধান ক্ষেত্র পেতে:

curl -v -sS www.stackoverflow.com 2>&1 >/dev/null | grep '>' | cut -c1-2 --complement

শুধুমাত্র অনুরোধ প্রধান ক্ষেত্র পেতে:

curl -v -sS www.stackoverflow.com 2>&1 >/dev/null | grep '<' | cut -c1-2 --complement

অথবা /tmp/test.txt-D বিকল্পের সাহায্যে এটি ফাইলের মধ্যে ফেলে দিন

curl -D /tmp/test.txt -sS www.stackoverflow.com > /dev/null

-vআউটপুট ফিল্টার করার জন্য , আপনার ত্রুটি আউটপুটটি টার্মিনালে এবং std আউটপুটটিকে / dev / null এ পরিচালনা করতে হবে, -s বিকল্পটি অগ্রগতি মিটারিং নিষিদ্ধ করা হবে


1

আপনি যদি আরও বিকল্প চান, আপনি একটি আধুনিক কমান্ড লাইন এইচটিটিপি ক্লায়েন্ট ইনস্টল করার চেষ্টা করতে পারেন যেমন httpie যা বেশিরভাগ অপারেটিং সিস্টেমের জন্য প্যাকেজ ম্যানেজার যেমন ব্রু, অ্যাপট-গেট , পিপ, ইয়াম ইত্যাদি সহ পাওয়া যায় installing

যেমন: - ওএসএক্সের জন্য

brew install httpie

তারপরে আপনি এটি বিভিন্ন বিকল্পের সাথে কমান্ড লাইনে ব্যবহার করতে পারেন

http GET https://www.google.com

এখানে চিত্র বর্ণনা লিখুন

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