কীভাবে নেটকাট তৈরি করতে একটি বিদ্যমান এইচটিটিপি প্রক্সি ব্যবহার করবেন


11

নিম্নলিখিত হিসাবে সরাসরি আমার ওয়েব সার্ভারে আঘাত করে আমি ঠিক ঠিক একটি ওয়েব পৃষ্ঠা অ্যাক্সেস করতে পারি:

$ echo "GET /sample" | nc web-server 80
This is contents of /sample...
$

এখন, আমি নেটকাটটি একটি স্কুইড এইচটিটিপি প্রক্সি (পোর্ট 3131 শুনছি) দিয়ে যেতে চাই, যেমন আমি আমার ফায়ারফক্স ব্রাউজারটিকে তার প্রক্সি পছন্দগুলি দিয়ে কনফিগার করতে পারি এবং এটি কোনও এইচটিটিপি প্রক্সি দিয়ে যেতে পারি।

আমি নিম্নলিখিত চেষ্টা করেছিলাম, কিন্তু এটি কার্যকর হয়নি:

$ echo "GET /sample" | nc -x squid-proxy:3128 web-server 80
    <Seemed to be blocked FOREVER on input, so I killed it.>
<Ctrl-C>
$

দ্রষ্টব্য: আমি নেটচ্যাট এর RHEL 5.3 সংস্করণ ব্যবহার করছি যা নিম্নলিখিত বিকল্পগুলি রয়েছে:

$ nc --help
nc: invalid option -- -
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
  [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
  [-x proxy_address[:port]] [hostname] [port[s]]

ম্যান পৃষ্ঠা থেকে উদ্ধৃত nc:

 EXAMPLES
    <snip>
 Connect to port 42 of host.example.com via an HTTP proxy at 10.2.3.4, port 8080. 
 This example could also be used by ssh(1); see the ProxyCommand directive in
 ssh_config(5) for more information.
       $ nc -x10.2.3.4:8080 -Xconnect host.example.com 42

এখন, যেহেতু আমার কোনও এসএসএল / এসএসএল ইউজকেস নয়, আমি কীভাবে -x/ -Xবিকল্পগুলি ব্যবহার করব তা নিশ্চিত নই , এমনকি আমার এগুলি ব্যবহার করা উচিত কিনা তাও নিশ্চিত নই!

যদি উপরের লক্ষ্যটি অর্জনের একাধিক উপায় না থাকে (যেমন, এইচটিটিপি প্রক্সির মাধ্যমে নেটক্যাট ট্র্যাফিকের রাউটিং), তবে আপনি যদি সেগুলি ভাগ করে নিতে পারেন তবে আমি প্রশংসা করব।

অগ্রিম ধন্যবাদ.

উত্তর:


14

নেটক্যাট কোনও বিশেষায়িত এইচটিটিপি ক্লায়েন্ট নয়। নেটকটের জন্য প্রক্সি সার্ভারের সাথে সংযুক্ত হওয়ার অর্থ সার্ভারের মাধ্যমে একটি টিসিপি সংযোগ তৈরি করা , যার কারণে এটি -xদ্বারা নির্ধারিত যুক্তির সাথে একটি এসওকেএসএস বা এইচটিটিপিএস প্রক্সি আশা করে -X:

 -X proxy_protocol
         Requests that nc should use the specified protocol when talking
         to the proxy server.  Supported protocols are “4” (SOCKS v.4),
         “5” (SOCKS v.5) and “connect” (HTTPS proxy).  If the protocol is
         not specified, SOCKS version 5 is used.

connectপ্রক্সি সার্ভারের মাধ্যমে এসএসএল (এইচটিটিপিএস) সংযোগ তৈরি করার জন্য একটি পদ্ধতি নির্দিষ্ট করে। যেহেতু প্রক্সিটি অন্য শেষ পয়েন্ট নয় এবং সংযোগটি সমাপ্তি-ভিত্তিক এনক্রিপ্টযুক্ত, একটি CONNECTঅনুরোধ আপনাকে একটি এইচটিটিপি প্রক্সি (যদি অনুমতি দেওয়া হয়) এর মাধ্যমে পয়েন্ট-টু-পয়েন্ট সংযোগটি সুড়ঙ্গ করতে দেয়। (আমি এখানে বিশদগুলি নিয়ে চকচকে করছি, তবে এটি যেভাবে গুরুত্বপূর্ণ পয়েন্ট নয়; এখানে " HTTP CONNECTটানেলিং" সম্পর্কিত বিশদ )

সুতরাং , একটি প্রক্সি ব্যবহার করে আপনার ওয়েবসারভারের সাথে সংযোগ স্থাপন করতে আপনাকে ওয়েব ব্রাউজারটি যা করতে হবে তা করতে হবে - প্রক্সিটির সাথে কথা বলুন :

$ nc squid-proxy 3128
GET http://webserver/sample HTTP/1.0

( এই প্রশ্নের সাথে এর মিল রয়েছে; আমি জানি না যে proxychainএখানে ব্যবহার হয় কিনা । )

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

$ nc -l 8080
GET http://google.com/ HTTP/1.1
Host: google.com
User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
DNT: 1
Proxy-Connection: keep-alive

আচরণ দ্বারা এই পথ , খুব, আপনি Netcat HTTP প্রক্সির মাধ্যমে একটি HTTP সার্ভার অ্যাক্সেস করতে ব্যবহার করতে পারেন। এখন, আপনি যদি এইচটিটিপিএস ওয়েব সার্ভারটি অ্যাক্সেস করার চেষ্টা করেন তবে কী হবে? ব্রাউজারটি অবশ্যই মাঝের কাউকে ট্র্যাফিকটি প্রকাশ করা উচিত নয় , সুতরাং সরাসরি সংযোগ প্রয়োজন; এবং এখানেই CONNECTখেলতে আসে। আমি যখন আবার শুরু nc -l 8080এবং অ্যাক্সেস করার চেষ্টা করি তখন বলি যে, https://google.comপ্রক্সি সেট করা আছে 127.0.0.1:80, এটি হ'ল:

CONNECT google.com:443 HTTP/1.1
User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:6.0.2) Gecko/20100101 Firefox/6.0.2
Proxy-Connection: keep-alive
Host: google.com

আপনি দেখুন, CONNECTঅনুরোধগুলি সার্ভারকে google.com, পোর্ট 443(https) এর সাথে সরাসরি সংযোগের জন্য জিজ্ঞাসা করে । এখন , এই অনুরোধটি কী করে?

$ nc -X connect -x 127.0.0.1:8080 google.com 443

nc -l 8080উদাহরণ থেকে আউটপুট :

CONNECT google.com:443 HTTP/1.0

সুতরাং এটি সরাসরি সংযোগ তৈরি করতে একইভাবে ব্যবহার করে। যাইহোক, এটি অবশ্যই প্রায় কোনও কিছুর জন্য ব্যবহার করা যেতে পারে (উদাহরণস্বরূপ ব্যবহার করে corkscrew), CONNECTঅনুরোধগুলি কেবলমাত্র সুস্পষ্ট বন্দরগুলিতে সীমাবদ্ধ থাকে।


@ এসআর_ আপনি কীভাবে ব্রাউজারটি সার্ভার অংশের মাধ্যমে ... টিসিপি সংযোগ অর্জন করতে পারে তার আরও খানিকটা বিস্তারিত ব্যাখ্যা করতে পারেন ? মোজা 4, মোজা 5 এবং সংযোগের মতো, মনে হয় প্লেন এইচটিটিপি প্রক্সিংয়ের জন্যও একটি প্রোটোকল রয়েছে। আপনি কি এটি নিশ্চিত করবেন? অনেক ধন্যবাদ.
হ্যারি

1
@ ব্রুসইডিগার, হ্যাঁ, সত্যিই। আমি 0.1আমার অজ্ঞতার মুখোশ বজায় রেখেছি। :)
sr_

1
@ হ্যারি আমার সাথে খেলা ncএবং ফায়ারফক্স কি বিষয়গুলিকে একটু স্পষ্ট করে?
sr_

@ এসআর_ আমি nc squid-proxy 3128অনুসরণ করার চেষ্টা করেছি GET http://webserver/sample HTTP/1.0, তবে একটি HTTP / 1.0 403 নিষিদ্ধ (অ্যাক্সেস অস্বীকার ত্রুটি) পেয়েছে।
হ্যারি

1
উফ, দুঃখিত, কোনও ধারণা নেই। এখানে বিশেষজ্ঞ নয়, আপনি দেখতে পাচ্ছেন :)আপনি সম্ভবত নিজের সংযোগটি ব্যবহার করতে tcpdumpবা wiresharkট্যাপ করতে CONNECTএবং অন্তর্দৃষ্টি অর্জন করতে পারেন ...
sr_

3

সকেটটি দেখুন: http://www.dest-unreach.org/socat/doc/README


ধন্যবাদ, +1 দেখতে অনেকটা অত্যাধুনিক ও জটিল সরঞ্জামের মতো। চেষ্টা করা হয়েছে echo "GET /sample HTTP/1.0" | socat PROXY:squid-proxy:web-server:80,proxyport=3128 STDIN, কিন্তু এই ত্রুটিটি পেয়েছিলেন: 2012/05/17 06:56:23 socat[3135] E CONNECT web-server:80: Forbidden। এখন, এই সরঞ্জামটি সঠিকভাবে বুঝতে পেরেছি কিনা তা দেখার জন্য, আমি পরবর্তীটি বেসিক, নন-প্রক্সি ব্যবহারের চেষ্টা করেছি: echo "GET /sample HTTP/1.0" | socat TCP4:web-server:80 STDINতবে কোনও প্রতিক্রিয়া পাইনি! সুতরাং, স্পষ্টতই, আমি এখানে স্যাট ব্যবহারের কিছু মিস করছি। আপনি যদি আমার ভুলটি চিহ্নিত করতে পারেন তবে প্রশংসা করবেন।
হ্যারি

ঠিক আছে, আমি এর পরিবর্তে STDIO(বা, -) ব্যবহার করে নন-প্রক্সি সংস্করণ অনুরোধটি পেতে পারি STDIN। তবে প্রক্সি সংস্করণটি এখনও আমাকে একই ত্রুটি দিচ্ছে।
হ্যারি

1
আরেকটি আপডেট: আমি চেষ্টা করেছি echo "GET http://web-server/sample" | socat - TCP:squid-proxy:3128এবং এটি কাজ করেছে। আপনি যদি নিশ্চিত হন যে এইভাবেই আমার কীভাবে ব্যবহার করার কথা socat( PROXY:...ঠিকানার পরিবর্তনের পরিবর্তে )?
হ্যারি

1
হাই, আমি এটি এতটা নিজে ব্যবহার করি নি, তবে আমি মনে করি এটি সঠিক। সোকেট http-প্রক্সিটিতে একটি সরল টিসিপি-সংযোগ খোলে এবং স্কুইড http-GET কে পার্স করে এবং বাকীটি করে। এটি কি https বিটিডব্লিউর জন্য কাজ করে? এবং শেষ অবধি অন্য লিঙ্ক: টেকনোস্টফ.ব্লগস্পট.com
ফ্যাবিয়ান জেইনডল

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