জেনেরিক এইচটিটিপি সার্ভার যা কেবলমাত্র পোস্টের অনুরোধগুলি ডাম্প করে?


24

আমি একটি কমান্ড লাইন সরঞ্জামের সন্ধান করছি যা প্রদত্ত অংশটি শুনবে, খুশিভাবে প্রতিটি HTTP পোষ্ট অনুরোধ ব্যতীত এড়িয়ে দেয়।

আমি এটি পরীক্ষার উদ্দেশ্যে, যেমন HTTP পোষ্ট অনুরোধগুলি ইস্যু করে এমন ক্লায়েন্টদের পরীক্ষার জন্য ব্যবহার করতে চাই।

তার মানে আমি প্রতিরূপ অনুসন্ধান করছি curl -F(যা আমি এইচটিটিপি সার্ভারে এইচটিটিপি পোষ্টগুলি পরীক্ষার জন্য পাঠাতে ব্যবহার করতে পারি)।

সম্ভবত এর মতো কিছু socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...- তবে সোট্যাট যথেষ্ট নয় কারণ এটি এইচটিটিপিতে কথা বলে না।


1
সম্ভবত আমি প্রশ্নটি সঠিকভাবে বুঝতে পারি না, তবে আপনার কেবলমাত্র পোষ্টের অনুরোধটি ডাম্প করার জন্য আপনি netcat( ncকিছু সিস্টেমের মধ্যে) -l(শ্রবণ) এবং -p(পোর্ট নম্বর) বিকল্পগুলি ব্যবহার করতে পারেন use
পিটার্ফ

1
@ পিটারফ, আপনি ncআংশিক পরীক্ষার জন্য ব্যবহার করতে পারেন - তবে আমি নিম্নলিখিত অসুবিধাগুলি দেখতে পাচ্ছি: 1) এটি HTTP স্থিতি কোড প্রেরণ করে না 2) সংযোগটি বন্ধ করার অনুরোধটি দেখার পরে আমাকে Ctrl + D আঘাত করতে হবে 3) এটি জানে না তারপরে কীভাবে প্রতিক্রিয়া জানানো হয় 'প্রত্যাশা: 100-চালিয়ে যাওয়া' শিরোনাম 4) এটি 'ট্রান্সফার-এনকোডিং: কাটানো' শিরোনাম কীভাবে পরিচালনা করতে জানে না - এটি সম্ভবত প্রথম (সম্ভবত) খালি
খণ্ডটি

উপর Stackoverflow একই প্রশ্ন: stackoverflow.com/questions/5725430/...
maxschlepzig

উত্তর:


16

সাধারণ কোর কমান্ড লাইন সরঞ্জামগুলির মতো nc, socatমনে হচ্ছে যে চলমান নির্দিষ্ট HTTP স্টাফগুলি পরিচালনা করতে সক্ষম হবে না (খণ্ডগুলি, স্থানান্তর এনকোডিংস ইত্যাদি)। ফলস্বরূপ এটি প্রকৃত ওয়েব সার্ভারের সাথে কথা বলার তুলনায় অপ্রত্যাশিত আচরণ তৈরি করতে পারে। সুতরাং, আমার প্রথম চিন্তাটি হল একটি ক্ষুদ্র ওয়েব সার্ভার সেট আপ করার এবং আমি যা চাই তা করতে এটির দ্রুততম উপায়টি ভাগ করে নেওয়া: সমস্ত আউটপুট ফেলে দিন।

পাইথন টর্নেডো ব্যবহারের সাথে আমি সবচেয়ে সংক্ষিপ্ততম :

#!/usr/bin/env python

import tornado.ioloop
import tornado.web
import pprint

class MyDumpHandler(tornado.web.RequestHandler):
    def post(self):
        pprint.pprint(self.request)
        pprint.pprint(self.request.body)

if __name__ == "__main__":
    tornado.web.Application([(r"/.*", MyDumpHandler),]).listen(8080)
    tornado.ioloop.IOLoop.instance().start()

pprintআপনার প্রয়োজনীয় নির্দিষ্ট ক্ষেত্রগুলিকে আউটপুট দেওয়ার জন্য লাইনটি প্রতিস্থাপন করুন , উদাহরণস্বরূপ self.request.bodyবা self.request.headers। উপরের উদাহরণে এটি 8080 পোর্টে সমস্ত ইন্টারফেসে শোনে।

এর বিকল্প প্রচুর। ওয়েব.পি , বোতল ইত্যাদি

(আমি বেশ পাইথনমুখী, দুঃখিত)


যদি আপনি এর আউটপুট করার পদ্ধতি পছন্দ না করেন তবে এটিকে যাইহোক চালান এবং এটির tcpdumpমতো চেষ্টা করুন :

tcpdump -i lo 'tcp[32:4] = 0x484f535420'

সমস্ত এইচটিটিপি-পোস্ট অনুরোধগুলির আসল কাঁচা ডাম্প দেখতে। বিকল্পভাবে, কেবল ওয়্যারশার্ক চালান।


1
অন্যদের জন্য যারা এই খুব সহায়ক স্নিপেট খুঁজে পান - এটি যা চাওয়া হয়েছিল তা করে - তবে আপনি যদি পোষ্টের বডিটি দেখতে চান তবে এটি pprint.pprint(self.request.body)self.request.bodyচেয়ে নোট self.body। একই জন্য self.request.headers। দেখুন tornado.readthedocs.org/en/latest/...
mozz100

40

আমি নিজেও এটি খুঁজছিলাম এবং নোড.জেএসএস-এইচপি-ইকো-সার্ভারে ছুটে এসেছি :

npm install http-echo-server -g
PORT=8081 http-echo-server

এটি সমস্ত অনুরোধ গ্রহণ করে এবং কমান্ড-লাইনের শিরোনাম সহ সম্পূর্ণ অনুরোধটি প্রতিধ্বনিত করে।

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