Charles Proxy একটি ক্রস-প্ল্যাটফর্ম প্রক্সি সার্ভার যা HTTP/HTTPS ট্র্যাফিক ডিবাগ করার জন্য ব্যবহৃত হয়, ডেভেলপাররা নেটওয়ার্ক অনুরোধ ইন্টারসেপ্ট, দেখতে এবং পরিবর্তন করতে ব্যবহার করেন। Karl von Randow, টুলের নির্মাতা (2025)-এর মতে, Charles 2004 সাল থেকে বিশ্বব্যাপী 50,000-এর বেশি কোম্পানিতে ব্যবহৃত হচ্ছে। প্রক্সি WiFi-এর মাধ্যমে মোবাইল ডিভাইস থেকে ট্র্যাফিক ইন্টারসেপ্ট করা, রুট সার্টিফিকেট ইনস্টলেশনের সাথে HTTPS প্রক্সি করা এবং API বিশ্লেষণের জন্য বিস্তৃত টুল সমর্থন করে।
মূল বিষয়
Charles Proxy একটি HTTP প্রক্সি এবং HTTP মনিটর যা ক্লায়েন্ট এবং সার্ভারের মধ্যে মধ্যস্থতাকারী হিসাবে কাজ করে। সমস্ত অনুরোধ এবং প্রতিক্রিয়া Charles-এর মাধ্যমে যায়, যা আপনাকে তাদের বিষয়বস্তু দেখতে, কাঠামো বিশ্লেষণ করতে, রিয়েল টাইমে ডেটা পরিবর্তন করতে এবং বিভিন্ন নেটওয়ার্ক অবস্থা অনুকরণ করতে দেয়। এটি Windows, macOS এবং Linux-এর জন্য উপলব্ধ।
Charles Proxy 2004 সালে Karl von Randow দ্বারা তৈরি করা হয়েছিল এবং নেটওয়ার্ক ট্র্যাফিক ডিবাগ করার জন্য সবচেয়ে জনপ্রিয় টুলগুলির মধ্যে একটি রয়ে গেছে। বিনামূল্যের বিকল্পগুলির বিপরীতে, Charles 30-দিনের ট্রায়াল সময়ের সাথে একটি পেইড লাইসেন্স অফার করে। টুলটি মোবাইল অ্যাপ ডেভেলপার, ওয়েব ডেভেলপার এবং QA ইঞ্জিনিয়ারদের জন্য একটি পেশাদার সমাধান হিসাবে অবস্থান করছে যাদের HTTP যোগাযোগের উপর সম্পূর্ণ নিয়ন্ত্রণ প্রয়োজন।
Charles কম্পিউটারে একটি সিস্টেম প্রক্সি হিসাবে কাজ করে এবং একই নেটওয়ার্কের যেকোনো ডিভাইস থেকে ট্র্যাফিক ইন্টারসেপ্ট করতে পারে: Android, iOS, সিমুলেটর, এমুলেটর, ওয়েব ব্রাউজার এবং IoT ডিভাইস। HTTPS ইন্টারসেপ্ট করতে, আপনাকে প্রতিটি ডিভাইসে Charles রুট সার্টিফিকেট ইনস্টল করতে হবে। ট্র্যাফিক HTTP/1.1 এবং HTTP/2 (আংশিক) এ সমর্থিত। HTTP/3 (QUIC) ইন্টারসেপশন স্তরে সমর্থিত নয়।
Charles MITM (Man-in-the-Middle) প্রক্সির নীতিতে কাজ করে: যখন কোনো ক্লায়েন্ট Charles-এর মাধ্যমে অনুরোধ পাঠায়, টুলটি অনুরোধটি ইন্টারসেপ্ট করে, এটি টার্গেট সার্ভারে ফরোয়ার্ড করে, প্রতিক্রিয়া গ্রহণ করে এবং এটি ক্লায়েন্টের কাছে ফেরত পাঠায়। সমস্ত ট্র্যাফিক Charles-এর মাধ্যমে যায়, যা এটিকে বিশ্লেষণ এবং পরিবর্তন করার অনুমতি দেয়।
চালু হলে, Charles পোর্ট 8888 (ডিফল্ট) এ একটি লোকাল HTTP প্রক্সি তৈরি করে। অপারেটিং সিস্টেম বা অ্যাপ্লিকেশন এই প্রক্সি ব্যবহার করার জন্য কনফিগার করা হয়। সমস্ত HTTP অনুরোধ প্রথমে Charles-এ পাঠানো হয়, যা তারপর টার্গেট সার্ভারের জন্য একটি পূর্ণ ক্লায়েন্ট হিসাবে কাজ করে। HTTPS-এর জন্য, Charles তার নিজস্ব SSL প্রক্সি কৌশল ব্যবহার করে: এটি প্রতিটি ডোমেনের জন্য তৎক্ষণাৎ একটি সার্টিফিকেট জেনারেট করে, যা Charles রুট সার্টিফিকেট দ্বারা স্বাক্ষরিত। যদি রুট সার্টিফিকেট ডিভাইসে বিশ্বস্ত হিসাবে ইনস্টল করা থাকে, তাহলে Charles HTTPS ট্র্যাফিক ডিক্রিপ্ট এবং দেখতে পারে।
Charles দুটি মোড সমর্থন করে: Proxy(ক্লাসিক প্রক্সি সার্ভার) এবং SOCKS Proxy(UDP এবং TCP ট্র্যাফিকের জন্য)। ওয়েব ডেভেলপমেন্টের জন্য স্ট্যান্ডার্ড HTTP-প্রক্সি ব্যবহার করা হয়। মোবাইল ডিভাইসের জন্য — Charles চালানো কম্পিউটারের IP ঠিকানা সহ ডিভাইসে WiFi Proxy কনফিগার করুন। macOS iOS সিমুলেটরের জন্য স্বয়ংক্রিয় প্রক্সি কনফিগারেশন সমর্থন করে।
<!-- Charles সমর্থন সহ Android-এর জন্য network_security_config.xml কনফিগার করা -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Debug বিল্ডে Charles সার্টিফিকেট বিশ্বাস করুন -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Charles Proxy পেশাদার টুলের একটি সেট প্রদান করে যা সাধারণ অনুরোধ ইন্টারসেপশনের বাইরে যায়।
Rewrite টুল আপনাকে অনুরোধ বা প্রতিক্রিয়ার নির্দিষ্ট অংশ স্বয়ংক্রিয়ভাবে পরিবর্তন করতে দেয়: হেডার, URL প্যারামিটার, প্রতিক্রিয়া বডি। উদাহরণস্বরূপ, আপনি User-Agent হেডার অন্য ডিভাইসের মান দিয়ে প্রতিস্থাপন করতে পারেন বা নির্দিষ্ট কুকি মুছে ফেলতে পারেন। Breakpoints ডিবাগারের মতো কাজ করে: অনুরোধ নির্বাচিত পর্যায়ে থামে (পাঠানোর আগে বা গ্রহণের আগে), এবং ডেভেলপার এটি এগিয়ে যাওয়ার আগে ম্যানুয়ালি এর বিষয়বস্তু পরিবর্তন করতে পারে। এটি ত্রুটি প্রতিক্রিয়া বা অ-মানক অবস্থার প্রক্রিয়াকরণ পরীক্ষার জন্য দরকারী।
Map Local আপনাকে নেটওয়ার্ক রিসোর্স (CSS, JS, JSON) ডিস্কের একটি লোকাল ফাইল দিয়ে প্রতিস্থাপন করতে দেয়। ফ্রন্টএন্ড ডেভেলপমেন্টে এটি অপরিহার্য: আপনি CSS/JS পরিবর্তন করতে পারেন এবং সার্ভারে ডিপ্লয় না করেই তৎক্ষণাৎ ফলাফল দেখতে পারেন। Map Remote অনুরোধ একটি URL থেকে অন্যটিতে পুনঃনির্দেশ করে — উদাহরণস্বরূপ, প্রোডাকশন সার্ভার থেকে পরীক্ষার জন্য স্টেজিং-এ। উভয় টুল ওয়াইল্ডকার্ড সমর্থন সহ URL প্যাটার্নের সাথে কাজ করে।
Throttle টুল পূর্বনির্ধারিত প্রোফাইল ব্যবহার করে বিভিন্ন ধরনের নেটওয়ার্ক সংযোগ অনুকরণ করতে দেয়: 3G, EDGE, GPRS, DSL, WiFi। আপনি গতির সীমা (ডাউনলোড/আপলোড), লেটেন্সি, প্যাকেট লস এবং স্থিতিশীলতা কনফিগার করতে পারেন। ধীর বা অস্থির সংযোগে অ্যাপের আচরণ পরীক্ষা করার জন্য এটি গুরুত্বপূর্ণ — সঠিক টাইমআউট হ্যান্ডলিং, পুনরায় চেষ্টা লজিক, অফলাইন মোড।
| প্রোফাইল | ডাউনলোড | আপলোড | লেটেন্সি | সাধারণ পরিস্থিতি |
|---|---|---|---|---|
| 3G | 780 kbps | 330 kbps | 200 ms | দুর্বল মোবাইল সিগন্যাল নিয়ে পরীক্ষা |
| EDGE | 130 kbps | 50 kbps | 400 ms | অত্যন্ত ধীর সংযোগ |
| GPRS | 50 kbps | 20 kbps | 500 ms | সর্বনিম্ন সম্ভাব্য সংযোগ |
| DSL | 2 Mbps | 256 kbps | 50 ms | হোম ওয়্যার্ড সংযোগ |
| WiFi | 10 Mbps | 10 Mbps | 10 ms | ভাল WiFi সংযোগ |
Charles স্বয়ংক্রিয়ভাবে ট্র্যাফিক সেশন .chls ফাইলে সংরক্ষণ করতে পারে, যা আপনাকে পরে সেগুলি বিশ্লেষণ করতে বা সহকর্মীদের সাথে শেয়ার করতে দেয়। Recording Control আপনাকে নমনীয়ভাবে কনফিগার করতে দেয় কোন ট্র্যাফিক সংরক্ষণ করতে হবে: ডোমেন, কন্টেন্ট টাইপ বা স্টেটাস কোড অনুসারে। এটি দীর্ঘমেয়াদী API মনিটরিংয়ের জন্য সুবিধাজনক।
মোবাইল অ্যাপ ট্র্যাফিক ডিবাগ করার জন্য, Charles একটি WiFi Proxy হিসাবে কনফিগার করা হয়: কম্পিউটারের একই নেটওয়ার্কের সমস্ত ডিভাইস Charles-এর মাধ্যমে ট্র্যাফিক রুট করতে পারে। সঠিক HTTPS কনফিগারেশনের জন্য মোবাইল ডিভাইসে Charles সার্টিফিকেট ইনস্টল করা প্রয়োজন।
Android-এর জন্য: Settings → WiFi → Advanced → Proxy খুলুন, Manual নির্বাচন করুন এবং পোর্ট 8888 সহ কম্পিউটারের IP ঠিকানা লিখুন। তারপর ডিভাইসে ব্রাউজার খুলুন এবং Charles সার্টিফিকেট ডাউনলোড করতে http://chls.pro/ssl-এ যান। Android 7+ (API 24+) এ, Debug বিল্ডে ব্যবহারকারী সার্টিফিকেট বিশ্বাস করার জন্য network_security_config.xml প্রয়োজন — অন্যথায় অ্যাপ Charles-এর মাধ্যমে ট্র্যাফিক রুট নাও করতে পারে।
iOS-এর জন্য: Settings → WiFi → প্রক্সি কনফিগার করুন IP এবং পোর্ট 8888 সহ। তারপর Safari → http://chls.pro/ssl → সার্টিফিকেট প্রোফাইল ইনস্টল করুন। iOS 10.3+ এ, আপনাকে অতিরিক্তভাবে সার্টিফিকেট বিশ্বাস সক্ষম করতে হবে: Settings → General → About → Certificate Trust Settings → Charles Proxy চালু করুন। iOS সার্টিফিকেট সম্পর্কে আরও কঠোর: কিছু অ্যাপ SSL Pinning ব্যবহার করতে পারে, বিশ্বস্ত সার্টিফিকেট থাকা সত্ত্বেও Charles-এর মাধ্যমে ট্র্যাফিক ব্লক করতে পারে।
যদি অ্যাপ SSL Pinning(সার্ভার সার্টিফিকেট পিনিং) ব্যবহার করে, তাহলে Charles-এর মাধ্যমে স্ট্যান্ডার্ড প্রক্সি কাজ করবে না — অ্যাপ Charles সার্টিফিকেট প্রত্যাখ্যান করবে। সমাধান: OkHttp বা URLSession সেটিংসের মাধ্যমে Debug বিল্ডে SSL Pinning নিষ্ক্রিয় করুন, রানটাইমে পিনিং বাইপাস করতে Frida ব্যবহার করুন, বা রুট অ্যাক্সেস সহ Android Emulator ব্যবহার করুন।
Charles Proxy নির্দিষ্ট ডেভেলপমেন্ট এবং টেস্টিং কাজ সমাধান করে। আসুন সবচেয়ে সাধারণ পরিস্থিতিগুলি দেখি যেখানে টুলটি অপরিহার্য।
সবচেয়ে সাধারণ পরিস্থিতি — API অনুরোধের সঠিকতা পরীক্ষা করা। Charles সঠিক অনুরোধ URL, হেডার, বডি এবং প্যারামিটার দেখায়। যদি সার্ভার অপ্রত্যাশিত প্রতিক্রিয়া ফেরত দেয়, আপনি তত্ক্ষণাত দেখতে পান: JSON কাঠামো, ত্রুটি কোড, প্রতিক্রিয়া হেডার। এটি উভয় পক্ষ থেকে লগ ছাড়াই ক্লায়েন্ট-সাইড ত্রুটিকে সার্ভার-সাইড ত্রুটি থেকে আলাদা করতে দেয়।
Throttle প্রোফাইল ব্যবহার করে, আপনি পরীক্ষা করতে পারেন অ্যাপ কম সংযোগের গতিতে কীভাবে আচরণ করে: লোডিং ইন্ডিকেটর দেখানো হয় কিনা, টাইমআউট সঠিকভাবে হ্যান্ডেল করা হয় কিনা, সংযোগ হারালে UI ফ্রিজ হয় কিনা। ক্যাশিং পরীক্ষা করা বিশেষভাবে গুরুত্বপূর্ণ — যদি ডেটা ইতিমধ্যে লোড হয়ে থাকে, অ্যাপটি অন্তহীন লোডিংয়ে যাওয়ার পরিবর্তে ক্যাশে থেকে ডেটা দেখানো উচিত।
Breakpoints ব্যবহার করে, আপনি অ্যাপে পাঠানোর আগে সার্ভার প্রতিক্রিয়া পরিবর্তন করতে পারেন। উদাহরণস্বরূপ, ডেটার পরিবর্তে খালি অ্যারে ফেরত দিন, স্ট্যাটাস কোড 500 এ পরিবর্তন করুন, JSON-এ নতুন ফিল্ড যোগ করুন। এটি সার্ভার কোড পরিবর্তন না করেই সীমান্তবর্তী ক্ষেত্রগুলির প্রক্রিয়াকরণ পরীক্ষা করার অনুমতি দেয় — মোবাইল ডেভেলপমেন্টে Charles-এর সবচেয়ে শক্তিশালী ব্যবহারগুলির মধ্যে একটি।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Charles Proxy একটি বাণিজ্যিক পণ্য যা 30-দিনের ট্রায়াল সময়সীমা সহ। ট্রায়াল সময় শেষ হওয়ার পরে, প্রোগ্রামটি কাজ করতে থাকে তবে প্রতিটি স্টার্টআপে 30 মিনিটের জন্য বিরতি দেয়। লাইসেন্সের মূল্য $50 প্রতি কপি। Proxyman (macOS) এবং mitmproxy (ক্রস-প্ল্যাটফর্ম) এর মতো বিনামূল্যের বিকল্প রয়েছে।
হ্যাঁ, iOS সিমুলেটর স্বয়ংক্রিয়ভাবে macOS সিস্টেম প্রক্সি ব্যবহার করে। শুধু Charles শুরু করুন এবং SSL প্রক্সি সক্ষম করুন — সমস্ত সিমুলেটর ট্র্যাফিক ইন্টারসেপ্ট হবে। সিমুলেটরের জন্য সার্টিফিকেট সেটআপ স্বয়ংক্রিয়ভাবে ঘটে; আপনাকে শুধুমাত্র macOS কীচেনে Charles সার্টিফিকেট বিশ্বাস করতে হবে।
প্রধান পার্থক্য: Charles ক্রস-প্ল্যাটফর্ম (Windows, macOS, Linux), Proxyman শুধুমাত্র macOS এবং iOS-এর জন্য। Charles-এর টুলের বিস্তৃত সেট রয়েছে (Rewrite, Map Local, Repeat, Auto Save) কিন্তু পেইড। Proxyman বেসিক কার্যকারিতার জন্য বিনামূল্যে, আধুনিক ইন্টারফেস এবং নেটিভ iOS সিমুলেটর ইন্টিগ্রেশন সহ।
Charles প্রক্সির মাধ্যমে ট্র্যাফিক যাওয়ার সময় লেটেন্সি যোগ করে, বিশেষ করে সক্রিয় SSL প্রক্সি (ডিক্রিপশন/এনক্রিপশন) সহ। আধুনিক কম্পিউটারে, বিলম্ব প্রতি অনুরোধে 5-15 মিলিসেকেন্ড। পারফরম্যান্স পরীক্ষার জন্য, Recording Control-এর মাধ্যমে স্ট্যাটিক কন্টেন্ট (CSS, JS, ইমেজ) এর জন্য SSL প্রক্সি নিষ্ক্রিয় করার পরামর্শ দেওয়া হয়।
Charles এক্সপোর্ট সমর্থন করে ফরম্যাট: .chls(নেটিভ, Charles-এ পুনরায় খোলার জন্য), HAR(HTTP Archive, ব্রাউজার এবং অন্যান্য টুলে খোলে), CSV(Excel বা স্প্রেডশিটে প্রক্রিয়াকরণের জন্য), Trace(curl-সামঞ্জস্যপূর্ণ ফরম্যাটে নির্দিষ্ট অনুরোধ এক্সপোর্ট করার জন্য)। File → Export Session মেনুর মাধ্যমে এক্সপোর্ট করুন।
সারাংশ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন