Android Emulator पर, ऐप्लिकेशन के ट्रैफ़िक को डीबग करने या कॉर्पोरेट फ़ायरवॉल के पीछे से इंटरनेट ऐक्सेस करने के लिए, प्रॉक्सी का इस्तेमाल किया जा सकता है. एम्युलेटर, इस्तेमाल के इन अलग-अलग उदाहरणों के लिए, प्रॉक्सी के दो अलग-अलग तरीके उपलब्ध कराता है: Android सिस्टम प्रॉक्सी और एम्युलेटर प्रॉक्सी.
सही प्रॉक्सी चुनना
प्रॉक्सी को कॉन्फ़िगर करने से पहले, इस्तेमाल के इन दो उदाहरणों को समझना ज़रूरी है. Android सिस्टम प्रॉक्सी का इस्तेमाल, ऐप्लिकेशन के ट्रैफ़िक की जांच करने के लिए किया जाता है. वहीं, इमुलेटर प्रॉक्सी का इस्तेमाल, नेटवर्क से जुड़ी पाबंदियों को नेविगेट करने के लिए किया जाता है. ये दोनों प्रॉक्सी एक-दूसरे से अलग हैं. इसलिए, एक बार में सिर्फ़ एक प्रॉक्सी चालू की जा सकती है.
| सुविधा | Android System Proxy | एम्युलेटर प्रॉक्सी |
|---|---|---|
| डिवाइस का मुख्य इस्तेमाल | ऐप्लिकेशन डीबग करना | फ़ायरवॉल बायपास |
| ऑपरेटिंग लेयर | नेटवर्क लेयर | ऐप्लिकेशन लेयर |
| कॉन्फ़िगरेशन | Android सिस्टम में वाई-फ़ाई की सेटिंग का यूज़र इंटरफ़ेस | एम्युलेटर के एक्सटेंडेड कंट्रोल का यूज़र इंटरफ़ेस (यूआई) या-http-proxy फ़्लैग. |
| एचटीटीपीएस डीबग करना | हां - इससे Charles Proxy जैसे टूल को, कोई सर्टिफ़िकेट इंस्टॉल होने पर ट्रैफ़िक को इंटरसेप्ट करने की अनुमति मिलती है. |
नहीं - इससे टीसीपी टनल बनती है. इससे एसएसएल की जांच नहीं हो पाती. |
| नॉन-एचटीटीपी/एचटीटीपीएस ट्रैफ़िक को मैनेज करता है |
नहीं - यह मुख्य रूप से सिर्फ़ एचटीटीपी और एचटीटीपीएस ट्रैफ़िक को मैनेज करता है. |
हां - इससे सभी टीसीपी ट्रैफ़िक को फ़ॉरवर्ड किया जाता है. |
इस्तेमाल का पहला उदाहरण: Android सिस्टम प्रॉक्सी की मदद से ऐप्लिकेशन डीबग करना
अपने ऐप्लिकेशन के नेटवर्क ट्रैफ़िक को डीबग करने के लिए, आपको Android सिस्टम प्रॉक्सी का इस्तेमाल करना चाहिए. जैसे, Charles Proxy जैसे टूल की मदद से एचटीटीपीएस अनुरोधों की जांच करना.
यह प्रॉक्सी, Android OS में ऐप्लिकेशन लेयर पर काम करती है. इससे डीबग करने वाले टूल को ट्रैफ़िक को इंटरसेप्ट करने और उसकी जांच करने की अनुमति मिलती है. हालांकि, इसके लिए ज़रूरी है कि इम्यूलेट किए गए डिवाइस पर ज़रूरी सुरक्षा सर्टिफ़िकेट इंस्टॉल किए जाएं.

कॉन्फ़िगरेशन
Android सिस्टम प्रॉक्सी को दो तरीकों से कॉन्फ़िगर किया जा सकता है:
- मैन्युअल कॉन्फ़िगरेशन: एम्युलेटर में, सेटिंग > नेटवर्क और इंटरनेट > वाई-फ़ाई पर जाएं. इसके बाद, अपना नेटवर्क चुनें और प्रॉक्सी सेटिंग मैन्युअल तरीके से डालें.
- अपने-आप होने वाला कॉन्फ़िगरेशन: Android सिस्टम प्रॉक्सी को प्रोग्राम के हिसाब से कॉन्फ़िगर किया जा सकता है. इसके लिए, एक इंस्ट्रुमेंटेशन टेस्ट बनाया जाता है. यह टेस्ट, Android Settings ऐप्लिकेशन को खोलने और प्रॉक्सी कॉन्फ़िगरेशन लागू करने के लिए, UI Automator जैसे यूज़र इंटरफ़ेस (यूआई) ऑटोमेशन फ़्रेमवर्क का इस्तेमाल करता है. इसके लिए, मैन्युअल तरीके से कोई कार्रवाई करने की ज़रूरत नहीं होती.
इस्तेमाल का दूसरा उदाहरण: एम्युलेटर प्रॉक्सी की मदद से, कॉर्पोरेट फ़ायरवॉल को बायपास करना
कई कॉर्पोरेट नेटवर्क पर, नेटवर्क एडमिन इंटरनेट से सीधे कनेक्शन की अनुमति नहीं देते. इसलिए, कनेक्शन को किसी प्रॉक्सी के ज़रिए पास करना ज़रूरी होता है. पाबंदी वाले ऐसे नेटवर्क में बाहरी संसाधनों को ऐक्सेस करने के लिए, आपको एम्युलेटर प्रॉक्सी का इस्तेमाल करना चाहिए.
यह तरीका, नेटवर्क के निचले लेवल पर काम करता है. साथ ही, यह डिवाइस के सभी टीसीपी ट्रैफ़िक को तय की गई प्रॉक्सी के ज़रिए रूट करता है. इससे फ़ायरवॉल ट्रैवर्सल के लिए यह तरीका सबसे सही होता है. यह वर्चुअल डिवाइस से मिले एचटीटीपी अनुरोधों को प्रॉक्सी को भेजने से पहले, पारदर्शी तरीके से फिर से लिखता है. इससे वे अनुरोध सही तरीके से काम कर पाते हैं.
कॉन्फ़िगरेशन
Android Studio में मौजूद एम्युलेटर का इस्तेमाल करते समय, Android Studio के मेन्यू (
Settings > Appearance & Behavior > System Settings > HTTP Proxy) में मौजूद सेटिंग की मदद से, प्रॉक्सी कॉन्फ़िगर की जा सकती है. ज़्यादा जानकारी के लिए, Android Studio के दस्तावेज़ में Android Studio प्रॉक्सी सेट अप करना लेख पढ़ें.
एम्युलेटर को स्टैंडअलोन (Android Studio से बाहर) के तौर पर इस्तेमाल करते समय, इनमें से किसी एक तरीके का इस्तेमाल करके, एम्युलेटर प्रॉक्सी को कॉन्फ़िगर किया जा सकता है:
कमांड लाइन फ़्लैग:
-http-proxy <proxy>फ़्लैग का इस्तेमाल करके, कमांड लाइन से एम्युलेटर लॉन्च करें.<proxy>जानकारी कोhttp://<machineName>:<port>याhttp://<username>:<password>@<machineName>:<port>फ़ॉर्मैट में दिया जा सकता है.emulator -http-proxy http://<machineName>:<port>या
emulator @MyAvd -http-proxy http://<username>:<password>@<machineName>:<port>एनवायरमेंट वैरिएबल: अपनी प्रॉक्सी सेटिंग के साथ
http_proxyएनवायरमेंट वैरिएबल को तय करें. एम्युलेटर, स्टार्टअप के समय इस वैरिएबल की जांच करता है. अगर यह वैरिएबल तय किया गया है, तो एम्युलेटर इसकी वैल्यू का इस्तेमाल अपने-आप करता है.एक्सटेंडेड कंट्रोल: एम्युलेटर के एक्सटेंडेड कंट्रोल खोलें. इसके बाद, सेटिंग > प्रॉक्सी पर जाएं और एचटीटीपी प्रॉक्सी कॉन्फ़िगरेशन को मैन्युअल तरीके से डालें. एम्युलेटर, डिवाइस के लिए इन सेटिंग को सेव करता है और रीस्टार्ट करने पर उन्हें वापस ले आता है.

Emulator Proxy, नेटवर्क लेयर पर काम करता है. यह टीसीपी पर एचटीटीपीएस ट्रैफ़िक को टनल करता है. हालांकि, इस ट्रैफ़िक को डिक्रिप्ट किए बिना फ़ॉरवर्ड किया जाता है. इससे एचटीटीपीएस की जांच नहीं हो पाती. Emulator Proxy, यूडीपी रीडायरेक्शन के साथ काम नहीं करता.
Android Studio के साथ इंटरैक्शन
Android Studio में, अपडेट और लाइब्रेरी डाउनलोड करने के लिए, प्रॉक्सी कॉन्फ़िगरेशन का अपना डायलॉग बॉक्स होता है. Android Studio से कोई एम्युलेटर लॉन्च करने पर, यह IDE की प्रॉक्सी सेटिंग को एक बार पढ़ेगा. इससे एम्युलेटर प्रॉक्सी कॉन्फ़िगरेशन भर जाएगा. हालांकि, इन सेटिंग का असर Android System Proxy पर नहीं पड़ता.