תדירות הבקשה

המסמך הזה רלוונטי לשיטות הבאות:

  • Update API (v4): fullHashes.find
  • Update API (v4): threatListUpdates.fetch
  • בקשות עדכון

    כדי למנוע עומס יתר על השרת ולהפיק תועלת מהגנה אופטימלית, Update API (v4) קובע מרווחי זמן לבדיקת התדירות שבה לקוח יכול לשלוח בקשות לשרת הגלישה הבטוחה אל לבצע בדיקות של כתובות URL (fullHashes.find) או לעדכן את מסד הנתונים המקומי (threatListUpdates.fetch).

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

    משך המתנה מינימלי

    גם fullHashes.find, וגם תגובת threatListUpdates.fetch יש שדה minimumWaitDuration שהלקוחות חייבים לציית לו.

    אם השדה minimumWaitDuration לא מוגדר בתשובה, הלקוחות יכולים לעדכן לפי הצורך ולשלוח כמה בקשות threatListUpdates או fullHashes לפי שהם רוצים.

    אם השדה minimumWaitDuration מוגדר בתשובה, הלקוחות לא יכולים מעדכנים בתדירות גבוהה יותר ממשך זמן ההמתנה. לדוגמה, אם התשובה fullHashes מכיל משך המתנה מינימלי של שעה אחת, אסור ללקוח לשלוח בקשות fullHashes עד שהשעה הזו מסתיימת, גם אם המשתמש נכנס לכתובת URL שקידומת הגיבוב שלה תואמת מסד נתונים. (לתשומת ליבכם: לקוחות יכולים לעדכן בתדירות נמוכה יותר ממשך ההמתנה המינימלי, אבל אפשרות זו עלול להשפיע לרעה על ההגנה.)

    מצב השהייה

    השהיה אוטומטית לפני ניסיון חוזר (backoff) חלה על fullHashes.find, וגם תגובה של threatListUpdates.fetch.

    לקוחות שמקבלים תגובת HTTP שנכשלה (כלומר, כל קוד מצב HTTP מלבד 200 OK) חייבים לעבור למצב של השהיה לפני ניסיון חוזר (backoff). במצב השהיה לפני ניסיון חוזר, הלקוחות צריכים להמתין את הזמן המחושב משך הזמן לפני שהוא יוכל לשלוח בקשה נוספת לשרת.

    לקוחות חייבים להשתמש בנוסחה הבאה כדי לחשב את משך הזמן של השהיה לפני ניסיון חוזר:

    MIN((2N-1 * 15 minutes) * (RAND + 1), 24 hours)

    N מייצג את מספר הבקשות הרציפות שלא נכשלו (מתחיל ב-N=1 אחרי הבקשה הראשונה שנכשלה). RAND הוא מספר אקראי בין 0 ל-1 שצריך לבחור אחרי כל עדכון שנכשל.

    לאחר שלקוח מקבל תגובת HTTP מוצלחת, הוא חייב לצאת ממצב השהיה לפני ניסיון חוזר (backoff) ולפעול לפי משך ההמתנה המינימלי שצוינו למעלה.