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

הריצו את הבקשה מתוך הקשר של התוסף, כגון ה-service worker או דף התוסף, כאשר נקודת הקצה נמצאת ב-host permissions של המניפסט:

"host_permissions": ["https://probe.example/*"]

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

async function probe() {
  const controller = new AbortController();
  const timer = setTimeout(() => controller.abort(), 5000);
  try {
    const response = await fetch('https://probe.example/ip', {
      cache: 'no-store',
      signal: controller.signal,
    });
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    const result = await response.json();
    if (typeof result.ip !== 'string') throw new Error('Bad probe body');
    return result.ip;
  } finally {
    clearTimeout(timer);
  }
}

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

תנו לתצפית שם מדויק

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

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

הפרידו בממשק בין פסק זמן, שגיאת HTTP וגוף לא צפוי. «הבדיקה הזו נכשלה» שימושי יותר מהכרזה שהמחשב כולו מנותק לאחר בקשה אחת.

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