מישהו בנה אוטומציה שמפעילה את ה-VPN כשמופיעה לשונית incognito, והיא לא עובדת באופן אמין. יש לכך סיבה מבנית, וכדאי להבין אותה לפני כיוונון האוטומציה. כללי VPN לפי אפליקציה באנדרואיד בוחרים חבילות אפליקציה, ו-incognito הוא מצב בתוך חבילה אחת, ולכן הכלל לא יכול להבדיל בין השניים. התראה נורית לאחר שהדפדפן כבר התחיל לעבוד, ולכן אפילו טריגר נכון מגיע מאוחר. עברו על הבדיקות שלהלן לפי הסדר; כישלון בבדיקה הרביעית פירושו שיש לשנות את הגישה, לא את התצורה.

בדיקה ראשונה: ודאו מה הכלל לפי אפליקציה יכול לבחור

אפליקציית VPN באנדרואיד בונה את המנהרה שלה עם רשימות אפליקציות מותרות או אסורות, והרשימות האלה מקבלות שמות חבילה. Chrome במצב רגיל ו-Chrome במצב incognito הם אותה חבילה, עם אותו מזהה משתמש ואותה הרשאת רשת, ולכן כלל שמכליל או שולל את Chrome חל על שניהם באופן זהה. אין זהות ברמת הלשונית שהפלטפורמה יכולה להתאים אליה.

זה לא פגם שיש לעקוף; זו הרזולוציה שה-API מציע. אם הדרישה שלכם היא תעבורת Chrome דרך המנהרה וכל השאר בחוץ, כלל לפי אפליקציה מבטא זאת בדיוק. אם הדרישה שלכם היא שרק לשוניות פרטיות יעברו דרך המנהרה בעוד לשוניות רגילות ילכו ישירות, שום כלל לפי אפליקציה לא יכול לבטא זאת, ושום כמות של לוגיקת התראות לא תוסיף בורר שאין לפלטפורמה.

שימו לב למלכודת זהות החבילה בזמן הבדיקה. גרסת בטא או בנייה של יצרן היא חבילה שונה מהדפדפן היציב, ולכן כלל שמכסה אחד מפספס בשקט את האחר:

adb shell pm list packages | grep -i chrome

בדיקה שנייה: בדקו אם הטריגר יכול אי פעם להיות מוקדם מספיק

מאזין התראות צופה בהתראות שהוא מורשה לראות. צפייה אינה יירוט: הדפדפן כבר פתר את השם ופתח את החיבור עד שההתראה קיימת, ושום דבר בנתיב הזה לא ממתין לאוטומציה שלכם שתסתיים. משימה שמפעילה אז את לקוח ה-VPN חייבת להמתין לממשק הלקוח, לכל בקשת הסכמה וללחיצת היד של המנהרה, הנמדדות בשניות, בעוד הבקשה הראשונה נמדדת באלפיות שנייה.

הזיהוי עצמו שביר מסיבה שנייה. טקסט ההתראה משתנה בין גרסאות ובין לוקליזציות, ולכן תבנית שמתאימה לגרסה אחת מפסיקה להתאים לאחר עדכון, והכשל שקט. התראה חסרה אינה הוכחה להיעדר גלישה פרטית; היא עשויה רק לומר שהמחרוזת השתנתה או שהערוץ הושתק.

יש גרסה לגיטימית של זרימת העבודה הזו, והיא מסודרת ולא תגובתית: חברו קודם את ה-VPN המאושר, אשרו אות מוכנות שמוכיח באמת שהמנהרה נושאת תעבורה, ואז פתחו את סשן ה-incognito דרך פקדי דפדפן נתמכים, ועצרו אם בדיקת המוכנות נכשלת. זה מגן על הסשן שאתם עומדים להתחיל בלי להעמיד פנים שאתם מגנים על אחד שכבר פועל.

בדיקה שלישית: בצעו ביקורת על ההרשאה שאתם עומדים להעניק

גישה להתראות היא הרשאה רגישה שמאפשרת לשירות לקרוא התראות מכל אפליקציה, לא רק מהדפדפן. להעניק אותה לכלי אוטומציה לא מוכר כדי לצפות במצב דפדפן אחד זה עסקה גרועה, והגישה נשארת לאחר סיום הניסוי. הקשות מונעות על ידי נגישות גרועות יותר: הן שכבת סקריפט מעל הממשק, לא ממשק בקרת VPN נתמך, והן נשברות בכל שינוי פריסה.

לפני שאתם מעניקים משהו, שאלו אם אותה תוצאה ניתנת להשגה במנגנון נתמך. אם התשובה היא דרישת מדיניות, בדרך כלל כן: הפלטפורמה יכולה לאכוף מנהרה לאפליקציה או לפרופיל בלי שום שירות מאזין.

בדיקה רביעית: השתמשו ב-always-on ובחסימה כשהדרישה היא אכיפה

אם הדפדפן אסור לו לתקשר מחוץ למנהרה לעולם, האכיפה שייכת להגדרות הפלטפורמה, לא למאקרו. אנדרואיד תומך ב-VPN always-on עם מצב חסימה שמונע תעבורה כשהמנהרה לא הוקמה, והתקנים מנוהלים יכולים לקבל אותו באמצעות מדיניות. אשרו מה יש למכשיר כעת במקום להניח:

adb shell settings get global always_on_vpn_app
adb shell settings get global always_on_vpn_lockdown

ערך אפליקציה שאינו null פירושו שחבילה מוגדרת כ-always-on, וערך חסימה של 1 פירושו שחיבורים מחוץ למנהרה חסומים. הצמד הזה הוא מה שהופך הרגל של מאמץ מיטבי לערובה, והוא גם מסיר את המירוץ לחלוטין, כי המנהרה מוקמת לפני שתעבורת האפליקציה מורשית.

שני גבולות ראויים לציון כאן. פרופילי עבודה נושאים תצורת VPN משלהם, ולכן כלל שאומת בפרופיל האישי לא אומר דבר על פרופיל העבודה. ודפדפן שהותקן בנפרד, לשונית מותאמת שנפתחה על ידי אפליקציה אחרת, או webview בתוך אפליקציה הם חבילה או הקשר שונים עם ניתוב משל עצמם, ולכן אשרו את החבילה בפועל במקום להניח שחלון בעיצוב שונה הוא דומיין נפרד.

בדיקה חמישית: כתבו את זרימת העבודה ובדקו את נתיב הכשל

מה שתבחרו, תעדו את הסדר ואת תנאי ההפסקה. עבור זרימת הנוחות זה אומר: מנהרה למעלה, מוכנות מוכחת, incognito פתוח, ועצירה קשה אם המוכנות נכשלת. עבור נתיב האכיפה זה אומר: אפליקציית always-on מוגדרת, חסימה מופעלת, וההתנהגות הצפויה כאשר לא ניתן להעלות את המנהרה כלל, כלומר אין תעבורה ולא תעבורה לא מוגנת.

ואז בדקו את הכשל, לא רק את ההצלחה. נתקו את המנהרה במהלך סשן וצפו מה הדפדפן עושה; חסמו את תהליך אפליקציית ה-VPN ואשרו ששום דבר לא דולף. לבסוף, שמרו על שני מודלי הפרטיות בנפרד בתיעוד המשתמש: incognito שולט במצב דפדפן זמני ואינו מסתיר תעבורה מהרשת, בעוד VPN מעביר תעבורה אך אינו מוחק התחברויות או משהו שנשלח בתוך הסשן הפרטי.

מאמרים קשורים