באמולטור Android, אפשר להשתמש ב-proxy כדי לנפות באגים בתנועת נתונים של אפליקציות או כדי לגשת לאינטרנט מאחורי חומת אש ארגונית. האמולטור מציע שני מנגנוני Proxy שונים כדי לתמוך בתרחישים השונים האלה: Android System Proxy ו-Emulator Proxy.
בחירת שרת ה-Proxy המתאים
לפני שמגדירים שרת proxy, חשוב להבין את שני תרחישי השימוש. שרת ה-proxy של מערכת Android משמש לבדיקת התנועה של האפליקציה, ושרת ה-proxy של האמולטור משמש לעקיפת הגבלות ברשת. שני השרתים האלה בלעדיים, ואפשר להפעיל רק אחד מהם בכל פעם.
| תכונה | Android System Proxy | שרת Proxy של אמולטור |
|---|---|---|
| תרחיש ראשי לדוגמה | ניפוי באגים באפליקציה | Firewall Bypass |
| שכבת הפעלה | שכבת הרשת | שכבת האפליקציות |
| הגדרה | ממשק המשתמש של הגדרות ה-Wi-Fi במערכת Android | ממשק המשתמש של אמצעי הבקרה המורחבים של האמולטור או הסימון -http-proxy. |
| ניפוי באגים ב-HTTPS | כן – מאפשר לכלים כמו Charles Proxy ליירט תנועה כשאישור מותקן. |
לא – נוצרת מנהרת TCP, שמונעת בדיקת SSL. |
| Handles Non-HTTP/HTTPS Traffic |
לא – בעיקר מטפל בתנועת HTTP ו-HTTPS בלבד. |
כן – מעביר את כל תעבורת ה-TCP. |
תרחיש שימוש 1: ניפוי באגים באפליקציה באמצעות Proxy של מערכת Android
כדי לנפות באגים בתנועת הרשת של האפליקציה, למשל לבדוק בקשות HTTPS באמצעות כלי כמו Charles Proxy, צריך להשתמש בשרת ה-Proxy של מערכת Android.
שרת ה-proxy הזה פועל בשכבת האפליקציה במערכת ההפעלה Android. היא מאפשרת לכלי ניפוי באגים ליירט ולבדוק תנועה, אבל כדי לעשות את זה צריך להתקין את אישורי האבטחה הדרושים במכשיר המדומה.

הגדרות אישיות
יש שתי דרכים להגדיר את ה-Proxy של מערכת Android:
- הגדרה ידנית: באמולטור, עוברים אל הגדרות > רשת ואינטרנט > Wi-Fi, בוחרים את הרשת ומזינים ידנית את הגדרות ה-proxy.
- הגדרה אוטומטית: אפשר להגדיר את שרת ה-Proxy של מערכת Android באופן אוטומטי. כדי לעשות את זה, יוצרים בדיקת אינסטרומנטציה שמשתמשת במסגרת אוטומציה של ממשק משתמש, כמו UI Automator, כדי לפתוח את אפליקציית ההגדרות של Android ולהחיל את הגדרת ה-proxy בלי התערבות ידנית.
תרחיש לדוגמה 2: עקיפת חומות אש ארגוניות באמצעות פרוקסי של אמולטור
ברשתות ארגוניות רבות, מנהלי הרשת מסרבים לאפשר חיבורים ישירים לאינטרנט, ולכן החיבורים צריכים לעבור דרך שרת Proxy ספציפי. כדי לגשת למשאבים חיצוניים מתוך רשת מוגבלת כזו, צריך להשתמש בפרוקסי של אמולטור.
המנגנון הזה פועל ברמה נמוכה יותר ברשת ומנתב את כל תעבורת ה-TCP של המכשיר המדומה דרך השרת הפרוקסי שצוין, ולכן הוא אידיאלי למעבר דרך חומת אש. הוא משכתב באופן שקוף בקשות HTTP מהמכשיר הווירטואלי לפני שהוא שולח אותן ל-Proxy, וכך מאפשר להן לפעול בצורה תקינה.
הגדרות אישיות
כשמשתמשים באמולטור בתוך Android Studio, אפשר להגדיר שרת proxy באמצעות ההגדרות בתפריט Android Studio (Settings > Appearance & Behavior > System Settings > HTTP Proxy). פרטים נוספים זמינים במאמר הגדרת שרת proxy ב-Android Studio במסמכי Android Studio.
כשמשתמשים באמולטור כעצמאי (מחוץ ל-Android Studio), אפשר להגדיר את שרת ה-Proxy של האמולטור באחת מהשיטות הבאות:
תכונה ניסיונית בשורת הפקודה: מפעילים את האמולטור משורת הפקודה עם הדגל
-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עם הגדרות לשרת proxy. האמולטור בודק את המשתנה הזה בזמן האתחול ומשתמש בערך שלו באופן אוטומטי אם הוא מוגדר.אמצעי בקרה מתקדמים: פותחים את אמצעי הבקרה המתקדמים של האמולטור, עוברים אל הגדרות > Proxy ומזינים באופן ידני את הגדרות ה-Proxy ל-HTTP. האמולטור שומר את ההגדרות האלה עבור המכשיר ומשחזר אותן בהפעלה מחדש.
ה-Emulator Proxy לא תומך במנגנון עקיפה להחרגת מארחים או דומיינים ספציפיים (רשימת 'no-proxy-for').
ה-Emulator Proxy פועל בשכבת הרשת. הוא יוצר מנהור לתנועת HTTPS דרך TCP, אבל התנועה הזו מועברת בלי פענוח, מה שמונע בדיקה של HTTPS. ה-Emulator Proxy לא תומך בהפניה אוטומטית של UDP.
אינטראקציה עם Android Studio
ל-Android Studio יש תיבת דו-שיח משלו להגדרת פרוקסי להורדת עדכונים וספריות. כשמפעילים אמולטור מ-Android Studio, הוא קורא את הגדרות לשרת proxy של סביבת הפיתוח המשולבת (IDE) פעם אחת כדי לאכלס את ההגדרה Emulator Proxy. עם זאת, ההגדרות האלה לא משפיעות על ה-Proxy של מערכת Android.