ম্যানুয়াল এইচটিটিপি (এস) অনুরোধ


10

আমি এমন একটি সরঞ্জাম (সম্ভবত লিনাক্সে) সন্ধান করছি যা আমাকে একটি ম্যানুয়াল এইচটিটিপি বা এইচটিটিপিএস অনুরোধ করার অনুমতি দেবে। ম্যানুয়াল দ্বারা, আমি সত্যিই এটি বোঝাতে চাই: আমার এটির মতো দেখতে একটি টেক্সট ফাইল খাওয়াতে সক্ষম হওয়া উচিত

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

এবং একটি গন্তব্য URL (www.example.com/foo), এবং অনুরোধটি URL- এ প্রেরণ করুন। সর্বাধিকপক্ষে, এটি দরকারী হবে যদি Content_Length শিরোনামটি স্বয়ংক্রিয়ভাবে গণনা করা হত।

আমি পাইথনে httplib এর মতো কিছু লাইব্রেরি ব্যবহার করে এ জাতীয় একটি সরঞ্জাম লিখতে সক্ষম হব, তবে যখন এ জাতীয় লাইব্রেরিতে কোনও সমস্যা হয় তখন ম্যানুয়াল তদন্ত করা আমার খুব প্রয়োজন।


উত্তর:


10

wget হয় একটি --post ফাইল বিকল্প, যা তোমাদের জন্য কাজ করা উচিত হয়েছে।

সম্পাদনা: এছাড়াও, এনকাট রয়েছে , যা আপনি র্যান্ডল্ফ রিচার্ডসনের টেলনেট পরামর্শের অনুরূপ ফ্যাশনে ব্যবহার করবেন এটি ব্যতীত এটি এসএসএল / এইচটিটিপিএস সমর্থন করে:

ncat -C --ssl www.example.com 443 < input.txt > output.txt

6
আপনার যদি এইচটিটিপিএস প্রয়োজন হয় তবে নেটকাটের পরিবর্তে ওপেনসেল ব্যবহার করুন: ওপেনসেল এস_ক্লিয়েন্ট-সংযুক্ত <অ্যাড্রেস>: 443
আম্বরোজ বিজ্জাক

1
উইজেট - পোস্ট-ফাইলটি শিরোনাম যুক্ত করবে এবং নির্দিষ্ট ফাইলটি কেবলমাত্র অনুরোধের মূল অংশের জন্য ব্যবহার করবে।
ডেভিড বালাইচ

6

এইচটিটিপি (এইচটিটিপিএস নয়) এর জন্য, "উইজেট" কমান্ডের একটি বিকল্প মনে আসে যা হ'ল নীচে টেলনেট ব্যবহার করা:

  • টেলনেট হোস্টনাম 80 <ইনপুট.টিএসটিটি> আউটপুট.টেক্সট

"ইনপুট.টিএসটিএক্স" ফাইলটি আপনার পূর্বনির্ধারিত কমান্ডগুলির তালিকা যা আপনি হোস্টকে হোস্টনেমকে খাওয়াতে চান এবং "আউটপুট.টেক্সট" ফাইলটি প্রতিক্রিয়া সংরক্ষণ করবে।


1
এটি আমাকে বিস্মিত করেছিল যে নেটকাট এসএসএল সমর্থন করে, এবং লো-এন্ড-হ্যালো, এনসিএটি আছে, একটি এসএসএল-সক্ষম নেটকাট ক্লোন।
ক্রিস অ্যাকসন

@ ক্রিস অ্যাকসন (+1): এটি দুর্দান্ত! আমি যা লিখেছি তা একটি পৃথক উত্তরে অনুলিপি বোধ করুন এবং নেটটিক্সকে ব্যবহার করে এমন একটি সমাধানে রূপান্তর করুন (যদি আপনি এটি করেন তবে আমি আপনার উত্তরের পক্ষে ভোট দেব)।
র্যান্ডল্ফ রিচার্ডসন

1

আপনি ওপেনএসএসএল দিয়ে একটি জিইটি অনুরোধ জারি করতে পারেন:

openssl s_client -quiet -connect cdn.sstatic.net:443 <<eof
GET /stackexchange/js/universal-login.js HTTP/1.1
Connection: close
Host: cdn.sstatic.net

eof

মনে রাখবেন যে আপনি "HTTP / 2" ব্যবহার করতে পারেন তবে সাবধান হন কারণ কিছু সার্ভার (যেমন: github.com) এটি সমর্থন করে না।


0

আমার জন্য, এটি একটি অনুরোধ ফাইল তৈরিতে কাজ করেছে (উদাহরণ request.txt:)

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; charset=utf-8
Content-Length: 11
Connection: close

Hello world

এবং তারপরে openssl s_clientকমান্ডটি কল করুন :

cat request.txt | openssl s_client -quiet -connect www.example.com:443

তবে কিছু বিষয় সম্পর্কে সতর্ক থাকুন:

  • ফাইলটি অবশ্যই সঠিকভাবে এনকোড করা উচিত , বিশেষত সামগ্রী সামগ্রী content যদি Content-type: text/plain; charset=utf-8ফাইলটি utf-8 এনকোড থাকে তবে আপনি একটি শিরোনাম অন্তর্ভুক্ত করলে আরও ভাল ।
  • লাইন শেষা w শ হেডার জন্য হতে হবে CR / LF এর । কেবলমাত্র এলএফ দিয়ে ওয়েব সার্ভারটি ফিরে আসতে পারে HTTP/1.1 505 HTTP Version Not Supportedকারণ স্ট্যান্ডার্ড এইচটিটিপি প্রোটোকল লাইন শেষের জন্য সিআর / এলএফ ব্যবহার করে ( https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html )। আপনি unix2dosএই রূপান্তরটি করতে কমান্ডটি ব্যবহার করতে পারেন ।
  • Connection: closeঅনুরোধটি শেষ করতে এবং কলটি থেকে ফিরে আসতে একটি শিরোনাম যুক্ত করুন । অন্যথায়, সার্ভারটি সাধারণত একটি Connection: keep-aliveশিরোনাম দিয়ে প্রতিক্রিয়া জানালে কমান্ডটি ব্যবহারকারীর ইন্টারঅ্যাকশনটির অপেক্ষায় থাকবে ।

-1

আমি অবাক হয়েছি কারও সিআরএল-এর উল্লেখ নেই । এটি আপনি যা করতে চান ঠিক তা তৈরি করা হয়েছে। এবং এটি ব্যবহারিকভাবে কোনও প্ল্যাটফর্মে (উইন্ডোজ সহ) উপলভ্য।

সুতরাং আপনার উদাহরণের জন্য আপনি যা করবেন তা হ'ল:

curl -H 'Content-Type: text/plain' -d 'Hello World' www.example.com

যেটি ওয়্যারশার্ক থেকে ধরা হয়েছে তা আপনাকে জাল করে তুলবে:

POST / HTTP/1.1
User-Agent: curl/7.19.7 (x86_64-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15
Host: www.example.com
Accept: */*
Content-Type: text/plain
Content-Length: 11

Hello world

আপনি যদি সব ধরণের স্টাফ করতে চান (তবে ব্যবহারকারী-এজেন্ট পরিবর্তন করুন ইত্যাদি) আপনি সহজেই শিরোনামগুলি আরও সংশোধন করতে পারেন।

সম্পাদনা: "একটি ফাইল থেকে" প্রয়োজনীয়তাটি লক্ষ্য করেনি। আপনি এটিও করতে পারেন, হয় সরল আসকি বা বাইনারি ফাইল। আপনি কেবল একটি @ চিহ্ন সহ ফাইলের নামটি নির্দিষ্ট করেছেন

-d @/tmp/HelloWorldFile

কার্লটি প্রায় আমি যা চাই তা চাই, তবে কমান্ড লাইনে শিরোনামগুলি নির্দিষ্ট করা দরকার যা খুব অবৈধ। আমার এমন কিছু দরকার যা আমাকে একটি ফাইল থেকে পদ্ধতি এবং শিরোনাম সহ অনুরোধের সম্পূর্ণ পাঠ্য নির্দিষ্ট করার অনুমতি দেয় এবং এনসিএটি ঠিক কীভাবে চাই তা করতে পারে। যাইহোক আপনাকে ধন্যবাদ :-)
Andrea
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.