curl দিয়ে HTTP প্রক্সি পরীক্ষা করুন
ডিভাইসের সামগ্রিক প্রক্সি সেটিং না বদলে সময়সীমাবদ্ধ curl পরীক্ষায় প্রক্সি সংযোগ, HTTPS টানেল, প্রতিক্রিয়ার স্ট্যাটাস ও বাইপাস নিয়ম দেখুন।
127.0.0.1:8080-এর বদলে আপনার পরিষেবা বা HTTP প্রক্সির তালিকা থেকে একটি এন্ডপয়েন্ট দিন এবং নিরীহ কোনো HTTPS গন্তব্যে এটি চালান:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --verbose https://example.com/লুপব্যাক ঠিকানা আপনার নিজের কম্পিউটারের লিসেনারকে বোঝায়। এই কমান্ড সেটিকে স্পষ্টভাবে বেছে নেয়, এই কলের জন্য curl-এর বাইপাস তালিকা খালি করে এবং সংযোগ তৈরির জন্য পাঁচ সেকেন্ড ও মোট পনেরো সেকেন্ড দেয়। ব্রাউজার ও সিস্টেমের প্রক্সি সেটিং বদলায় না।
শেল যদি curl-কে অন্য কোনো প্রোগ্রামের উপনাম করে রাখে, তাহলে প্রকৃত curl এক্সিকিউটেবল ব্যবহার করুন; curl --version বিল্ডটি শনাক্ত করে। লিসেনারের নিজের TLS প্রয়োজন হলে তার নথিতে দেওয়া প্রক্সি URL স্কিম ব্যবহার করুন।
একটি সফলতার সংকেত নয়, চারটি ফল পড়ুন
- নির্বাচিত প্রক্সিতে সংযোগ হয়েছে: ঠিকানা ও পোর্টে পৌঁছানো যাচ্ছে।
- CONNECT গৃহীত হয়েছে: প্রক্সি HTTPS গন্তব্যে টানেল খুলেছে।
- গন্তব্যের সার্টিফিকেট যাচাই হয়েছে: প্রত্যাশিত আস্থার যাচাইসহ TLS সম্পন্ন হয়েছে।
- গন্তব্যের প্রতিক্রিয়া এসেছে: অ্যাপ্লিকেশনের প্রয়োজনীয় ফল পেতে তার স্ট্যাটাস ও বিষয়বস্তু পরীক্ষা করুন।
টানেল কাজ করলেও গন্তব্য 403 বা 429 ফেরত দিতে পারে। HTTP ত্রুটির প্রতিক্রিয়া পাওয়ার পরেও curl সফলভাবে শেষ হতে পারে, তাই প্রতিক্রিয়ার স্ট্যাটাস ও curl-এর ত্রুটির ফল দুটিই রাখুন। শুধু TCP সংযোগ বা CONNECT সফল হওয়া যথেষ্ট নয়।
বারবার তুলনার জন্য সংক্ষিপ্ত ফল
Unix-ধরনের শেলে প্রতিক্রিয়ার বডি বাদ দিয়ে টানেলের স্ট্যাটাস, গন্তব্যের স্ট্যাটাস, সংযোগের অপর প্রান্ত ও অতিবাহিত সময় প্রিন্ট করুন:
curl --noproxy '' --proxy http://127.0.0.1:8080 --connect-timeout 5 --max-time 15 --silent --show-error --output /dev/null --write-out 'http=%{http_code} connect=%{http_connect} peer=%{remote_ip} total=%{time_total}\n' https://example.com/http_connect টানেলের প্রতিক্রিয়া বোঝায়; http_code শেষ HTTP প্রতিক্রিয়া বোঝায়। remote_ip curl সংযোগের অপর প্রান্ত, প্রক্সির প্রস্থান ঠিকানার স্বাধীন পরিমাপ নয়। অন্য সিস্টেমে /dev/null বদলান অথবা প্রতিক্রিয়ার বডি রাখুন।
পরীক্ষা ব্যর্থ হলে সংযোগ তৈরি বা ডেটা পাঠানোর কোন ধাপ ব্যর্থ হয়েছে খুঁজুন এবং সরাসরি পথ অনুমোদিত হলে একই গন্তব্যে সরাসরি সংযোগের সঙ্গে তুলনা করুন:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/--noproxy '*' প্রক্সি এড়িয়ে যায়। দুই পথেই সার্টিফিকেট যাচাই ব্যর্থ হলে তা সাধারণ কোনো আস্থার সমস্যার দিকে ইঙ্গিত করে; সরাসরি সংযোগ সফল অথচ CONNECT প্রত্যাখ্যাত হলে প্রক্সির প্রমাণীকরণ বা নীতির দিকে ইঙ্গিত করে। বিস্তারিত আউটপুট ভাগ করার আগে দেখে নিন, কারণ এতে পরিচয় শনাক্ত করার তথ্য থাকতে পারে।
ফলের সঙ্গে এন্ডপয়েন্ট, লক্ষ্য ও সময়চিহ্ন রাখুন। এতে ওই অনুরোধে কী কাজ করেছে জানা যায়; ভবিষ্যৎ প্রাপ্যতা, গোপনীয়তা ও চাপের মধ্যে কর্মক্ষমতার জন্য পৃথক প্রমাণ দরকার।