הגדרת שרת Proxy באמצעות אמולטור Android

באמולטור 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

הגדרות אישיות

יש שתי דרכים להגדיר את ה-Proxy של מערכת Android:

  1. הגדרה ידנית: באמולטור, עוברים אל הגדרות > רשת ואינטרנט > Wi-Fi, בוחרים את הרשת ומזינים ידנית את הגדרות ה-proxy.
  2. הגדרה אוטומטית: אפשר להגדיר את שרת ה-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 של האמולטור באחת מהשיטות הבאות:

  1. תכונה ניסיונית בשורת הפקודה: מפעילים את האמולטור משורת הפקודה עם הדגל -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>
    
  2. משתנה סביבה: מגדירים את משתנה הסביבה http_proxy עם הגדרות לשרת proxy. האמולטור בודק את המשתנה הזה בזמן האתחול ומשתמש בערך שלו באופן אוטומטי אם הוא מוגדר.

  3. אמצעי בקרה מתקדמים: פותחים את אמצעי הבקרה המתקדמים של האמולטור, עוברים אל הגדרות > Proxy ומזינים באופן ידני את הגדרות ה-Proxy ל-HTTP. האמולטור שומר את ההגדרות האלה עבור המכשיר ומשחזר אותן בהפעלה מחדש.

    הגדרת שרת Proxy באמולטור

    ה-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.