প্রতিক্রিয়া লাইনের মাধ্যমে Node HTTP কীভাবে প্রক্সি হয়ে যায়
সংযোগের প্রান্তবিন্দু, পরম লক্ষ্য ও Host শিরোনাম আলাদা করে Node-এর মূল ক্লায়েন্ট দিয়ে সাধারণ HTTP প্রক্সি অনুরোধ তৈরি করুন।
ফরওয়ার্ড প্রক্সির মাধ্যমে একটি সাধারণ HTTP অনুরোধে Node প্রক্সির সঙ্গে সংযোগ করে এবং অনুরোধ লাইনে গন্তব্য URL পাঠায়। তিনটি মান সেই একটি অনুরোধ বর্ণনা করে:
| মান | উদাহরণ |
|---|---|
| TCP সংযোগের প্রান্তবিন্দু | proxy.example:8080 |
| অনুরোধের লক্ষ্য | http://example.com/news?q=proxy |
| Host শিরোনাম | example.com |
Node 22-এর এই উদাহরণটি বিভাজনটি স্পষ্ট করে:
const http = require('node:http');
const destination = new URL('http://example.com/news?q=proxy');
const request = http.get({
hostname: 'proxy.example',
port: 8080,
path: destination.href,
headers: { Host: destination.host },
signal: AbortSignal.timeout(15000),
}, (response) => {
console.log(response.statusCode);
response.on('error', console.error);
response.resume();
});
request.on('error', console.error);
প্রান্তবিন্দুটি একটি স্থানধারক; একটি সর্বজনীন HTTP পরীক্ষার জন্য HTTP প্রক্সি তালিকা থেকে একটি প্রার্থী বেছে নিন এবং তার প্রতিক্রিয়া যাচাই করুন। উদাহরণটি স্ট্যাটাস মুদ্রণের পর প্রতিক্রিয়াটি নিঃশেষ করে; একটি অ্যাপ্লিকেশন এর বদলে বডিটি ব্যবহার করতে পারে। কুয়েরিটি অনুরোধের লক্ষ্যের অংশ হয়ে থাকে।
সম্পূর্ণ URL কেন সেখানে থাকে
একটি মূল সার্ভার সাধারণত /news?q=proxy-এর মতো লক্ষ্য পায়। ফরওয়ার্ড প্রক্সিরও গন্তব্য প্রয়োজন, তাই HTTP/1.1 পরম-রূপের লক্ষ্য নির্ধারণ করে:
GET http://example.com/news?q=proxy HTTP/1.1
Host: example.com
HTTP/1.1-এর নিয়ম অনুযায়ী, পরম-রূপ পেয়ে একটি প্রক্সি ফরওয়ার্ড করার সময় URI-এর কর্তৃত্ব ব্যবহার করে এবং অসঙ্গত প্রাপ্ত Host ক্ষেত্র প্রতিস্থাপন করে। সামঞ্জস্যপূর্ণ গন্তব্য Host শিরোনাম পাঠানো তবুও বহির্গামী অনুরোধটিকে দ্ব্যর্থহীন রাখে। Node-এর সংযোগ হোস্টনাম হল মধ্যস্থতাকারী, তাই ওই সংযোগ ঠিকানার উপর নির্ভর করার বদলে শিরোনামটি ইচ্ছাকৃতভাবে সেট করুন।
প্রমাণীকরণের প্রয়োজন হলে প্রক্সির শংসাপত্র তার নিজের হপের অন্তর্গত। Node-এর auth অনুরোধ বিকল্পটি সম্পদের জন্য একটি Authorization শিরোনাম তৈরি করে; এটি কোনও সাধারণ প্রক্সি-লগইন বিকল্প নয়। লেনদেন আরও জটিল হলে প্রক্সির প্রয়োজনীয় স্কিম এবং উপযুক্ত প্রক্সি ক্লায়েন্ট ব্যবহার করুন।
HTTPS একটি সুড়ঙ্গ যোগ করে
এই উদাহরণটি সাধারণ HTTP ফরওয়ার্ডিং কভার করে। সাধারণত HTTP প্রক্সির মাধ্যমে HTTPS সংযোগ প্রথমে CONNECT example.com:443 অনুরোধ করে, তারপর গৃহীত সুড়ঙ্গের ভিতরে গন্তব্যে TLS শুরু করে। উদাহরণের URL পরিবর্তন করে HTTPS করলে সেই ধাপগুলি যোগ হয় না।
HTTPS বা মিশ্র কাজের চাপের জন্য প্রয়োজনীয় সুড়ঙ্গ সমর্থনসহ রক্ষণাবেক্ষণকৃত প্রক্সি এজেন্ট বা ডিসপ্যাচার ব্যবহার করুন। সামঞ্জস্যপূর্ণ Node সংস্করণের জন্য একটি বিকল্প হল ProxyAgent সহ Undici-র fetch। সাধারণ HTTP লেনদেনটিই যখন আপনি নিয়ন্ত্রণ বা বুঝতে চান, তখন এই ছোট মূল-ক্লায়েন্ট উদাহরণটি রাখুন।