תיאור
ה-API של chrome.declarativeNetRequest
משמש לחסימה או לשינוי של בקשות רשת על ידי ציון כללים מוצהריים. כך התוספים יכולים לשנות בקשות רשת בלי ליירט אותן ולראות את התוכן שלהן, וכך לשפר את הפרטיות.
הרשאות
declarativeNetRequest
declarativeNetRequestWithHostAccess
ההרשאות declarativeNetRequest
ו-declarativeNetRequestWithHostAccess
מספקות את אותן יכולות. ההבדל בין שתי האפשרויות הוא מתי מבקשים את ההרשאות ומתי הן ניתנות.
"declarativeNetRequest"
- מפעילה אזהרה לגבי הרשאות בזמן ההתקנה, אבל מספקת גישה משתמעת לכללים
allow
,allowAllRequests
ו-block
. מומלץ להשתמש באפשרות הזו כשהיא זמינה כדי שלא תצטרכו לבקש גישה מלאה מהמארחים. "declarativeNetRequestFeedback"
- הפעלת תכונות לניפוי באגים בתוספים לא מוצקים, במיוחד ב-
getMatchedRules()
וב-onRuleMatchedDebug
. "declarativeNetRequestWithHostAccess"
- לא מוצגת אזהרה לגבי הרשאות בזמן ההתקנה, אבל צריך לבקש הרשאות מהמארח כדי לבצע פעולה כלשהי במארח. האפשרות הזו מתאימה כשרוצים להשתמש בכללים דמוקרטיים לבקשות רשת בתוסף שכבר יש לו הרשאות מארח, בלי ליצור אזהרות נוספות.
זמינות
מניפסט
בנוסף להרשאות שתוארו למעלה, סוגים מסוימים של כללי מדיניות, במיוחד כללי מדיניות סטטיים, דורשים הצהרה על מפתח המניפסט "declarative_net_request"
, שצריך להיות מילון עם מפתח יחיד שנקרא "rule_resources"
. המפתח הזה הוא מערך שמכיל מילונים מסוג Ruleset
, כפי שמוצג בהמשך. (לתשומת ליבכם: השם 'Ruleset' לא מופיע ב-JSON של המניפסט כי הוא פשוט מערך). בהמשך המאמר מוסבר על כללי סטטיק.
{
"name": "My extension",
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
}, {
"id": "ruleset_2",
"enabled": false,
"path": "rules_2.json"
}]
},
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestFeedback",
],
"host_permissions": [
"http://www.blogger.com/*",
"http://*.google.com/*"
],
...
}
כללים וקבוצות כללים
כדי להשתמש ב-API הזה, צריך לציין מערכת כללים אחת או יותר. מערכת כללים מכילה מערך של כללים. כלל יחיד יכול לבצע אחת מהפעולות הבאות:
- לחסום בקשת רשת.
- שדרוג הסכימה (מ-http ל-https).
- כדי למנוע חסימת בקשה, מבטלים את כל הכללים החוסמים התואמים.
- הפניה אוטומטית של בקשת רשת.
- שינוי כותרות של בקשות או תגובות.
יש שלושה סוגים של כללי מדיניות, שמנוהלים בדרכים שונות במקצת.
- דינמית
- נשמרים במהלך סשנים בדפדפן ועדכוני תוספים, ומנוהלים באמצעות JavaScript בזמן השימוש בתוסף.
- סשן
- היא נמחקת כשהדפדפן נכבה וכשמתקינים גרסה חדשה של התוסף. כללי הסשן מנוהלים באמצעות JavaScript בזמן השימוש בתוסף.
- סטטי
- ארוז, מותקן ומעודכן כשמתקינים או משדרגים תוסף. כללים סטטיים מאוחסנים בקובצי כללים בפורמט JSON ומפורטים בקובץ המניפסט.
קבוצות כללים דינמיות וברמת הסשן
כללי רגולציה דינמיים וכללי רגולציה של סשנים מנוהלים באמצעות JavaScript בזמן השימוש בתוסף.
- כללים דינמיים נשארים בתוקף בסשנים בדפדפן ובשדרוגים של תוספים.
- כללי הסשן נמחקים כשהדפדפן מושבת וכאשר מתקינים גרסה חדשה של התוסף.
יש רק אחד מכל סוג של כללי כלל. תוסף יכול להוסיף או להסיר כללים באופן דינמי על ידי קריאה ל-updateDynamicRules()
ול-updateSessionRules()
, בתנאי שלא חורגים ממגבלות הכללים. מידע על מגבלות של כללים זמין במאמר מגבלות של כללים. דוגמה לכך מופיעה בקטע דוגמאות קוד.
כללי סטטוס סטטיים
בניגוד לכללים דינמיים ולכללים של סשנים, כללים סטטיים נארזים, מותקנים ומעודכנים כשמתקינים או משדרגים תוסף. הם מאוחסנים בקובצי כללים בפורמט JSON, שמצוינים בתוסף באמצעות המפתחות "declarative_net_request"
ו-"rule_resources"
כפי שמתואר למעלה, וכן במילון אחד או יותר של Ruleset
. מילון Ruleset
מכיל נתיב לקובץ הכללים, מזהה של קבוצת הכללים שמכיל הקובץ ואת סטטוס ההפעלה של קבוצת הכללים. שני השדות האחרונים חשובים כשמפעילים או משביתים כלל מערכת באופן פרוגרמטי.
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
כדי לבדוק את קובצי הכללים, צריך לטעון את התוסף ללא אריזה. שגיאות ואזהרות לגבי כללים סטטיים לא תקינים מוצגות רק לגבי תוספי CSS שלא פורקו. המערכת מתעלמת מכללים סטטיים לא חוקיים בתוספים ארוזים.
בדיקה מהירה
יכול להיות ששינויים בכללי סט של כללים סטטיים יעמדו בדרישות לבדיקה מהירה. בדיקה מהירה של שינויים שעומדים בדרישות
הפעלה והשבתה של כללים סטטיים וקבוצות כללים
אפשר להפעיל או להשבית כללים סטטיים בודדים וגם קבוצות של כללים סטטיים מלאות במהלך זמן הריצה.
קבוצת הכללים הסטטיים וקבוצות הכללים המופעלות נשארת קבועה בסשנים שונים בדפדפן. אף אחד מהם לא נשמר לאחר עדכוני התוספים, כלומר רק הכללים שבחרתם להשאיר בקובצי הכללים יהיו זמינים אחרי העדכון.
מטעמי ביצועים, יש גם מגבלות על מספר הכללים ועל מספר קבוצות הכללים שאפשר להפעיל בו-זמנית. אפשר להתקשר למספר getAvailableStaticRuleCount()
כדי לבדוק את מספר הכללים הנוספים שאפשר להפעיל. מידע על מגבלות של כללים זמין במאמר מגבלות של כללים.
כדי להפעיל או להשבית כללים סטטיים, קוראים לפונקציה updateStaticRules()
. השיטה מקבלת אובייקט UpdateStaticRulesOptions
שמכיל מערכי מזהי כללים להפעלה או להשבתה. המזהים מוגדרים באמצעות המפתח "id"
במילון Ruleset
. המגבלה המקסימלית היא 5,000 כללים סטטיים מושבתים.
כדי להפעיל או להשבית קבוצות כללים סטטיות, קוראים ל-updateEnabledRulesets()
. ה-method הזה מקבל אובייקט UpdateRulesetOptions
שמכיל מערכי מזהי של כללי כללים שרוצים להפעיל או להשבית. המזהים מוגדרים באמצעות המפתח "id"
במילון Ruleset
.
יצירת כללים
ללא קשר לסוג, כל כלל מתחיל בארבעה שדות, כפי שמתואר בהמשך. המפתחות "id"
ו-"priority"
מקבלים מספר, אבל המפתחות "action"
ו-"condition"
יכולים לספק כמה תנאים לחסימה ולהפניה אוטומטית. הכלל הבא חוסם את כל הבקשות ל-script שמגיעות מ-"foo.com"
לכל כתובת URL עם "abc"
כמחרוזת משנה.
{
"id" : 1,
"priority": 1,
"action" : { "type" : "block" },
"condition" : {
"urlFilter" : "abc",
"initiatorDomains" : ["foo.com"],
"resourceTypes" : ["script"]
}
}
התאמה של כתובות URL
בעזרת Declarative Net Request אפשר להתאים כתובות URL באמצעות תחביר של התאמת דפוסים או באמצעות ביטויים רגולריים.
תחביר של מסנן כתובות URL
מפתח "condition"
של כלל מאפשר למפתח "urlFilter"
לבצע פעולות בכתובות URL בדומיין מסוים. יוצרים דפוסים באמצעות אסימונים להתאמת דפוסים. ריכזנו כאן כמה דוגמאות.
urlFilter |
התאמות | לא תואם |
---|---|---|
"abc" |
https://abcd.com https://example.com/abcd |
https://ab.com |
"abc*d" |
https://abcd.com https://example.com/abcxyzd |
https://abc.com |
"||a.example.com" |
https://a.example.com/ https://b.a.example.com/xyz https://a.example.company |
https://example.com/ |
"|https*" |
https://example.com | http://example.com/ http://https.com |
"example*^123|" |
https://example.com/123 http://abc.com/example?123 |
https://example.com/1234 https://abc.com/example0123 |
ביטויים רגולריים
אפשר גם להשתמש בביטויים רגולריים בתנאים. שימו לב למפתח "regexFilter"
. מידע על המגבלות שחלות על התנאים האלה זמין במאמר כללים שמשתמשים בביטויים רגולריים.
כתיבת תנאים טובים לכתובות URL
חשוב להקפיד לכתוב כללים כך שיתאימו תמיד לדומיין שלם. אחרת, יכול להיות שהכלל יתאים למצבים לא צפויים. לדוגמה, כשמשתמשים בתחביר של התאמה לתבנית:
google.com
תואם באופן שגוי ל-https://example.com/?param=google.com
||google.com
תואם באופן שגוי ל-https://google.company
https://www.google.com
תואם באופן שגוי ל-https://example.com/?param=https://www.google.com
כדאי להשתמש באפשרויות הבאות:
||google.com/
, שמתאים לכל הנתיבים וכל תת-הדומיינים.|https://www.google.com/
שמתאים לכל הנתיבים ולא כולל תת-דומיינים.
באופן דומה, משתמשים בתווים ^
ו-/
כדי לאבטח ביטוי רגולרי. לדוגמה, ^https:\/\/www\.google\.com\/
תואם לכל נתיב ב-https://www.google.com.
הערכת כללים
הדפדפן מחיל את כללי ה-DNR בשלבים שונים במחזור החיים של בקשת הרשת.
לפני שליחת הבקשה
לפני שליחת בקשה, תוסף יכול לחסום אותה או להפנות אותה אוטומטית (כולל שדרוג של הסכימה מ-HTTP ל-HTTPS) באמצעות כלל תואם.
לכל תוסף, הדפדפן קובע רשימה של כללי התאמה. כללים עם פעולה modifyHeaders
לא נכללים כאן כי הם יטופלו בהמשך. בנוסף, כללים עם תנאי responseHeaders
יילקחו בחשבון מאוחר יותר (כשכותרות התגובה יהיו זמינות) ולא ייכללו.
לאחר מכן, Chrome בוחר לכל תוסף מועמדת אחת לכל היותר לכל בקשה. Chrome מוצא כלל תואם על ידי סדר כל הכללים התואמים לפי תעדוף. כללים עם אותה עדיפות ממוינים לפי פעולה (allow
או allowAllRequests
> block
> upgradeScheme
> redirect
).
אם המועמד הוא כלל allow
או allowAllRequests
, או שהמסגרת שבה הבקשה נשלחת תאמה בעבר לכלל allowAllRequests
עם עדיפות גבוהה יותר או שווה מאותו תוסף, הבקשה תהיה 'מותרת' ולא תהיה לתוסף השפעה על הבקשה.
אם יותר מתוסף אחד רוצה לחסום או להפנות את הבקשה הזו, תתבצע פעולה אחת בלבד. Chrome עושה זאת על ידי מיון הכללים לפי הסדר block
> redirect
או upgradeScheme
> allow
או allowAllRequests
. אם שני כללים הם מאותו סוג, Chrome בוחר את הכלל מהתוסף שהותקן לאחרונה.
לפני שליחת כותרות הבקשה
לפני ש-Chrome שולח כותרות בקשה לשרת, הכותרות מתעדכנות על סמך כללי modifyHeaders
תואמים.
בתוך תוסף אחד, Chrome יוצר את רשימת השינויים לביצוע על ידי חיפוש כל הכללים התואמים של modifyHeaders
. בדומה למה שקרה קודם, המערכת תכלול רק כללים שיש להם עדיפות גבוהה יותר מכללים תואמים של allow
או allowAllRequests
.
Chrome מחיל את הכללים האלה בסדר כזה שכללי תוסף שהותקן לאחרונה תמיד נבדקים לפני כללי תוסף ישן יותר. בנוסף, כללים בעדיפות גבוהה יותר מתוסף אחד חלים תמיד לפני כללים בעדיפות נמוכה יותר מאותו תוסף. חשוב לציין שגם בין תוספים שונים:
- אם כלל מצורף לכותרת, כללים בעדיפות נמוכה יותר יכולים לצרף רק לכותרת הזו. אסור לבצע פעולות הגדרה והסרה.
- אם כלל מגדיר כותרת, רק כללים בעדיפות נמוכה יותר מאותו תוסף יכולים לצרף לכותרת הזו. אסור לבצע שינויים אחרים.
- אם כלל מסיר כותרת, כללים בעדיפות נמוכה יותר לא יכולים לשנות את הכותרת.
אחרי שמתקבלת תשובה
לאחר קבלת כותרות התגובה, Chrome מעריך כללים עם תנאי responseHeaders
.
אחרי שממיינים את הכללים האלה לפי action
ו-priority
ומחריגים כללים שהפכו למיותרים בגלל כלל allow
או allowAllRequests
תואם (השלבים האלה זהים לשלבים שמפורטים בקטע 'לפני הבקשה'), Chrome עשוי לחסום את הבקשה או להפנות אותה אוטומטית בשם תוסף.
שימו לב: אם בקשה הגיעה לשלב הזה, הבקשה כבר נשלחה לשרת והשרת קיבל נתונים כמו גוף הבקשה. כלל חסימה או הפניה אוטומטית עם תנאי של כותרות תגובה עדיין יפעל, אבל לא יוכל לחסום או להפנות את הבקשה בפועל.
במקרה של כלל חסימה, הטיפול בכך מתבצע על ידי הדף ששלח את הבקשה שמקבלת תגובה חסומה, ו-Chrome מסיים את הבקשה מוקדם. במקרה של כלל להפניה אוטומטית, Chrome שולח בקשה חדשה לכתובת ה-URL שאליו הופנית. חשוב לבדוק אם ההתנהגויות האלה עומדות בציפיות הפרטיות של התוסף.
אם הבקשה לא נחסמת או מנותבת, Chrome מחיל את כל הכללים של modifyHeaders
. החלת שינויים בכותרות התגובה פועלת באותו אופן שמתואר בקטע 'לפני שליחת כותרות הבקשה'. החלת שינויים על כותרות הבקשה לא תעשה דבר, כי הבקשה כבר נשלחה.
כללים בטוחים
כללים בטוחים מוגדרים כללים עם פעולה מסוג block
, allow
, allowAllRequests
או upgradeScheme
. הכללים האלה כפופים למכסה מוגדלת של כללים דינמיים.
מגבלות על כללים
יש עלות ריבית על הביצועים של טעינת הכללים והערכתם בדפדפן, ולכן חלות מגבלות מסוימות על השימוש ב-API. המגבלות משתנות בהתאם לסוג הכלל שבו אתם משתמשים.
כללים סטטיים
כללים סטטיים הם כללים שצוינו בקובצי כללים שהוצהרו בקובץ המניפסט. תוסף יכול לציין עד 100 קבוצות כללים סטטיות כחלק ממפתח המניפסט "rule_resources"
, אבל אפשר להפעיל רק 50 מקבוצות הכללים האלה בכל פעם. השדה השני נקרא MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
. סך כל הכללים בכל קבוצות הכללים האלה הוא לפחות 30,000 כללים. הערך הזה נקרא GUARANTEED_MINIMUM_STATIC_RULES
.
מספר הכללים שיהיו זמינים לאחר מכן תלוי במספר הכללים שמופעלים על ידי כל התוספים שמותקנים בדפדפן של המשתמש. אפשר למצוא את המספר הזה בזמן הריצה באמצעות קריאה ל-getAvailableStaticRuleCount()
. דוגמה לכך מופיעה בקטע דוגמאות קוד.
כללי סשנים
תוסף יכול להכיל עד 5,000 כללי סשן. הוא נחשף בתור MAX_NUMBER_OF_SESSION_RULES
.
לפני גרסה 120 של Chrome, המגבלה הייתה 5,000 כללים דינמיים וכללי סשן בשילוב.
כללים דינמיים
אפשר להגדיר לתוסף לפחות 5,000 כללים דינמיים. הוא נחשף בתור MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
החל מ-Chrome 121, יש מגבלה גדולה יותר של 30,000 כללים זמינים לכללים דינמיים בטוחים, שנחשפים בתור MAX_NUMBER_OF_DYNAMIC_RULES
. כללים לא בטוחים שנוספו במסגרת המגבלה של 5,000 ייכללו גם במגבלה הזו.
לפני הגרסה 120 של Chrome, המגבלה הייתה 5,000 כללי סשן וכללים דינמיים בשילוב.
כללים שמשתמשים בביטויים רגולריים
אפשר להשתמש בביטויים רגולריים בכל סוגי הכללים, אבל המספר הכולל של כללי ביטויים רגולריים מכל סוג לא יכול לחרוג מ-1,000. הערך הזה נקרא MAX_NUMBER_OF_REGEX_RULES.
בנוסף, כל כלל צריך להיות קטן מ-2KB אחרי הידור. הזמן הזה תלוי בערך של 'זמן עיבוד', והוא קשור בערך גס למורכבות של הכלל. אם תנסו לטעון כלל שחורג מהמגבלה הזו, תוצג אזהרה כמו זו שבהמשך והכלל יתעלם.
rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.
אינטראקציות עם שירותי עבודה
ה-declarativeNetRequest חל רק על בקשות שמגיעות ל-stack הרשת. התגובה הזו כוללת תגובות מהמטמון של HTTP, אבל יכול להיות שהיא לא תכלול תגובות שעוברות דרך הטיפול של onfetch
ב-service worker. declarativeNetRequest לא ישפיע על תגובות שנוצרו על ידי ה-service worker או שאוחזרו מ-CacheStorage
, אבל הוא ישפיע על קריאות ל-fetch()
שבוצעו ב-service worker.
משאבים שזמינים באינטרנט
כלל declarativeNetRequest לא יכול להפנות אוטומטית מבקשה למשאב ציבורי למשאב שאין אליו גישה מהאינטרנט. אם תנסו לעשות את זה תוצג לכם הודעת שגיאה. זה נכון גם אם המשאב שמצוין ונגיש באינטרנט הוא בבעלות התוסף להפניה אוטומטית. כדי להצהיר על משאבים ל-declarativeNetRequest, משתמשים במערך "web_accessible_resources"
של המניפסט.
שינוי הכותרות
אפשר לבצע את פעולת ההוספה רק בכותרות הבאות: accept
, accept-encoding
, accept-language
, access-control-request-headers
, cache-control
, connection
, content-language
, cookie
, forwarded
, if-match
, if-none-match
, keep-alive
, range
, te
, trailer
, transfer-encoding
, upgrade
, user-agent
, via
, want-digest
, x-forwarded-for
.
דוגמאות
דוגמאות לקוד
עדכון כללים דינמיים
בדוגמה הבאה מוצגת קריאה ל-updateDynamicRules()
. ההליך ל-updateSessionRules()
זהה.
// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await chrome.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);
// Use the arrays to update the dynamic rules
await chrome.declarativeNetRequest.updateDynamicRules({
removeRuleIds: oldRuleIds,
addRules: newRules
});
עדכון של כללי קבוצות סטטיות
בדוגמה הבאה מוסבר איך מפעילים ומשביתים כללי מדיניות תוך התחשבות במספר הכללים הסטטיים הזמינים ובמספר המקסימלי של כללי מדיניות סטטיים שפועלים. צריך לעשות זאת כשמספר הכללים הסטטיים שנחוצים חורג מהמספר המותר. כדי שהפעולה הזו תפעל, חלק מכללי המדיניות צריכים להיות מותקנים בזמן שחלקם מושבתים (הגדרת "Enabled"
ל-false
בקובץ המניפסט).
async function updateStaticRules(enableRulesetIds, disableCandidateIds) {
// Create the options structure for the call to updateEnabledRulesets()
let options = { enableRulesetIds: enableRulesetIds }
// Get the number of enabled static rules
const enabledStaticCount = await chrome.declarativeNetRequest.getEnabledRulesets();
// Compare rule counts to determine if anything needs to be disabled so that
// new rules can be enabled
const proposedCount = enableRulesetIds.length;
if (enabledStaticCount + proposedCount > chrome.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
options.disableRulesetIds = disableCandidateIds
}
// Update the enabled static rules
await chrome.declarativeNetRequest.updateEnabledRulesets(options);
}
דוגמאות לכללים
הדוגמאות הבאות ממחישות איך Chrome מקצה עדיפות לכללים בתוסף. כשבודקים אותם, כדאי לפתוח את כללי העדיפות בחלון נפרד.
המפתח priority
הדוגמאות האלה מחייבות הרשאת מארח ל-*://*.example.com/*
.
כדי לחשב את העדיפות של כתובת URL מסוימת, צריך לבדוק את המפתח "priority"
(שהוא מוגדר על ידי המפתח), את המפתח "action"
ואת המפתח "urlFilter"
. הדוגמאות האלה מתייחסות לקובץ הכללים לדוגמה שמוצג בהמשך.
- ניווט לכתובת https://google.com
- שתי כללים חלים על כתובת ה-URL הזו: הכללים עם המזהים 1 ו-4. הכלל עם המזהה 1 חל כי לפעולות
"block"
יש עדיפות גבוהה יותר מפעולות"redirect"
. שאר הכללים לא חלים כי הם מיועדים לכתובות URL ארוכות יותר. - ניווט לכתובת https://google.com/1234
- בגלל כתובת ה-URL הארוכה יותר, הכלל עם המזהה 2 תואם עכשיו בנוסף לכללים עם המזהים 1 ו-4. הכלל עם המזהה 2 חל כי ל-
"allow"
יש עדיפות גבוהה יותר מאשר ל-"block"
ול-"redirect"
. - ניווט לכתובת https://google.com/12345
- כל ארבעת הכללים תואמים לכתובת ה-URL הזו. הכלל עם המזהה 3 חל כי העדיפות שלו, שהוגדרה על ידי המפתח, היא הגבוהה ביותר בקבוצה.
[
{
"id": 1,
"priority": 1,
"action": { "type": "block" },
"condition": {"urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
},
{
"id": 2,
"priority": 1,
"action": { "type": "allow" },
"condition": { "urlFilter": "||google.com/123", "resourceTypes": ["main_frame"] }
},
{
"id": 3,
"priority": 2,
"action": { "type": "block" },
"condition": { "urlFilter": "||google.com/12345", "resourceTypes": ["main_frame"] }
},
{
"id": 4,
"priority": 1,
"action": { "type": "redirect", "redirect": { "url": "https://example.com" } },
"condition": { "urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
},
]
כתובות אתרים להפניה מחדש
בדוגמה הבאה נדרשת הרשאת מארח ל-*://*.example.com/*
.
בדוגמה הבאה מוסבר איך להפנות אוטומטית בקשה מ-example.com לדף בתוך התוסף עצמו. נתיב התוסף /a.jpg
מומר ל-chrome-extension://EXTENSION_ID/a.jpg
, כאשר EXTENSION_ID
הוא המזהה של התוסף. כדי שהפעולה הזו תפעל, צריך להצהיר במניפסט על /a.jpg
כמשאב שגלוי באינטרנט.
{
"id": 1,
"priority": 1,
"action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
"condition": {
"urlFilter": "||https://www.example.com/",
"resourceTypes": ["main_frame"]
}
}
בדוגמה הבאה נעשה שימוש במפתח "transform"
כדי להפנות לכתובת של תת-דומיין של example.com. הקוד משתמש בציון (anchor) של שם דומיין ("||") כדי ליירט בקשות עם כל סכימה מ-example.com. המפתח "scheme"
ב-"transform"
מציין שבהפניות אוטומטיות לתת-הדומיין תמיד נעשה שימוש ב-"https".
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"transform": { "scheme": "https", "host": "new.example.com" }
}
},
"condition": {
"urlFilter": "||example.com/",
"resourceTypes": ["main_frame"]
}
}
בדוגמה הבאה נעשה שימוש בביטויים רגולריים כדי להפנות אוטומטית מ-https://www.abc.xyz.com/path
אל https://abc.xyz.com/path
. במפתח "regexFilter"
, שימו לב לאופן שבו נשמרים בריחה של נקודות, ולכך שקבוצת התיעוד בוחרת את 'abc' או את 'def'. המפתח "regexSubstitution"
מציין את ההתאמה הראשונה שהוחזרה של הביטוי הרגולרי באמצעות \1. במקרה כזה, המערכת מתעדת את הערך 'abc' מכתובת ה-URL שהופנתה ומציבה אותו במקום החלפה.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"regexSubstitution": "https://\\1.xyz.com/"
}
},
"condition": {
"regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
"resourceTypes": [
"main_frame"
]
}
}
כותרות
בדוגמה הבאה, כל קובצי ה-cookie יוסרו גם מהמסגרת הראשית וגם מכל המסגרות המשניות.
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"requestHeaders": [{ "header": "cookie", "operation": "remove" }]
},
"condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}
סוגים
DomainType
השדה הזה מתאר אם הבקשה היא מצד ראשון או מצד שלישי ביחס למסגרת שבה היא נוצרה. בקשה נחשבת לצד ראשון אם יש לה את אותו דומיין (eTLD+1) כמו המסגרת שממנה הבקשה נשלחה.
Enum
"firstParty"
בקשת הרשת היא צד ראשון ביחס למסגרת שבה היא נוצרה.
"thirdParty"
בקשת הרשת היא צד שלישי ביחס למסגרת שבה היא נוצרה.
ExtensionActionOptions
מאפיינים
-
displayActionCountAsBadgeText
בוליאני אופציונלי
האם להציג באופן אוטומטי את מספר הפעולות בדף כטקסט התג של התוסף. ההעדפה הזו נשמרת בין סשנים.
-
tabUpdate
TabActionCountUpdate אופציונלי
Chrome מגרסה 89 ואילךפרטים על האופן שבו צריך לשנות את מספר הפעולות בכרטיסייה.
GetDisabledRuleIdsOptions
מאפיינים
-
rulesetId
מחרוזת
המזהה התואם ל-
Ruleset
סטטי.
GetRulesFilter
מאפיינים
-
ruleIds
number[] אופציונלי
אם יצוין מזהה, ייכללו רק כללים עם מזהי התאמה.
HeaderInfo
מאפיינים
-
excludedValues
string[] אופציונלי
אם צוין, התנאי הזה לא יתאים אם הכותרת קיימת אבל הערך שלה מכיל לפחות רכיב אחד מהרשימה הזו. נעשה כאן שימוש באותו תחביר של תבנית ההתאמה כמו ב-
values
. -
header
מחרוזת
שם הכותרת. התנאי הזה תואם לשם רק אם לא צוינו גם
values
וגםexcludedValues
. -
ערכים
string[] אופציונלי
אם צוין, התנאי הזה מתקיים אם הערך של הכותרת תואם לתבנית אחת לפחות ברשימה הזו. התכונה הזו תומכת בהתאמה של ערכי כותרות ללא קשר לאותיות רישיות, וגם במבנים הבאים:
'*' : תואם לכל מספר תווים.
'?' : תואם לאפס תווים או לתו אחד.
אפשר לסמן את התווים '*' ו-'?' בתו בריחה (escape) של קו נטוי לאחור, למשל '\*' ו-'\?'
HeaderOperation
כאן מתוארות הפעולות האפשריות של כלל 'modifyHeaders'.
Enum
append
הוספת רשומה חדשה לכותרת שצוינה. הפעולה הזו לא נתמכת בכותרות של בקשות.
"set"
הגדרת ערך חדש לכותרת שצוינה, והסרה של כותרות קיימות עם אותו שם.
"remove"
הסרת כל הרשומות של הכותרת שצוינה.
IsRegexSupportedResult
מאפיינים
-
isSupported
בוליאני
-
סיבה
UnsupportedRegexReason אופציונלי
הסיבה לכך שאין תמיכה בביטוי הרגולרי. האפשרות הזו מוצגת רק אם הערך של
isSupported
הוא false.
MatchedRule
מאפיינים
-
ruleId
number
מזהה של כלל תואם.
-
rulesetId
מחרוזת
המזהה של
Ruleset
שהכלל הזה שייך אליו. לכלל שמקורו בקבוצת הכללים הדינמיים, הערך יהיהDYNAMIC_RULESET_ID
.
MatchedRuleInfo
מאפיינים
-
כלל
-
tabId
number
מזהה הכרטיסייה (tabId) שממנה נשלחה הבקשה, אם הכרטיסייה עדיין פעילה. אחרת, -1.
-
timeStamp
number
המועד שבו הכלל התאים. חותמות הזמן יתאימו למוסכמה של JavaScript לזמנים, כלומר מספר אלפיות השנייה מאז תחילת התקופה של זמן מערכת.
MatchedRuleInfoDebug
מאפיינים
-
בקשה
פרטים על הבקשה שבה הכלל התאים.
-
כלל
MatchedRulesFilter
מאפיינים
-
minTimeStamp
מספר אופציונלי
אם מצוין, המערכת תתאים רק לכללים אחרי חותמת הזמן שצוינה.
-
tabId
מספר אופציונלי
אם מצוין, המערכת תתאים רק כללים מהכרטיסייה הזו. אם הערך מוגדר כ--1, המערכת תתאים כללים שלא משויכים לכרטיסייה פעילה כלשהי.
ModifyHeaderInfo
מאפיינים
-
header
מחרוזת
שם הכותרת שרוצים לשנות.
-
פעולה
הפעולה שתתבצע בכותרת.
-
ערך
מחרוזת אופציונלי
הערך החדש של הכותרת. צריך לציין אותו בפעולות
append
ו-set
.
QueryKeyValue
מאפיינים
-
מקש
מחרוזת
-
replaceOnly
בוליאני אופציונלי
גרסה 94 ואילך של Chromeאם הערך הוא True, מפתח השאילתה יוחלף רק אם הוא כבר קיים. אחרת, המפתח יתווסף גם אם הוא חסר. ברירת המחדל היא false.
-
ערך
מחרוזת
QueryTransform
מאפיינים
-
addOrReplaceParams
QueryKeyValue[] אופציונלי
רשימת צמדי המפתח/ערך של השאילתה שרוצים להוסיף או להחליף.
-
removeParams
string[] אופציונלי
רשימת מפתחות השאילתות שרוצים להסיר.
Redirect
מאפיינים
-
extensionPath
מחרוזת אופציונלי
נתיב ביחס לספריית ההרחבה. צריך להתחיל ב-'/'.
-
regexSubstitution
מחרוזת אופציונלי
דפוס החלפה לכללים שצוין בהם
regexFilter
. ההתאמה הראשונה שלregexFilter
בכתובת ה-URL תוחלף בתבנית הזו. בתוךregexSubstitution
, אפשר להשתמש בספרות עם בריחה (backslash) (\1 עד \9) כדי להוסיף את קבוצות התיעוד התואמות. \0 מתייחס לכל הטקסט התואם. -
ונבצע טרנספורמציה
URLTransform אופציונלי
טרנספורמציות של כתובות URL לביצוע.
-
כתובת אתר
מחרוזת אופציונלי
כתובת ה-URL להפניה אוטומטית. אסור להשתמש בהפניות אוטומטיות לכתובות URL של JavaScript.
RegexOptions
מאפיינים
-
isCaseSensitive
בוליאני אופציונלי
אם הערך שצוין בשדה
regex
תלוי אותיות רישיות. ברירת המחדל היא true. -
ביטוי רגולרי (regex)
מחרוזת
הביטוי הרגולרי לבדיקה.
-
requireCapturing
בוליאני אופציונלי
האם צריך לתעד את
regex
שצוין. התיעוד נדרש רק לכללי הפניה אוטומטית שצוינה בהם פעולה מסוגregexSubstition
. ברירת המחדל היא false.
RequestDetails
מאפיינים
-
documentId
מחרוזת אופציונלי
Chrome מגרסה 106 ואילךהמזהה הייחודי של מסמך המסגרת, אם הבקשה היא למסגרת.
-
documentLifecycle
DocumentLifecycle אופציונלי
גרסה 106 ואילך של Chromeמחזור החיים של מסמך המסגרת, אם הבקשה היא למסגרת.
-
frameId
number
הערך 0 מציין שהבקשה מתרחשת בפריים הראשי. ערך חיובי מציין את המזהה של פריים משנה שבו מתרחשת הבקשה. אם המסמך של מסגרת (משנית) נטען (
type
הואmain_frame
אוsub_frame
), הערך שלframeId
מציין את המזהה של המסגרת הזו, ולא את המזהה של המסגרת החיצונית. מזהי המסגרות הם ייחודיים בכרטיסייה. -
frameType
FrameType אופציונלי
גרסה 106 ואילך של Chromeסוג המסגרת, אם הבקשה היא למסגרת.
-
מפעיל
מחרוזת אופציונלי
המקור שבו הבקשה הופעל. המצב הזה לא משתנה דרך הפניות אוטומטיות. אם מדובר במקור אטום, המערכת תשתמש במחרוזת 'null'.
-
method
מחרוזת
שיטת HTTP רגילה.
-
parentDocumentId
מחרוזת אופציונלי
Chrome מגרסה 106 ואילךהמזהה הייחודי של מסמך ההורה של המסגרת, אם הבקשה היא למסגרת שיש לה הורה.
-
parentFrameId
number
המזהה של המסגרת שמקיפה את המסגרת ששלחה את הבקשה. הערך מוגדר ל-1 אם לא קיים מסגרת הורה.
-
requestId
מחרוזת
מזהה הבקשה. מזהי הבקשות הם ייחודיים בסשן הדפדפן.
-
tabId
number
המזהה של הכרטיסייה שבה מתבצעת הבקשה. מגדירים את הערך כ--1 אם הבקשה לא קשורה לכרטיסייה.
-
סוג
סוג המשאב של הבקשה.
-
כתובת אתר
מחרוזת
כתובת ה-URL של הבקשה.
RequestMethod
כאן מתוארת שיטת הבקשה של ה-HTTP לבקשת רשת.
Enum
"connect"
"delete"
"get"
"head"
"options"
"patch"
"post"
"put"
"other"
ResourceType
כאן מתואר סוג המשאב של בקשת הרשת.
Enum
"main_frame"
"sub_frame"
"stylesheet"
"script"
"image"
"font"
"object"
"xmlhttprequest"
"ping"
"csp_report"
"media"
"websocket"
"webtransport"
"webbundle"
"other"
Rule
מאפיינים
-
פעולה
הפעולה שתתבצע אם הכלל הזה יתאים.
-
תנאי
התנאי שבו הכלל הזה מופעל.
-
id [מזהה]
number
מזהה שמזהה באופן ייחודי כלל. חובה, והערך צריך להיות גדול או שווה ל-1.
-
הקמפיין
מספר אופציונלי
עדיפות הכלל. ברירת המחדל היא 1. אם מצוין ערך, הוא צריך להיות גדול או שווה ל-1.
RuleAction
מאפיינים
-
הפניה לכתובת אתר אחרת
הפניה אוטומטית אופציונלי
תיאור האופן שבו צריך לבצע את ההפניה האוטומטית. תקף רק לכללי הפניה אוטומטית.
-
requestHeaders
ModifyHeaderInfo[] אופציונלי
Chrome מגרסה 86 ואילךכותרות הבקשה שרוצים לשנות. תקף רק אם הערך של RuleActionType הוא 'modifyHeaders'.
-
responseHeaders
ModifyHeaderInfo[] אופציונלי
Chrome מגרסה 86 ואילךכותרות התשובה שרוצים לשנות לבקשה. תקף רק אם הערך של RuleActionType הוא 'modifyHeaders'.
-
סוג
סוג הפעולה שרוצים לבצע.
RuleActionType
תיאור סוג הפעולה שצריך לבצע אם מתקיים תנאי מסוים של כלל.
Enum
"block"
חסימת הבקשה מהרשת.
"redirect"
הפניה אוטומטית של בקשת הרשת.
"allow"
אישור הבקשה מהרשת. הבקשה לא תתפס אם יש כלל הרשאה שתואם לה.
"upgradeScheme"
שדרוג הסכימה של כתובת ה-URL של בקשת הרשת ל-https אם הבקשה היא http או ftp.
"modifyHeaders"
שינוי כותרות הבקשה/התגובה מהבקשה ברשת.
"allowAllRequests"
אישור כל הבקשות בהיררכיית המסגרת, כולל בקשת המסגרת עצמה.
RuleCondition
מאפיינים
-
domainType
DomainType אופציונלי
מציין אם הבקשה מהרשת היא מצד ראשון או מצד שלישי לדומיין שממנו היא הגיעה. אם השדה הזה לא יצוין, כל הבקשות יאושרו.
-
דומיינים
string[] אופציונלי
הוצאה משימוש החל מ-Chrome 101במקום זאת, צריך להשתמש ב-
initiatorDomains
הכלל יתאים רק לבקשות רשת שמקורן ברשימת
domains
. -
excludedDomains
string[] אופציונלי
הוצאה משימוש החל מ-Chrome 101במקום זאת, צריך להשתמש ב-
excludedInitiatorDomains
הכלל לא יתאים לבקשות רשת שמקורן ברשימת
excludedDomains
. -
excludedInitiatorDomains
string[] אופציונלי
גרסה 101 ואילך של Chromeהכלל לא יתאים לבקשות רשת שמקורן ברשימת
excludedInitiatorDomains
. אם הרשימה ריקה או לא מוגדרת, לא ייכללו דומיינים. האפשרות הזו מקבלת עדיפות על פניinitiatorDomains
.הערות:
- מותר גם להשתמש בתתי-דומיינים כמו 'a.example.com'.
- הרשומות חייבות להכיל רק תווים מסוג ASCII.
- שימוש בקידוד punycode לדומיינים בינלאומיים.
- ההתאמה מתבצעת ליזם הבקשה ולא לכתובת ה-URL של הבקשה.
- גם תת-דומיינים של הדומיינים המפורטים נכללים בהחרגה.
-
excludedRequestDomains
string[] אופציונלי
גרסה 101 ואילך של Chromeהכלל לא יתאים לבקשות רשת כשהדומיינים יהיו תואמים לאחד מהדומיינים ברשימה
excludedRequestDomains
. אם הרשימה ריקה או לא מוגדרת, לא ייכללו דומיינים. האפשרות הזו מקבלת עדיפות על פניrequestDomains
.הערות:
- מותר גם להשתמש בתתי-דומיינים כמו 'a.example.com'.
- הרשומות חייבות להכיל רק תווים מסוג ASCII.
- שימוש בקידוד punycode לדומיינים בינלאומיים.
- גם תת-דומיינים של הדומיינים המפורטים נכללים בהחרגה.
-
excludedRequestMethods
RequestMethod[] אופציונלי
Chrome מגרסה 91 ואילךרשימה של שיטות בקשה שהכלל לא יתאים להן. צריך לציין רק אחד מבין
requestMethods
ו-excludedRequestMethods
. אם לא מציינים אף אחת מהן, מתבצעת התאמה לכל שיטות הבקשה. -
excludedResourceTypes
ResourceType[] אופציונלי
רשימה של סוגי המשאבים שהכלל לא יתאים להם. צריך לציין רק אחד מבין
resourceTypes
ו-excludedResourceTypes
. אם לא צוין אף אחד מהם, כל סוגי המשאבים חוסמים מלבד 'main_frame'. -
excludedResponseHeaders
HeaderInfo[] אופציונלי
Chrome מגרסה 128 ואילךהכלל לא תואם אם הבקשה תואמת לתנאי כלשהו של כותרת התגובה ברשימה הזו (אם צוין). אם מציינים גם את
excludedResponseHeaders
וגם אתresponseHeaders
, הנכסexcludedResponseHeaders
מקבל עדיפות. -
excludedTabIds
number[] אופציונלי
Chrome מגרסה 92 ואילךרשימה של
tabs.Tab.id
שהכלל לא צריך להתאים אליהם. מזההtabs.TAB_ID_NONE
לא כולל בקשות שלא מגיעות מכרטיסייה. התכונה נתמכת רק בכללים ברמת הסשן. -
initiatorDomains
string[] אופציונלי
גרסה 101 ואילך של Chromeהכלל יתאים רק לבקשות רשת שמקורן ברשימת
initiatorDomains
. אם הרשימה לא תצוין, הכלל יחול על בקשות מכל הדומיינים. אסור להשתמש ברשימה ריקה.הערות:
- מותר גם להשתמש בתתי-דומיינים כמו 'a.example.com'.
- הרשומות חייבות להכיל רק תווים מסוג ASCII.
- שימוש בקידוד punycode לדומיינים בינלאומיים.
- ההתאמה מתבצעת ליזם הבקשה ולא לכתובת ה-URL של הבקשה.
- מתבצעת התאמה גם לתת-דומיינים של הדומיינים המפורטים.
-
isUrlFilterCaseSensitive
בוליאני אופציונלי
אם השדה
urlFilter
אוregexFilter
(השדה שצוין) תלוי אותיות רישיות. ברירת המחדל היא FALSE. -
regexFilter
מחרוזת אופציונלי
ביטוי רגולרי שיתאים לכתובת ה-URL של בקשת הרשת. הביטוי הזה תואם לתחביר של RE2.
הערה: אפשר לציין רק אחד מתוך
urlFilter
אוregexFilter
.הערה: השדה
regexFilter
חייב להיות מורכב רק מתווי ASCII. המערכת מבצעת התאמה לכתובת URL שבה המארח מקודד בפורמט punycode (במקרה של דומיינים בינלאומיים) וכל תו אחר שאינו ASCII מקודד ב-UTF-8. -
requestDomains
string[] אופציונלי
גרסה 101 ואילך של Chromeהכלל יתאים לבקשות רשת רק אם הדומיין תואם לאחד מהדומיינים ברשימה
requestDomains
. אם הרשימה לא תצוין, הכלל יחול על בקשות מכל הדומיינים. אסור להשתמש ברשימה ריקה.הערות:
- מותר גם להשתמש בתתי-דומיינים כמו 'a.example.com'.
- הרשומות חייבות להכיל רק תווים מסוג ASCII.
- שימוש בקידוד punycode לדומיינים בינלאומיים.
- מתבצעת התאמה גם לתת-דומיינים של הדומיינים המפורטים.
-
requestMethods
RequestMethod[] אופציונלי
Chrome מגרסה 91 ואילךרשימה של שיטות בקשה של HTTP שהכלל יכול להתאים להן. אסור להשתמש ברשימה ריקה.
הערה: ציון תנאי כלל
requestMethods
יביא גם להחרגת בקשות שאינן HTTP(s), בעוד שציוןexcludedRequestMethods
לא יביא להחרגה כזו. -
resourceTypes
ResourceType[] אופציונלי
רשימת סוגי המשאבים שהכלל יכול להתאים להם. אסור להשתמש ברשימה ריקה.
הערה: צריך לציין את זה לכללי
allowAllRequests
, וניתן לכלול רק את סוגי המשאביםsub_frame
ו-main_frame
. -
responseHeaders
HeaderInfo[] אופציונלי
Chrome מגרסה 128 ואילךהכלל תואם אם הבקשה תואמת לתנאי כלשהו של כותרת התגובה ברשימה הזו (אם צוין).
-
tabIds
number[] אופציונלי
Chrome מגרסה 92 ואילךרשימת
tabs.Tab.id
שעליהן הכלל צריך להתאים. מזההtabs.TAB_ID_NONE
תואם לבקשות שלא מגיעות מכרטיסייה. אסור להשתמש ברשימה ריקה. התכונה נתמכת רק בכללים ברמת הסשן. -
urlFilter
מחרוזת אופציונלי
הדפוס שמשויך לכתובת ה-URL של בקשת הרשת. מבנים נתמכים:
'*' : תו כללי לחיפוש: תואם לכל מספר תווים.
'|' : עוגן ימין/שמאל: אם משתמשים בו באחד מהקצוות של התבנית, הוא מציין את ההתחלה/הסיום של כתובת ה-URL, בהתאמה.
'||' : עוגן של שם דומיין: אם משתמשים בו בתחילת התבנית, הוא מציין את ההתחלה של דומיין (משני) של כתובת ה-URL.
'^' : תו מפריד: התו הזה תואם לכל דבר מלבד אות, ספרה או אחד מהערכים הבאים:
_
,-
,.
או%
. היא גם תואמת לסוף כתובת ה-URL.לכן,
urlFilter
מורכב מהחלקים הבאים: (עוגן שמאל/שם דומיין אופציונלי) + דפוס + (עוגן ימין אופציונלי).אם לא צוין, תתבצע התאמה לכל כתובות ה-URL. אסור להשתמש במחרוזת ריקה.
אסור להשתמש בתבנית שמתחילה ב-
||*
. במקום זאת, אתם צריכים להשתמש ב-*
.הערה: אפשר לציין רק אחד מתוך
urlFilter
אוregexFilter
.הערה: השדה
urlFilter
חייב להיות מורכב רק מתווי ASCII. המערכת מבצעת התאמה לכתובת URL שבה המארח מקודד בפורמט punycode (במקרה של דומיינים בינלאומיים) וכל תו אחר שאינו ASCII מקודד ב-UTF-8. לדוגמה, כשכתובת ה-URL של הבקשה היא http://abc.рф?q=ф, המערכת תתאים אתurlFilter
לכתובת ה-URL http://abc.xn--p1ai/?q=%D1%84.
Ruleset
מאפיינים
-
פעיל
בוליאני
האם מערכת הכללים מופעלת כברירת מחדל.
-
id [מזהה]
מחרוזת
מחרוזת לא ריקה שמזהה באופן ייחודי את קבוצת הכללים. מזהי אירועים שמתחילים ב-'_' שמורים לשימוש פנימי בלבד.
-
נתיב
מחרוזת
הנתיב של קבוצת הכללים ב-JSON ביחס לספריית ההרחבה.
RulesMatchedDetails
מאפיינים
-
rulesMatchedInfo
כללים שתואמים למסנן הנתון.
TabActionCountUpdate
מאפיינים
-
הוסף
number
הסכום שבו צריך להגדיל את מספר הפעולות בכרטיסייה. ערכים שליליים יגרמו לירידה במספר.
-
tabId
number
הכרטיסייה שעבורה רוצים לעדכן את מספר הפעולות.
TestMatchOutcomeResult
מאפיינים
-
matchedRules
הכללים (אם יש כאלה) שתואמים לבקשה היפותטית.
TestMatchRequestDetails
מאפיינים
-
מפעיל
מחרוזת אופציונלי
כתובת ה-URL של המאתחל (אם יש כזו) של הבקשה ההיפותטית.
-
method
RequestMethod אופציונלי
שיטת ה-HTTP הרגילה של הבקשה ההיפותטית. ערך ברירת המחדל הוא 'get' לבקשות HTTP, והוא מתעלם מבקשות שאינן בקשות HTTP.
-
responseHeaders
אובייקט אופציונלי
גרסה 129 ואילך של Chromeהכותרות שסופקו בתגובה היפותטית, אם הבקשה לא נחסמה או הועברה לכתובת אחרת לפני שהיא נשלחה. מיוצג כאובייקט שממפה שם כותרת לרשימה של ערכי מחרוזות. אם לא מציינים את הערך, התגובה ההיפותטית תחזיר כותרות תגובה ריקות, שיכולות להתאים לכללים שמתאימים לתנאי של אי-קיומ כותרות. לדוגמה:
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}
-
tabId
מספר אופציונלי
המזהה של הכרטיסייה שבה מתבצעת הבקשה היפותטית. לא חייב להתאים למזהה כרטיסייה אמיתי. ברירת המחדל היא -1, כלומר הבקשה לא קשורה לכרטיסייה.
-
סוג
סוג המשאב של הבקשה היפותטית.
-
כתובת אתר
מחרוזת
כתובת ה-URL של הבקשה ההיפותטית.
UnsupportedRegexReason
תיאור הסיבה לכך שביטוי רגולרי נתון לא נתמך.
Enum
"syntaxError"
הביטוי הרגולרי שגוי מבחינה תחבירית או שהוא כולל תכונות שלא זמינות בתחביר של RE2.
"memoryLimitExceeded"
הביטוי הרגולרי חורג ממגבלת הזיכרון.
UpdateRuleOptions
מאפיינים
-
addRules
Rule[] אופציונלי
הכללים שרוצים להוסיף.
-
removeRuleIds
number[] אופציונלי
המזהים של הכללים שרוצים להסיר. המערכת תתעלם ממזהים לא חוקיים.
UpdateRulesetOptions
מאפיינים
UpdateStaticRulesOptions
מאפיינים
URLTransform
מאפיינים
-
מקטע (fragment)
מחרוזת אופציונלי
החלק החדש של הבקשה. השדה צריך להיות ריק, ובמקרה כזה החלק הקיים יימחק. לחלופין, השדה צריך להתחיל ב-'#'.
-
מארח
מחרוזת אופציונלי
המארח החדש של הבקשה.
-
סיסמה
מחרוזת אופציונלי
הסיסמה החדשה לבקשה.
-
נתיב
מחרוזת אופציונלי
הנתיב החדש של הבקשה. אם השדה ריק, הנתיב הקיים יימחק.
-
יציאה
מחרוזת אופציונלי
היציאה החדשה לבקשה. אם השדה ריק, היציאה הקיימת תימחק.
-
שאילתה
מחרוזת אופציונלי
השאילתה החדשה של הבקשה. השדה צריך להיות ריק, ובמקרה כזה השאילתה הקיימת תימחק. לחלופין, השדה צריך להתחיל ב-'?'.
-
queryTransform
QueryTransform אופציונלי
הוספה, הסרה או החלפה של צמד מפתח/ערך של שאילתה.
-
סכמה
מחרוזת אופציונלי
הסכימה החדשה של הבקשה. הערכים המותרים הם http, https, ftp ו-chrome-extension.
-
שם משתמש
מחרוזת אופציונלי
שם המשתמש החדש של הבקשה.
מאפיינים
DYNAMIC_RULESET_ID
מזהה קבוצת הכללים של הכללים הדינמיים שנוספו על ידי התוסף.
ערך
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
מרווח הזמן שבו אפשר לבצע שיחות MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules
, שמצוין בדקות. שיחות נוספות ייכשלו באופן מיידי ויגדירו את הערך runtime.lastError
. הערה: קריאות getMatchedRules
שמשויכות לתנועת משתמש פטורות מהמכסה.
ערך
10
GUARANTEED_MINIMUM_STATIC_RULES
המספר המינימלי של כללי סטטיקה שמובטח לתוסף בכל קבוצות הכללים הסטטיות שהופעלו. כללים מעבר למגבלה הזו ייכללו במגבלה הגלובלית של כללים סטטיים.
ערך
30000
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
מספר הפעמים שניתן להפעיל את getMatchedRules
בתקופה של GETMATCHEDRULES_QUOTA_INTERVAL
.
ערך
20
MAX_NUMBER_OF_DYNAMIC_RULES
המספר המקסימלי של כללים דינמיים שאפשר להוסיף באמצעות תוסף.
ערך
30000
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
המספר המקסימלי של Rulesets
סטטיים שאפשר להפעיל בכל פעם בתוסף.
ערך
50
MAX_NUMBER_OF_REGEX_RULES
המספר המקסימלי של כללי ביטויים רגולריים שאפשר להוסיף באמצעות תוסף. המגבלה הזו נבדקת בנפרד לגבי קבוצת הכללים הדינמיים וכללים שצוינו בקובץ המשאבים של הכללים.
ערך
1,000
MAX_NUMBER_OF_SESSION_RULES
המספר המקסימלי של כללים ברמת הסשן שאפשר להוסיף באמצעות תוסף.
ערך
5000
MAX_NUMBER_OF_STATIC_RULESETS
המספר המקסימלי של Rulesets
סטטיים שאפשר לציין בתוסף כחלק ממפתח המניפסט "rule_resources"
.
ערך
100
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
המספר המקסימלי של כללים דינמיים 'לא בטוחים' שאפשר להוסיף לתוסף.
ערך
5000
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
המספר המקסימלי של כללים 'לא בטוחים' ברמת הסשן שאפשר להוסיף באמצעות תוסף.
ערך
5000
SESSION_RULESET_ID
מזהה קבוצת הכללים של הכללים ברמת הסשן שנוספו על ידי התוסף.
ערך
"_session"
Methods
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
callback?: function,
)
הפונקציה מחזירה את מספר הכללים הסטטיים שאפשר להפעיל בתוסף לפני שמגיעים למגבלה הגלובלית של כללים סטטיים.
פרמטרים
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(count: number) => void
-
count
number
-
החזרות
-
Promise<number>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
callback?: function,
)
הפונקציה מחזירה את רשימת הכללים הסטטיים ב-Ruleset
שמושבתים כרגע.
פרמטרים
-
אפשרויות
מציין את קבוצת הכללים שעבורה רוצים לשלוח שאילתה.
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(disabledRuleIds: number[]) => void
-
disabledRuleIds
number[]
-
החזרות
-
Promise<number[]>
יש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
callback?: function,
)
הפונקציה מחזירה את קבוצת הכללים הדינמיים הנוכחית של התוסף. קריאה יכולה לסנן את רשימת הכללים שאוחזרו על ידי ציון filter
.
פרמטרים
-
סינון
GetRulesFilter אופציונלי
גרסה 111 ואילך של Chromeאובייקט לסינון רשימת הכללים שאוחזרו.
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(rules: Rule[]) => void
-
כללים
Rule[]
-
החזרות
-
Promise<Rule[]>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(
callback?: function,
)
הפונקציה מחזירה את המזהים של הקבוצה הנוכחית של כללי קבוצות סטטיות מופעלות.
פרמטרים
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(rulesetIds: string[]) => void
-
rulesetIds
string[]
-
החזרות
-
Promise<string[]>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
callback?: function,
)
הפונקציה מחזירה את כל הכללים שתואמים לתוסף. מבצעי הקריאה החוזרת יכולים לסנן את רשימת הכללים שתואמים על ידי ציון filter
. השיטה הזו זמינה רק לתוספים עם ההרשאה "declarativeNetRequestFeedback"
או עם ההרשאה "activeTab"
שניתנה ל-tabId
שצוין ב-filter
. הערה: כללים שלא משויכים למסמך פעיל ותואמים לפני יותר מחמש דקות לא יוחזרו.
פרמטרים
-
סינון
MatchedRulesFilter אופציונלי
אובייקט לסינון רשימת הכללים התואמים.
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(details: RulesMatchedDetails) => void
-
פרטים
-
החזרות
-
Promise<RulesMatchedDetails>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
callback?: function,
)
הפונקציה מחזירה את הקבוצה הנוכחית של כללים ברמת הסשן של התוסף. קריאה יכולה לסנן את רשימת הכללים שאוחזרו על ידי ציון filter
.
פרמטרים
-
סינון
GetRulesFilter אופציונלי
גרסה 111 ואילך של Chromeאובייקט לסינון רשימת הכללים שאוחזרו.
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(rules: Rule[]) => void
-
כללים
Rule[]
-
החזרות
-
Promise<Rule[]>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
callback?: function,
)
הפונקציה בודקת אם המערכת תומכת בביטוי הרגולרי הנתון כתנאי לכלל regexFilter
.
פרמטרים
-
regexOptions
הביטוי הרגולרי לבדיקה.
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(result: IsRegexSupportedResult) => void
-
תוצאה
-
החזרות
-
Promise<IsRegexSupportedResult>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
callback?: function,
)
ההגדרה קובעת אם מספר הפעולות בכרטיסיות יוצג כטקסט התג של פעולת התוסף, ומספקת דרך להגדלת מספר הפעולות.
פרמטרים
-
אפשרויות
-
קריאה חוזרת (callback)
פונקציה אופציונלי
Chrome מגרסה 89 ואילךהפרמטר
callback
נראה כך:() => void
החזרות
-
Promise<void>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
callback?: function,
)
הפונקציה בודקת אם אחד מהכללים של declarativeNetRequest בתוסף יתאים לבקשה היפותטית. הערה: האפשרות הזו זמינה רק לתוספים לא מוצקים, כי היא מיועדת לשימוש רק במהלך פיתוח התוסף.
פרמטרים
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:(result: TestMatchOutcomeResult) => void
-
תוצאה
-
החזרות
-
Promise<TestMatchOutcomeResult>
יש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
callback?: function,
)
שינוי של קבוצת הכללים הדינמיים הנוכחית של התוסף. קודם מסירים את הכללים עם המזהים שמפורטים ב-options.removeRuleIds
, ואז מוסיפים את הכללים שמפורטים ב-options.addRules
. הערות:
- העדכון מתבצע כפעולה אטומית אחת: כל הכללים שצוינו מתווספים ומוסרים, או שמוחזרת שגיאה.
- הכללים האלה נשארים בתוקף בכל סשנים בדפדפן ובכל עדכוני התוספים.
- אי אפשר להסיר כללים סטטיים שצוינו כחלק מחבילת התוסף באמצעות הפונקציה הזו.
MAX_NUMBER_OF_DYNAMIC_RULES
הוא המספר המקסימלי של כללים דינמיים שאפשר להוסיף באמצעות תוסף. מספר כללי האבטחה הלא בטוחים לא יכול לחרוג מ-MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
פרמטרים
-
אפשרויותChrome מגרסה 87 ואילך
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:() => void
החזרות
-
Promise<void>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
callback?: function,
)
עדכון של קבוצת כללי ה-ruleset הסטטיים המופעלים בתוסף. קודם מסירים את כללי המדיניות עם המזהים שמפורטים ב-options.disableRulesetIds
, ואז מוסיפים את כללי המדיניות שמפורטים ב-options.enableRulesetIds
.
חשוב לזכור שקבוצת כללי המדיניות הסטטיים המופעלים נשמרת בין סשנים, אבל לא בין עדכוני התוספים. כלומר, מפתח המניפסט rule_resources
יקבע את קבוצת כללי המדיניות הסטטיים המופעלים בכל עדכון של התוסף.
פרמטרים
-
אפשרויותChrome מגרסה 87 ואילך
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:() => void
החזרות
-
Promise<void>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
callback?: function,
)
שינוי של קבוצת הכללים הנוכחית ברמת הסשן של התוסף. קודם מסירים את הכללים עם המזהים שמפורטים ב-options.removeRuleIds
, ואז מוסיפים את הכללים שמפורטים ב-options.addRules
. הערות:
- העדכון מתבצע כפעולה אטומית אחת: כל הכללים שצוינו מתווספים ומוסרים, או שמוחזרת שגיאה.
- הכללים האלה לא נשמרים בין סשנים, והם נשמרים בזיכרון.
MAX_NUMBER_OF_SESSION_RULES
הוא המספר המקסימלי של כללי סשן שאפשר להוסיף באמצעות תוסף.
פרמטרים
-
אפשרויות
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:() => void
החזרות
-
Promise<void>
Chrome מגרסה 91 ואילךיש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
callback?: function,
)
השבתה והפעלה של כללים סטטיים ספציפיים ב-Ruleset
. שינויים בכללים ששייכים ל-Ruleset
מושבת ייכנסו לתוקף בפעם הבאה שהוא יופעל.
פרמטרים
-
אפשרויות
-
קריאה חוזרת (callback)
פונקציה אופציונלי
הפרמטר
callback
נראה כך:() => void
החזרות
-
Promise<void>
יש תמיכה ב-Promises ב-Manifest V3 ואילך, אבל פונקציות קריאה חוזרת (callbacks) ניתנות לצורך תאימות לאחור. אי אפשר להשתמש בשניהם באותה קריאה לפונקציה. הפתרון של ההבטחה יהיה באותו סוג שהוענק ל-callback.
אירועים
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
האירוע מופעל כשמתבצע התאמה בין כלל לבקשה. האפשרות הזו זמינה רק לתוספים מסוג unpacked עם ההרשאה "declarativeNetRequestFeedback"
, כי היא מיועדת לשימוש למטרות ניפוי באגים בלבד.
פרמטרים
-
קריאה חוזרת (callback)
פונקציה
הפרמטר
callback
נראה כך:(info: MatchedRuleInfoDebug) => void
-
מידע
-