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 से दूसरे पर रीडायरेक्ट करता है — उदाहरण के लिए, प्रोडक्शन सर्वर से staging पर परीक्षण के लिए। दोनों टूल वाइल्डकार्ड समर्थन वाले 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें