প্রক্সি রোটেশন আর একটি VPN আলাদা স্তরে আপনার পাবলিক ঠিকানা বদলায়, আর সেই পার্থক্যই ঠিক করে কী ফাঁস হবে। একটি VPN প্রতিটি প্যাকেট সুড়ঙ্গে নেয়, তাই লক্ষ্য যে সোর্স ঠিকানা দেখে সেটি সুড়ঙ্গের শেষ বিন্দু। প্রক্সি নেটওয়ার্ক স্তরের উপরে বসে: শুধু আপনি এর মধ্য দিয়ে পাঠানো অনুরোধগুলোই এক্সিট থেকে দেখা যায়, আর মেশিনের বাকি সবকিছু আসল ঠিকানা রাখে। এই বিভাজন ঠিকভাবে করলে রোটেশন একটি টিকচিহ্ন থেকে নকশার সিদ্ধান্তে পরিণত হয়।

পাবলিক ঠিকানাটি আসলে কোথা থেকে আসে

লক্ষ্য যে ঠিকানাটি দেখে সেটি সেই ঠিকানা যেখান থেকে আপনার ট্রাফিক শেষবার বেরিয়েছে, আর হোম সংযোগে সেটি আপনার রাউটারে প্রদানকারীর ঠিকানা, মেশিনের নিজের কিছু নয়। রাউটার পুনরায় চালু করলে একই লিজ ফিরে আসতে পারে, আর এর MAC ঠিকানা বদলালে মাঝে মাঝে নতুন একটি তৈরি হয়, কিন্তু কোনোটিই আপনাকে দেশ বাছাইয়ের সুযোগ দেয় না। একটি VPN IP স্তরে সোর্স ঠিকানা বদলে দেয়, তাই মেশিন থেকে আসা প্রতিটি প্যাকেট, DNS ও ব্যাকগ্রাউন্ড আপডেটসহ, সুড়ঙ্গের শেষ বিন্দু থেকে বেরোয়। প্রক্সি এক স্তর উপরে কাজ করে: এটি একটি অনুরোধ গ্রহণ করে, লক্ষ্যের সঙ্গে নিজের সংযোগ খোলে, আর শুধু সেই অনুরোধই এক্সিট থেকে দেখা যায়। মেশিনের বাকি সবকিছু এখনও আসল ঠিকানা ব্যবহার করে।

এই বিভাজনই বেশিরভাগ বিস্ময়ের ব্যাখ্যা দেয়। প্রক্সির দিকে নির্দেশ করা ব্রাউজার এক্সটেনশন শুধু ব্রাউজার যা পাঠায় তা বদলায়, তাই একই হোস্টে থাকা দ্বিতীয় অ্যাপ্লিকেশন এখনও আসল ঠিকানা ফাঁস করে। সিস্টেম-ব্যাপী VPN-এর বিপরীত ব্যর্থতার ধরন আছে: এটি সেই ট্রাফিক ঢেকে দেয় যা আপনি স্থানীয় রাখতে চেয়েছিলেন, আর ক্লায়েন্ট তা করার জন্য কনফিগার করা থাকলেই কেবল বন্ধ হয়ে যায়। দুটির মধ্যে বাছাই আসলে বাছাই করা কোন ট্রাফিককে চলতে হবে।

তারপর রোটেশন প্রযোজ্য হয় আপনি যে স্তর বেছেছেন সেখানে। প্রক্সির ক্ষেত্রে রোটেশন মানে পরের অনুরোধটি ভিন্ন এক্সিট ব্যবহার করবে। VPN-এর ক্ষেত্রে এর মানে সুড়ঙ্গ ভেঙে আবার গড়া, যা ধীর এবং দৃশ্যমান পুনঃসংযোগ হিসেবে দেখা যায়।

একটি HTTP প্রক্সি কী পড়তে পারে, আর কী পারে না

সাধারণ HTTP-তে প্রক্সি অনুরোধের লাইনে একটি পরম URI, প্রতিটি হেডার ও বডি দেখে। এটি সবকিছু লগ করতে পারে এবং যেকোনো অংশ পুনরায় লিখতে পারে, তাই যে বিনামূল্যের প্রক্সি প্রতিক্রিয়ায় স্ক্রিপ্ট ঢোকায় সে ঠিকই করে যা প্রোটোকল অনুমোদন করে। প্রমাণীকরণ ব্যবহার করে Proxy-Authorization, আর অনুপস্থিত বা ভুল ক্রেডেনশিয়াল দেয় 407 Proxy Authentication Required একটি সংযোগ ত্রুটির বদলে।

HTTPS-এ ক্লায়েন্ট পাঠায় CONNECT host:port আর প্রক্সি একটি কাঁচা সুড়ঙ্গ খোলে, এরপর এটি এনক্রিপ্ট করা বাইট দেখে। এটি এখনও CONNECT লাইন থেকে এবং সাধারণত TLS হ্যান্ডশেকের SNI ক্ষেত্র থেকে হোস্টনাম জানতে পারে, তাই হোস্টনাম-স্তরের লগিং টিকে থাকে যদিও পেলোড টেকে না। পেলোড পড়তে ক্লায়েন্ট যে সার্টিফিকেটে আস্থা রাখে তা দিয়ে TLS শেষ করতে হয়, যা ভিন্ন ঝুঁকিসম্পন্ন ভিন্ন একটি পণ্য। আর HTTP সেম্যান্টিক্স স্পেসিফিকেশন CONNECT-কে একটি সুড়ঙ্গ অনুরোধ হিসেবে সংজ্ঞায়িত করে, যা একটি এক্সিট কী দেখতে পারে আর কী পারে না তার জন্য সঠিক মানসিক মডেল।

curl -v -x http://proxy.example.net:8080 https://example.com 2>&1 | grep -E 'CONNECT|Proxy-'

বিস্তারিত আউটপুট যেকোনো TLS ট্রাফিকের আগে CONNECT লাইনটি দেখায়, আর ঠিক সেই মুহূর্তেই প্রক্সি আপনার গন্তব্য জানে। যে প্রক্সি 407 দিয়ে উত্তর দেয় সে কখনও সুড়ঙ্গ খোলেনি, তাই ভিন্ন TLS সেটিংসে আবার চেষ্টা করলে কাজ হবে না।

রোটেশনের দানাদারত্ব ঠিক করে কী ভাঙবে

প্রতিটি অনুরোধে রোটেশন হলো সেই সেটিং যা সবচেয়ে নিরাপদ দেখায় আর সবচেয়ে বেশি ভাঙে। কুকি, CSRF টোকেন ও সার্ভার-সাইড সেশন একটি পরিচয়ের সঙ্গে বাঁধা, আর যে পরিচয় লগইন আর পরের কলের মধ্যে বদলে যায় সেটি লক্ষ্যের কাছে সেশন হাইজ্যাকিংয়ের মতো দেখায়। অনেক প্রদানকারী প্রক্সি ব্যবহারকারীনামে এনকোড করে স্টিকি সেশন দেয়, তাই নির্বাচিত একটি জানালার জন্য এক্সিট স্থির থাকে।

দানাদারত্ব কাজ থেকে বাছুন, প্রদানকারীর ডিফল্ট থেকে নয়। স্বতন্ত্র পৃষ্ঠা আনে এমন ক্রলার প্রতি অনুরোধে ঘোরাতে পারে, কিন্তু চেকআউট প্রবাহ বা প্রমাণীকৃত API-কে পুরো প্রবাহের জন্য একটি এক্সিট ধরে রাখতে হয়। নিচের দুটি কল একটি স্টিকি ব্যবহারকারীনাম ও একটি সাধারণ ঘুরন্ত এন্ডপয়েন্ট দেখায়, আর socks5h স্কিমটি নামগুলো স্থানীয়ভাবে নয়, প্রক্সিতে সমাধান করে।

curl -sS -x http://user-session-a1b2:[email protected]:8080 https://ifconfig.me
curl -sS -x socks5h://127.0.0.1:1080 https://ifconfig.me

স্থানীয় DNS একটি নীরব ফাঁস। ক্লায়েন্ট যদি সংযোগের আগে নাম সমাধান করে, তবে রিজলভার এখনও আপনার দেখা প্রতিটি হোস্ট জানে, যদিও HTTP অনুরোধ অন্য জায়গা থেকে বেরোয়। আর socks5h ফর্ম ও প্রক্সি-সাইড সমাধান তা এড়ায়, আর সেগুলো ব্যবহার করতে কিছুই খরচ হয় না।

লক্ষ্য ঠিকানা ছাড়া আর কী শ্রেণিবদ্ধ করে

ঠিকানার সুনাম কয়েকটি ইনপুটের মধ্যে একটি। লক্ষ্যগুলো ASN ও তার ডেটাসেন্টার-বা-আবাসিক লেবেল, ক্লায়েন্টের TLS ফিঙ্গারপ্রিন্ট, HTTP/2 সেটিংস, হেডারের ক্রম, অনুরোধের হার ও নেভিগেশনের আকৃতি একত্র করে। হেডলেস ব্রাউজার চালিত একটি আবাসিক এক্সিট ব্যর্থ হতে পারে যেখানে আসল সেশন চালিত একটি ডেটাসেন্টার এক্সিট পাস করে।

এক্সিটের ধরন ঠিক করে ট্রাফিক সম্পর্কে আপনি সৎভাবে কী দাবি করতে পারেন, আর প্রত্যেকটির আলাদা খরচ আছে।

Exit typeWhat the target seesMain cost
Datacenter proxyHosting ASN, cheap, often pre-blockedLow reputation, easy to detect
Residential networkA consumer ISP address belonging to someone elseConsent and terms-of-service exposure
Mobile carrierA carrier NAT address shared by many subscribersPrice, plus shared blame for abuse
Your own cloud egressAn address you are accountable forRecognisable, but defensible

একটি ভাগ করা এক্সিট নিরপেক্ষ নয়। সেই ঠিকানা থেকে যা কিছু চলে তা একই সুনামের ঝুড়িতে পড়ে, আর অন্য ভাড়াটেদের দ্বারা আগেই পুড়ে যাওয়া ঠিকানা আপনার প্রথম অনুরোধ পড়ার আগেই ব্যর্থ হয়।

এমন এক্সিট বাছুন যা আপনি নীতিতে বর্ণনা করতে পারেন

উপকারী প্রশ্ন হলো ঠিকানা লুকাবেন কীভাবে নয়, বরং এটি থেকে বেরোনো ট্রাফিকের দায় কার। প্রতি কাজে আপনার নিজের ক্লাউড এক্সিট, ডেটা-প্রসেসিং চুক্তি ও প্রকাশিত সংরক্ষণকালসহ চুক্তিবদ্ধ প্রদানকারী, এবং প্রতি কাজে একটি পরিচয়সহ স্ব-হোস্ট করা VPN — সবই এক বাক্যে বর্ণনা করা যায়। বিনামূল্যের তালিকা নয়, কারণ তার পরিচালকের আপনার প্রতি কোনো বাধ্যবাধকতা নেই আর লগ রাখার সব প্রণোদনা আছে।

আপনার নিজের হার-সীমা লক্ষ্য যতটা সহ্য করে তার নিচে রাখুন, আর কাজের যেসব ক্ষেত্র দরকার কেবল সেগুলোই সংগ্রহ করুন, যাতে ভুল ছোট থাকে। ব্লক এড়াতে দ্রুত ঘোরানো সাধারণত যে অনুরোধ-হার এর কারণ ছিল তা-ই বাড়ায়।

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

সম্পর্কিত নিবন্ধ