chrome.declarativeWebRequest

תיאור

הערה: ממשק ה-API הזה הוצא משימוש. במקום זאת, כדאי לעיין ב-API של declarativeNetRequest. אפשר להשתמש ב-chrome.declarativeWebRequest API כדי ליירט, לחסום או לשנות בקשות בזמן שהן בטיסה. הוא מהיר משמעותית מ-chrome.webRequest API כי אפשר לרשום כללים שמוערכים בדפדפן ולא במנוע JavaScript, מה שמקצר את זמן האחזור של הלוך ושוב ומאפשר יעילות גבוהה יותר.

הרשאות

declarativeWebRequest

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

{
  "name": "My extension",
  ...
  "permissions": [
    "declarativeWebRequest",
    "*://*/*"
  ],
  ...
}

זמינות

ערוץ בטא ‫≤ MV2

מניפסט

שימו לב: סוגים מסוימים של פעולות לא רגישות לא דורשים הרשאות מארח:

  • CancelRequest
  • IgnoreRules
  • RedirectToEmptyDocument
  • RedirectToTransparentImage

הפעולה SendMessageToExtension() דורשת הרשאות מארח לכל המארחים שרוצים להפעיל בהם הודעה באמצעות בקשות רשת.

כל הפעולות האחרות דורשות הרשאות מארח לכל כתובות ה-URL.

לדוגמה, אם "https://*.google.com/*" היא הרשאת המארח היחידה שיש לתוסף, התוסף יכול להגדיר כלל שיאפשר לו:

  • ביטול בקשה אל https://www.google.com או https://anything.else.com.
  • שליחת הודעה כשמנווטים אל https://www.google.com אבל לא אל https://something.else.com.

התוסף לא יכול להגדיר כלל להפניה אוטומטית של https://www.google.com אל https://mail.google.com.

כללים

ממשק ה-API של בקשות אינטרנט דקלרטיביות מבוסס על הרעיונות של Declarative API. אפשר לרשום כללים לאובייקט האירוע chrome.declarativeWebRequest.onRequest.

ה-API של בקשות אינטרנט דקלרטיביות תומך בסוג יחיד של קריטריונים להתאמה, RequestMatcher. התנאי RequestMatcher מתאים לבקשות רשת אם ורק אם מתקיימים כל הקריטריונים שמופיעים ברשימה. הדוגמה הבאה RequestMatcher תתאים לבקשת רשת כשהמשתמש יזין https://www.example.com בסרגל הכתובות:

var matcher = new chrome.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'example.com', schemes: ['http'] },
  resourceType: ['main_frame']
});

בקשות אל https://www.example.com יידחו על ידי RequestMatcher בגלל הסכימה. בנוסף, כל הבקשות להטמעת iframe יידחו בגלל resourceType.

כדי לבטל את כל הבקשות אל example.com, אפשר להגדיר כלל באופן הבא:

var rule = {
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'example.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};

כדי לבטל את כל הבקשות אל example.com וfoobar.com, אפשר להוסיף תנאי שני, כי כל תנאי מספיק כדי להפעיל את כל הפעולות שצוינו:

var rule2 = {
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'example.com' } }),
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: 'foobar.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};

כדי לרשום כללים, פועלים לפי השלבים הבאים:

chrome.declarativeWebRequest.onRequest.addRules([rule2]);

הערכה של תנאים ופעולות

‫Declarative Web Request API פועל לפי מודל מחזור החיים של בקשות אינטרנט של Web Request API. המשמעות היא שאפשר לבדוק תנאים רק בשלבים ספציפיים של בקשת אינטרנט, וכך גם לגבי פעולות – אפשר לבצע אותן רק בשלבים ספציפיים. בטבלאות הבאות מפורטים שלבי הבקשה שתואמים לתנאים ולפעולות.

שלבי הבקשה שבהם אפשר לעבד מאפייני תנאים.
מאפיין תנאי onBeforeRequest onBeforeSendHeaders onHeadersReceived onAuthRequired
url
resourceType
contentType
excludeContentType
responseHeaders
excludeResponseHeaders
requestHeaders
excludeRequestHeaders
thirdPartyForCookies
שלבי הבקשה שבמהלכם אפשר לבצע פעולות.
אירוע onBeforeRequest onBeforeSendHeaders onHeadersReceived onAuthRequired
AddRequestCookie
AddResponseCookie
AddResponseHeader
CancelRequest
EditRequestCookie
EditResponseCookie
IgnoreRules
RedirectByRegEx
RedirectRequest
RedirectToEmptyDocument
RedirectToTransparentImage
RemoveRequestCookie
RemoveRequestHeader
RemoveResponseCookie
RemoveResponseHeader
SendMessageToExtension
SetRequestHeader

שימוש בעדיפויות כדי לבטל כללים

אפשר לשייך כללים לעדיפויות כמו שמתואר ב-Events API. אפשר להשתמש במנגנון הזה כדי לציין חריגים. בדוגמה הבאה נחסמות כל הבקשות לתמונות בשם evil.jpg, למעט בשרת myserver.com.

var rule1 = {
  priority: 100,
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
        url: { pathEquals: 'evil.jpg' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
};
var rule2 = {
  priority: 1000,
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: { hostSuffix: '.myserver.com' } })
  ],
  actions: [
    new chrome.declarativeWebRequest.IgnoreRules({
      lowerPriorityThan: 1000 })
  ]
};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);

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

סוגים

AddRequestCookie

הוספה של קובץ Cookie לבקשה או החלפה של קובץ Cookie, במקרה שקובץ Cookie אחר עם אותו שם כבר קיים. שימו לב שעדיף להשתמש ב-Cookies API כי הוא דורש פחות משאבי מחשוב.

מאפיינים

AddResponseCookie

הוספה של קובץ Cookie לתגובה או החלפה של קובץ Cookie, במקרה שקובץ Cookie אחר עם אותו שם כבר קיים. שימו לב שעדיף להשתמש ב-Cookies API כי הוא דורש פחות משאבי מחשוב.

מאפיינים

AddResponseHeader

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

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: AddResponseHeader) => {...}

  • שם

    מחרוזת

    שם כותרת תגובת ה-HTTP.

  • ערך

    מחרוזת

    ערך כותרת תגובת HTTP.

CancelRequest

פעולת אירוע דקלרטיבית שמבטלת בקשת רשת.

מאפיינים

EditRequestCookie

עריכה של קובץ Cookie אחד או יותר של הבקשה. שימו לב שעדיף להשתמש ב-Cookies API כי הוא דורש פחות משאבי מחשוב.

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: EditRequestCookie) => {...}

  • סינון

    מסנן לקובצי Cookie שישונה. המערכת מתעלמת מכל הרשומות הריקות.

  • שינוי

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

EditResponseCookie

עריכה של קובץ Cookie אחד או יותר של תגובה. שימו לב שעדיף להשתמש ב-Cookies API כי הוא דורש פחות משאבי מחשוב.

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: EditResponseCookie) => {...}

  • מסנן לקובצי Cookie שישונה. המערכת מתעלמת מכל הרשומות הריקות.

  • שינוי

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

FilterResponseCookie

מסנן של קובץ Cookie בתגובות HTTP.

מאפיינים

  • ageLowerBound

    מספר אופציונלי

    הגבול התחתון של משך החיים של קובץ ה-Cookie (כולל), שמוגדר בשניות אחרי השעה הנוכחית. רק קובצי Cookie שתאריך התפוגה שלהם מוגדר ל 'עכשיו + ageLowerBound' או מאוחר יותר עומדים בקריטריון הזה. קובצי Cookie של סשן לא עומדים בקריטריון של המסנן הזה. משך החיים של קובץ ה-Cookie מחושב על סמך מאפייני קובץ ה-Cookie ‏max-age או expires. אם מציינים את שניהם, המערכת משתמשת בערך של max-age כדי לחשב את משך החיים של קובץ ה-Cookie.

  • ageUpperBound

    מספר אופציונלי

    הגבול העליון של משך החיים של קובץ ה-Cookie (שמצוין בשניות אחרי השעה הנוכחית). רק קובצי Cookie שתאריך ושעת התפוגה שלהם נמצאים במרווח [היום, היום + ageUpperBound] עומדים בקריטריון הזה. קובצי Cookie זמניים וקובצי Cookie שתאריך התפוגה שלהם חלף לא עומדים בקריטריון של המסנן הזה. משך החיים של קובץ ה-Cookie מחושב על סמך מאפייני קובץ ה-Cookie ‏max-age או expires. אם מציינים את שניהם, המערכת משתמשת בערך של max-age כדי לחשב את משך החיים של קובץ ה-Cookie.

  • דומיין

    מחרוזת אופציונלי

    הערך של מאפיין קובץ ה-Cookie של הדומיין.

  • בתוקף עד

    מחרוזת אופציונלי

    הערך של מאפיין קובץ ה-Cookie ‏Expires.

  • httpOnly

    מחרוזת אופציונלי

    קיומו של מאפיין קובץ ה-Cookie ‏HttpOnly.

  • maxAge

    מספר אופציונלי

    הערך של מאפיין קובץ ה-Cookie Max-Age

  • שם

    מחרוזת אופציונלי

    השם של קובץ Cookie.

  • נתיב

    מחרוזת אופציונלי

    הערך של מאפיין הנתיב של קובץ ה-Cookie.

  • מאובטח

    מחרוזת אופציונלי

    האם קיים מאפיין Secure בקובץ ה-Cookie.

  • sessionCookie

    boolean אופציונלי

    מסננים קובצי Cookie זמניים. לקובצי Cookie של סשן לא מוגדר משך חיים באף אחד מהמאפיינים max-age או expires.

  • ערך

    מחרוזת אופציונלי

    הערך של קובץ Cookie, יכול להיות מרופד במירכאות כפולות.

HeaderFilter

מסננים כותרות של בקשות לפי קריטריונים שונים. כמה קריטריונים נבדקים כחיבור.

מאפיינים

  • nameContains

    מחרוזת | מערך של מחרוזות אופציונלי

    תהיה התאמה אם שם הכותרת מכיל את כל המחרוזות שצוינו.

  • nameEquals

    מחרוזת אופציונלי

    התאמה מתקבלת אם שם הכותרת שווה למחרוזת שצוינה.

  • namePrefix

    מחרוזת אופציונלי

    התנאי מתקיים אם שם הכותרת מתחיל במחרוזת שצוינה.

  • nameSuffix

    מחרוזת אופציונלי

    התאמה מתבצעת אם שם הכותרת מסתיים במחרוזת שצוינה.

  • valueContains

    מחרוזת | מערך של מחרוזות אופציונלי

    ההתאמה מתבצעת אם ערך הכותרת מכיל את כל המחרוזות שצוינו.

  • valueEquals

    מחרוזת אופציונלי

    התאמה מתקבלת אם ערך הכותרת שווה למחרוזת שצוינה.

  • valuePrefix

    מחרוזת אופציונלי

    התנאי מתקיים אם ערך הכותרת מתחיל במחרוזת שצוינה.

  • valueSuffix

    מחרוזת אופציונלי

    התאמה מתקבלת אם ערך הכותרת מסתיים במחרוזת שצוינה.

IgnoreRules

הסתרת כל הכללים שתואמים לקריטריונים שצוינו.

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: IgnoreRules) => {...}

  • hasTag

    מחרוזת אופציונלי

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

  • lowerPriorityThan

    מספר אופציונלי

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

RedirectByRegEx

מפנה בקשה על ידי החלת ביטוי רגולרי על כתובת ה-URL. הביטויים הרגולריים משתמשים בתחביר של RE2.

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: RedirectByRegEx) => {...}

  • החל מ-

    מחרוזת

    תבנית התאמה שעשויה להכיל קבוצות לחילוץ. הפניות לקבוצות לכידה נעשות בתחביר של Perl ‏ ($1,‏ $2 וכו') במקום בתחביר של RE2 ‏ (\1,‏ \2 וכו'), כדי להתקרב לביטויים רגולריים של JavaScript.

  • עד

    מחרוזת

    תבנית היעד.

RedirectRequest

פעולה דקלרטיבית של אירוע שמפנה בקשת רשת.

מאפיינים

RedirectToEmptyDocument

פעולת אירוע דקלרטיבית שמפנה בקשת רשת למסמך ריק.

מאפיינים

RedirectToTransparentImage

פעולת אירוע דקלרטיבית שמפנה בקשת רשת לתמונה שקופה.

מאפיינים

RemoveRequestCookie

מסיר קובץ Cookie אחד או יותר של בקשה. שימו לב שעדיף להשתמש ב-Cookies API כי הוא דורש פחות משאבי מחשוב.

מאפיינים

RemoveRequestHeader

מסיר את כותרת הבקשה של השם שצוין. אל תשתמשו ב-SetRequestHeader וב-RemoveRequestHeader עם אותו שם כותרת באותה בקשה. כל שם של כותרת בקשה מופיע רק פעם אחת בכל בקשה.

מאפיינים

RemoveResponseCookie

מסיר קובץ Cookie אחד או יותר מהתגובה. שימו לב שעדיף להשתמש ב-Cookies API כי הוא דורש פחות משאבי מחשוב.

מאפיינים

RemoveResponseHeader

מסירה את כל כותרות התגובה עם השמות והערכים שצוינו.

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: RemoveResponseHeader) => {...}

  • שם

    מחרוזת

    שם כותרת הבקשה של HTTP (לא תלוי-רישיות).

  • ערך

    מחרוזת אופציונלי

    הערך של כותרת בקשת ה-HTTP (לא תלוי-רישיות).

RequestCookie

מסנן או הגדרה של קובץ Cookie בבקשות HTTP.

מאפיינים

  • שם

    מחרוזת אופציונלי

    השם של קובץ Cookie.

  • ערך

    מחרוזת אופציונלי

    הערך של קובץ Cookie, יכול להיות מרופד במירכאות כפולות.

RequestMatcher

הפונקציה מתאימה אירועים ברשת לפי קריטריונים שונים.

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: RequestMatcher) => {...}

  • contentType

    string[] אופציונלי

    התאמה מתקבלת אם סוג המדיה MIME של תגובה (מתוך כותרת ה-HTTP Content-Type) נכלל ברשימה.

  • excludeContentType

    string[] אופציונלי

    התנאי מתקיים אם סוג המדיה של MIME בתגובה (מהכותרת Content-Type של HTTP) לא נכלל ברשימה.

  • excludeRequestHeaders

    HeaderFilter[] optional

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

  • excludeResponseHeaders

    HeaderFilter[] optional

    התאמה מתקבלת אם אף אחת מכותרות התגובה לא תואמת לאף אחד מ-HeaderFilters.

  • firstPartyForCookiesUrl

    UrlFilter אופציונלי

    הוצא משימוש

    המערכת מתעלמת מההגדרה הזו מאז גרסה 82.

    ההתאמה מתבצעת אם התנאים של UrlFilter מתקיימים לגבי כתובת ה-URL של הצד הראשון של הבקשה. כתובת ה-URL של 'הצד הראשון' של בקשה, אם היא קיימת, יכולה להיות שונה מכתובת ה-URL של יעד הבקשה, והיא מתארת מה נחשב 'צד ראשון' לצורך בדיקות של צד שלישי לגבי קובצי Cookie.

  • requestHeaders

    HeaderFilter[] optional

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

  • resourceType

    ResourceType[] optional

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

  • responseHeaders

    HeaderFilter[] optional

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

  • שלבים

    Stage[] אופציונלי

    מכיל רשימה של מחרוזות שמתארות שלבים. הערכים המותרים הם onBeforeRequest,‏ onBeforeSendHeaders,‏ onHeadersReceived,‏ onAuthRequired. אם המאפיין הזה מופיע, הוא מגביל את השלבים הרלוונטיים לאלה שמפורטים בו. שימו לב שהתנאי כולו רלוונטי רק בשלבים שתואמים לכל המאפיינים.

  • thirdPartyForCookies

    boolean אופציונלי

    הוצא משימוש

    המערכת מתעלמת מההגדרה הזו מאז גרסה 87.

    אם הערך מוגדר כ-True, הבקשות תואמות למדיניות בנושא קובצי Cookie של צד שלישי. אם הערך הוא false, התנאי מתאים לכל הבקשות האחרות.

  • כתובת אתר

    UrlFilter אופציונלי

    התאמה מתבצעת אם התנאים של UrlFilter מתקיימים לגבי כתובת ה-URL של הבקשה.

ResponseCookie

מפרט של קובץ Cookie בתגובות HTTP.

מאפיינים

  • דומיין

    מחרוזת אופציונלי

    הערך של מאפיין קובץ ה-Cookie של הדומיין.

  • בתוקף עד

    מחרוזת אופציונלי

    הערך של מאפיין קובץ ה-Cookie ‏Expires.

  • httpOnly

    מחרוזת אופציונלי

    קיומו של מאפיין קובץ ה-Cookie ‏HttpOnly.

  • maxAge

    מספר אופציונלי

    הערך של מאפיין קובץ ה-Cookie Max-Age

  • שם

    מחרוזת אופציונלי

    השם של קובץ Cookie.

  • נתיב

    מחרוזת אופציונלי

    הערך של מאפיין הנתיב של קובץ ה-Cookie.

  • מאובטח

    מחרוזת אופציונלי

    האם קיים מאפיין Secure בקובץ ה-Cookie.

  • ערך

    מחרוזת אופציונלי

    הערך של קובץ Cookie, יכול להיות מרופד במירכאות כפולות.

SendMessageToExtension

מפעיל את האירוע declarativeWebRequest.onMessage.

מאפיינים

SetRequestHeader

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

מאפיינים

  • constructor

    void

    הפונקציה constructor נראית כך:

    (arg: SetRequestHeader) => {...}

  • שם

    מחרוזת

    שם כותרת בקשת ה-HTTP.

  • ערך

    מחרוזת

    ערך כותרת בקשת HTTP.

Stage

Enum

‎"onBeforeRequest"

"onBeforeSendHeaders"

"onHeadersReceived"

"onAuthRequired"

אירועים

onMessage

chrome.declarativeWebRequest.onMessage.addListener(
  callback: function,
)

מופעל כשנשלחת הודעה דרך declarativeWebRequest.SendMessageToExtension מפעולה של declarative web request API.

פרמטרים

  • callback

    פונקציה

    הפרמטר callback נראה כך:

    (details: object) => void

    • פרטים

      אובייקט

      • documentId

        מחרוזת אופציונלי

        מזהה UUID של המסמך שממנו נשלחה הבקשה.

      • מחזור החיים שהמסמך נמצא בו.

      • frameId

        number

        הערך 0 מציין שהבקשה מתרחשת בפריים הראשי, וערך חיובי מציין את המזהה של פריים משני שבו מתרחשת הבקשה. אם המסמך של (מסגרת משנה) נטען (type הוא main_frame או sub_frame), frameId מציין את המזהה של המסגרת הזו, ולא את המזהה של המסגרת החיצונית. מזהי המסגרות ייחודיים בתוך כרטיסייה.

      • סוג המסגרת שבה התרחש המעבר.

      • הודעה

        מחרוזת

        ההודעה שנשלחה על ידי סקריפט השיחה.

      • method

        מחרוזת

        שיטת HTTP רגילה.

      • parentDocumentId

        מחרוזת אופציונלי

        מזהה UUID של מסמך ההורה שבבעלותו המסגרת הזו. אם אין נכס ראשי, הערך לא מוגדר.

      • parentFrameId

        number

        המזהה של המסגרת שעוטפת את המסגרת ששלחה את הבקשה. הערך הוא ‎-1 אם לא קיים פריים אב.

      • requestId

        מחרוזת

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

      • לאחסן נתונים במחסן ביניים (Stage)

        השלב של בקשת הרשת שבמהלכו הופעל האירוע.

      • tabId

        number

        המזהה של הכרטיסייה שבה מתבצעת הבקשה. אם הבקשה לא קשורה לכרטיסייה, הערך צריך להיות ‎-1.

      • timeStamp

        number

        הזמן שבו האות הזה מופעל, באלפיות השנייה מאז ראשית הזמן.

      • איך ישתמשו במשאב המבוקש.

      • כתובת אתר

        מחרוזת

onRequest

Declarative Event API, שכולל את addRules, removeRules ו-getRules.

תנאים