chrome.declarativeWebRequest

Opis

Uwaga: ten interfejs API został wycofany. Zamiast tego zapoznaj się z interfejsem API declarativeNetRequest. Przechwytuj, blokuj lub modyfikuj żądania przesyłane za pomocą interfejsu API chrome.declarativeWebRequest. Jest znacznie szybszy niż interfejs API chrome.webRequest, ponieważ umożliwia rejestrowanie reguł ocenianych w przeglądarce, a nie w silniku JavaScript, co zmniejsza czasy oczekiwania w obie strony i umożliwia większą wydajność.

Uprawnienia

declarativeWebRequest

Aby używać tego interfejsu API, musisz zadeklarować uprawnienie „deklarativeWebRequest” w pliku manifestu rozszerzenia oraz uprawnienia hosta.

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

Dostępność

Wersja beta ≤ MV2

Plik manifestu

Pamiętaj, że niektóre rodzaje działań, które nie są poufne, nie wymagają uprawnień hosta:

  • CancelRequest
  • IgnoreRules
  • RedirectToEmptyDocument
  • RedirectToTransparentImage

Działanie SendMessageToExtension() wymaga uprawnień hosta w przypadku wszystkich hostów, w przypadku których chcesz wywoływać wiadomość.

Wszystkie inne działania wymagają uprawnień hosta do wszystkich adresów URL.

Jeśli na przykład rozszerzenie "https://*.google.com/*" jest jedynym uprawnieniem hosta, to rozszerzenie może skonfigurować regułę, która:

  • Anuluj prośbę do https://www.google.com lub https://anything.else.com.
  • Wyślij wiadomość po otwarciu strony https://www.google.com, ale nie po przejściu do: https://something.else.com.

Rozszerzenie nie może skonfigurować reguły przekierowania adresu https://www.google.com do witryny https://mail.google.com.

Reguły

Deklarowany interfejs API żądania aplikacji jest zgodny z koncepcjami deklaratywnego interfejsu API. Reguły możesz rejestrować w obiekcie zdarzenia chrome.declarativeWebRequest.onRequest.

Deklarowany interfejs API żądań sieciowych obsługuje jeden typ kryteriów dopasowania – RequestMatcher. RequestMatcher dopasowuje żądania sieciowe tylko wtedy, gdy są spełnione wszystkie wymienione kryteria. Gdy użytkownik wpisze w ominiboksie https://www.example.com, kod RequestMatcher zostanie dopasowany do żądania sieciowego:

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

Ze względu na ten schemat żądania wysyłane do usługi https://www.example.com będą odrzucane przez usługę RequestMatcher. Poza tym wszystkie żądania dotyczące umieszczonego elementu iframe będą odrzucane z powodu zasady resourceType.

Aby anulować wszystkie żądania wysyłane do domeny „example.com”, możesz zdefiniować regułę w ten sposób:

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

Aby anulować wszystkie żądania wysyłane do example.com i foobar.com, możesz dodać drugi warunek, ponieważ każdy z nich wystarcza do wywołania wszystkich określonych działań:

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

Zarejestruj reguły w następujący sposób:

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

Ocena warunków i działań

Deklarowany interfejs API żądań sieciowych jest zgodny z modelem cyklu życia żądań sieciowych interfejsu WebRequest API. Oznacza to, że warunki można testować tylko na określonych etapach żądania sieciowego, a działania można też wykonywać tylko na określonych etapach. W tabelach poniżej znajdziesz etapy żądania, które są zgodne z warunkami i działaniami.

Etapy żądania, na których można przetwarzać atrybuty warunku.
Atrybut warunku onBeforeRequest onBeforeSendHeaders onHeadersReceived onAuthRequired
url
resourceType
contentType
excludeContentType
responseHeaders
excludeResponseHeaders
requestHeaders
excludeRequestHeaders
thirdPartyForCookies
Etapy żądań, na których można wykonać działania.
Zdarzenie onBeforeRequest onBeforeSendHeaders onHeadersReceived onAuthRequired
AddRequestCookie
AddResponseCookie
AddResponseHeader
CancelRequest
EditRequestCookie
EditResponseCookie
IgnoreRules
RedirectByRegEx
RedirectRequest
RedirectToEmptyDocument
RedirectToTransparentImage
RemoveRequestCookie
RemoveRequestHeader
RemoveResponseCookie
RemoveResponseHeader
SendMessageToExtension
SetRequestHeader

Zastępowanie reguł za pomocą priorytetów

Reguły można powiązać z priorytetami zgodnie z opisem w narzędziu Events API. Mechanizmu tego można używać do określania wyjątków. Poniższy przykład blokuje wszystkie żądania wysyłane do obrazów o nazwie evil.jpg z wyjątkiem serwera „mojserwer.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]);

Pamiętaj, że działanie IgnoreRules nie występuje na różnych etapach żądania. Wszystkie warunki wszystkich reguł są sprawdzane na każdym etapie żądania sieciowego. Jeśli zostanie wykonane działanie IgnoreRules, będzie ono miało zastosowanie tylko do innych działań wykonanych w przypadku tego samego żądania sieciowego na tym samym etapie.

Typy

AddRequestCookie

Dodaje do żądania plik cookie lub zastępuje go, jeśli istnieje już inny plik cookie o tej samej nazwie. Pamiętaj, że preferowane jest używanie interfejsu Cookie API, ponieważ jest to mniej kosztowne rozwiązanie.

Właściwości

AddResponseCookie

Dodaje do odpowiedzi plik cookie lub zastępuje go, jeśli istnieje już inny plik cookie o tej samej nazwie. Pamiętaj, że preferowane jest używanie interfejsu Cookie API, ponieważ jest to mniej kosztowne rozwiązanie.

Właściwości

AddResponseHeader

Dodaje nagłówek odpowiedzi do odpowiedzi na to żądanie sieciowe. Wiele nagłówków odpowiedzi może mieć taką samą nazwę, więc aby zastąpić jeden z nich, musisz najpierw go usunąć, a następnie dodać nowy.

Właściwości

CancelRequest

Deklarowane działanie zdarzenia, które anuluje żądanie sieciowe.

Właściwości

EditRequestCookie

Edytuje jeden lub więcej plików cookie żądania. Pamiętaj, że preferowane jest używanie interfejsu Cookie API, ponieważ jest to mniej kosztowne rozwiązanie.

Właściwości

  • konstruktor

    void

    Funkcja constructor wygląda tak:

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

  • filter

    Odfiltruj pliki cookie, które zostaną zmodyfikowane. Wszystkie puste wpisy są ignorowane.

  • modyfikacja

    Atrybuty, które powinny zostać zastąpione w plikach cookie, które uruchomiły filtr. Atrybuty, które mają pusty ciąg znaków, są usuwane.

EditResponseCookie

Edytuje co najmniej jeden plik cookie odpowiedzi. Pamiętaj, że preferowane jest używanie interfejsu Cookie API, ponieważ jest to mniej kosztowne rozwiązanie.

Właściwości

FilterResponseCookie

Filtr pliku cookie w odpowiedziach HTTP.

Właściwości

  • ageLowerBound

    Liczba opcjonalnie

    Dolna granica włącznika wraz z czasem trwania pliku cookie (określana w sekundach po bieżącym czasie). To kryterium spełniają tylko pliki cookie, których data ważności jest ustawiona na „teraz + ageLowerBound” lub później. Pliki cookie sesji nie spełniają kryterium tego filtra. Okres ważności pliku cookie jest obliczany na podstawie atrybutów „max-age” lub „wygasa”. Jeśli podasz oba, do obliczenia czasu trwania plików cookie używana jest wartość „max-age”.

  • ageUpperBound

    Liczba opcjonalnie

    Górna granica włączacza okresu przechowywania pliku cookie (określana w sekundach po bieżącym czasie). To kryterium spełniają tylko pliki cookie, których data ważności przypada w przedziale [teraz, teraz + ageUpperBound]. Pliki cookie sesji i pliki cookie, których data ważności przypada w przeszłości, nie spełniają kryterium tego filtra. Okres ważności pliku cookie jest obliczany na podstawie atrybutów „max-age” lub „wygasa”. Jeśli podasz oba, do obliczenia czasu trwania plików cookie używana jest wartość „max-age”.

  • domena

    ciąg znaków opcjonalny

    Wartość atrybutu pliku cookie domeny.

  • traci ważność

    ciąg znaków opcjonalny

    Wartość atrybutu Expiration cookie.

  • httpOnly

    ciąg znaków opcjonalny

    Istnieje atrybut HttpOnly.

  • maxAge

    Liczba opcjonalnie

    Wartość atrybutu pliku cookie Max-Age

  • nazwa

    ciąg znaków opcjonalny

    Nazwa pliku cookie.

  • ścieżka

    ciąg znaków opcjonalny

    Wartość atrybutu pliku cookie ścieżki.

  • Bezpieczny

    ciąg znaków opcjonalny

    Występowanie atrybutu bezpiecznego pliku cookie.

  • sessionCookie

    wartość logiczna opcjonalna

    Filtruje pliki cookie sesji. Pliki cookie sesji nie mają określonego czasu trwania w atrybutach „max-age” lub „expires”.

  • value

    ciąg znaków opcjonalny

    Wartość pliku cookie może być dopełniona podwójnymi cudzysłowami.

HeaderFilter

Filtruje nagłówki żądań według różnych kryteriów. Wiele kryteriów jest ocenianych jako łącznik.

Właściwości

  • nameContains

    string|string[] optional

    Dopasowana, jeśli nazwa nagłówka zawiera wszystkie określone ciągi.

  • nameEquals

    ciąg znaków opcjonalny

    Dopasowane, jeśli nazwa nagłówka jest równa określonemu ciągu.

  • namePrefix

    ciąg znaków opcjonalny

    Dopasowana, jeśli nazwa nagłówka zaczyna się od określonego ciągu.

  • nameSuffix

    ciąg znaków opcjonalny

    Dopasowuje nazwę nagłówka, jeśli kończy się określonym ciągiem znaków.

  • valueContains

    string|string[] optional

    Dopasowana, jeśli wartość nagłówka zawiera wszystkie określone ciągi.

  • valueEquals

    ciąg znaków opcjonalny

    Dopasowuje wartość, jeśli wartość nagłówka jest równa określonemu ciągowi.

  • valuePrefix

    ciąg znaków opcjonalny

    Pasuje do tego, czy wartość nagłówka zaczyna się od określonego ciągu.

  • valueSuffix

    ciąg znaków opcjonalny

    Pasuje do tego, czy wartość nagłówka kończy się określonym ciągiem znaków.

IgnoreRules

Maskuje wszystkie reguły, które spełniają określone kryteria.

Właściwości

  • konstruktor

    void

    Funkcja constructor wygląda tak:

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

  • hasTag

    ciąg znaków opcjonalny

    Jeśli jest ustawiony, reguły z określonym tagiem będą ignorowane. Ignorowanie nie zostaje zachowane, a jedynie wpływa tylko na reguły i ich działania na tym samym etapie żądania sieciowego. Pamiętaj, że reguły są wykonywane w kolejności malejącej według priorytetów. To działanie wpływa na reguły o niższym priorytecie niż bieżąca. Reguły o tym samym priorytecie mogą, ale nie muszą być ignorowane.

  • lowerPriorityThan

    Liczba opcjonalnie

    Jeśli jest ustawiony, reguły o priorytecie niższym od określonej wartości będą ignorowane. Ta granica nie jest utrzymywana. Wpływa tylko na reguły i ich działania na tym samym etapie żądania sieciowego.

RedirectByRegEx

Przekierowuje żądanie, stosując w adresie URL wyrażenie regularne. W wyrażeniach regularnych używana jest składnia RE2.

Właściwości

  • konstruktor

    void

    Funkcja constructor wygląda tak:

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

  • od

    string,

    Wzorzec dopasowania, który może zawierać grupy przechwytywania. Do grup przechwytywania odwołuje się składnia Perl ($1, $2, ...), a nie RE2 (\1, \2, ...), by zbliżyć się do wyrażeń regularnych JavaScript.

  •  

    string,

    Wzorzec docelowy.

RedirectRequest

Deklaracja działania zdarzenia, które przekierowuje żądanie sieciowe.

Właściwości

RedirectToEmptyDocument

Deklarowane działanie zdarzenia, które przekierowuje żądanie sieciowe do pustego dokumentu.

Właściwości

RedirectToTransparentImage

Deklarowane działanie zdarzenia, które przekierowuje żądanie sieciowe do przezroczystego obrazu.

Właściwości

RemoveRequestCookie

Usuwa co najmniej jeden plik cookie żądania. Pamiętaj, że preferowane jest używanie interfejsu Cookie API, ponieważ jest to mniej kosztowne rozwiązanie.

Właściwości

RemoveRequestHeader

Usuwa nagłówek żądania o określonej nazwie. Nie używaj w tym samym żądaniu nagłówków SetRequestHeader i RemoveRequestHeader z tą samą nazwą nagłówka. Każda nazwa nagłówka żądania występuje tylko raz w każdym żądaniu.

Właściwości

RemoveResponseCookie

Usuwa co najmniej 1 plik cookie odpowiedzi. Pamiętaj, że preferowane jest używanie interfejsu Cookie API, ponieważ jest to mniej kosztowne rozwiązanie.

Właściwości

RemoveResponseHeader

Usuwa wszystkie nagłówki odpowiedzi o określonych nazwach i wartościach.

Właściwości

  • konstruktor

    void

    Funkcja constructor wygląda tak:

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

  • nazwa

    string,

    Nazwa nagłówka żądania HTTP (wielkość liter nie jest rozróżniana).

  • value

    ciąg znaków opcjonalny

    Wartość nagłówka żądania HTTP (wielkość liter nie jest rozróżniana).

RequestCookie

Filtr lub specyfikacja pliku cookie w żądaniach HTTP.

Właściwości

  • nazwa

    ciąg znaków opcjonalny

    Nazwa pliku cookie.

  • value

    ciąg znaków opcjonalny

    Wartość pliku cookie może być dopełniona podwójnymi cudzysłowami.

RequestMatcher

Dopasowuje zdarzenia sieciowe według różnych kryteriów.

Właściwości

  • konstruktor

    void

    Funkcja constructor wygląda tak:

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

  • contentType

    string[] opcjonalny

    Dopasowane, jeśli na liście znajduje się typ mediów MIME w odpowiedzi (z nagłówka HTTP Content-Type).

  • excludeContentType

    string[] opcjonalny

    Dopasowane, jeśli typ mediów MIME w odpowiedzi (z nagłówka HTTP Content-Type) nie znajduje się na liście.

  • excludeRequestHeaders

    HeaderFilter[] opcjonalny

    Dopasowane, jeśli żaden z nagłówków żądań nie jest zgodny z którymkolwiek z filtrów Header reklamę.

  • excludeResponseHeaders

    HeaderFilter[] opcjonalny

    Dopasowanie, jeśli żaden z nagłówków odpowiedzi nie jest zgodny z którymkolwiek z filtrów Header reklamę.

  • firstPartyForCookiesUrl

    Opcjonalne UrlFilter

    Wycofano

    Ignorowana od wersji 82.

    Dopasowuje, jeśli warunki filtra UrlFilter są spełnione dla „własnego” adresu URL żądania. „Własny” URL żądania (jeśli występuje) może się różnić od docelowego adresu URL żądania i opisuje, co jest uważane za „własne” w kontekście zewnętrznych mechanizmów sprawdzania plików cookie.

  • requestHeaders

    HeaderFilter[] opcjonalny

    Dopasowana, jeśli niektóre nagłówki żądań są zgodne przez jeden z filtrów HeaderFilter.

  • resourceType

    ResourceType[] opcjonalny

    Dopasowuje, jeśli typ żądania żądania znajduje się na liście. Żądania, które nie pasują do żadnego typu, zostaną odfiltrowane.

  • responseHeaders

    HeaderFilter[] opcjonalny

    Dopasowanie, jeśli niektóre nagłówki odpowiedzi są zgodne z jednym z filtrów HeaderFilter.

  • etapy

    Etap[] opcjonalny

    Zawiera listę ciągów tekstowych opisujących etapy. Dozwolone wartości to „onBeforeRequest”, „onBeforeSendHeaders”, „onHeadersReceived”, „onAuthRequired”. Jeśli ten atrybut jest obecny, ogranicza obowiązujące etapy do tych wymienionych. Pamiętaj, że cały warunek ma zastosowanie tylko w etapach zgodnych ze wszystkimi atrybutami.

  • thirdPartyForCookies

    wartość logiczna opcjonalna

    Wycofano

    Ignorowana od wersji 87.

    Jeśli ma wartość Prawda, dopasowuje żądania, które podlegają zasadom dotyczącym plików cookie innych firm. Jeśli ma wartość Fałsz, dopasowuje wszystkie inne żądania.

  • URL

    Opcjonalne UrlFilter

    Pasuje do tego, czy dla adresu URL żądania są spełnione warunki filtra UrlFilter.

ResponseCookie

Specyfikacja pliku cookie w odpowiedziach HTTP.

Właściwości

  • domena

    ciąg znaków opcjonalny

    Wartość atrybutu pliku cookie domeny.

  • traci ważność

    ciąg znaków opcjonalny

    Wartość atrybutu Expiration cookie.

  • httpOnly

    ciąg znaków opcjonalny

    Istnieje atrybut HttpOnly.

  • maxAge

    Liczba opcjonalnie

    Wartość atrybutu pliku cookie Max-Age

  • nazwa

    ciąg znaków opcjonalny

    Nazwa pliku cookie.

  • ścieżka

    ciąg znaków opcjonalny

    Wartość atrybutu pliku cookie ścieżki.

  • Bezpieczny

    ciąg znaków opcjonalny

    Występowanie atrybutu bezpiecznego pliku cookie.

  • value

    ciąg znaków opcjonalny

    Wartość pliku cookie może być dopełniona podwójnymi cudzysłowami.

SendMessageToExtension

Wywołuje zdarzenie declarativeWebRequest.onMessage.

Właściwości

SetRequestHeader

Ustawia w nagłówku żądania o określonej nazwie określoną wartość. Jeśli nagłówek o danej nazwie wcześniej nie istniał, zostanie utworzony nowy. W porównaniu nazw nagłówków wielkość liter zawsze nie jest rozróżniana. Każda nazwa nagłówka żądania występuje tylko raz w każdym żądaniu.

Właściwości

Stage

Enum

"onBeforeRequest"

"onHeadersReceived"

Wydarzenia

onMessage

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

Uruchamiane, gdy wiadomość zostanie wysłana przez declarativeWebRequest.SendMessageToExtension w wyniku działania interfejsu API deklaratywnego żądania internetowego.

Parametry

  • wywołanie zwrotne

    funkcja

    Parametr callback wygląda tak:

    (details: object)=>void

    • szczegóły

      obiekt

      • documentId

        ciąg znaków opcjonalny

        Identyfikator UUID dokumentu, z którego wysłano żądanie.

      • Cykl życia dokumentu.

      • frameId

        Liczba

        Wartość 0 oznacza, że żądanie jest wysyłane w ramce głównej, a wartość dodatnia wskazuje identyfikator ramki podrzędnej, w której żądanie jest wysyłane. Jeśli wczytany jest dokument (elementu podrzędnego) (type to main_frame lub sub_frame), wartość frameId wskazuje identyfikator tej ramki, a nie identyfikator ramki zewnętrznej. Identyfikatory klatek są unikalne w obrębie karty.

      • Typ klatki, w której wystąpiła nawigacja.

      • wiadomość

        string,

        Wiadomość wysłana przez skrypt wywołujący.

      • method

        string,

        Standardowa metoda HTTP.

      • parentDocumentId

        ciąg znaków opcjonalny

        Identyfikator UUID dokumentu nadrzędnego, do którego należy ta ramka. Ta wartość nie jest ustawiona, jeśli nie ma elementu nadrzędnego.

      • parentFrameId

        Liczba

        Identyfikator ramki, która opakowuje ramkę, która wysłała żądanie. Jeśli nie istnieje ramka nadrzędna, ustaw wartość -1.

      • requestId

        string,

        Identyfikator żądania. Identyfikatory żądań są unikalne w obrębie sesji przeglądarki. Oznacza to, że mogą one służyć do powiązania różnych zdarzeń związanych z tą samą prośbą.

      • etapie

        Etap żądania sieciowego, na którym zostało wywołane zdarzenie.

      • tabId

        Liczba

        Identyfikator karty, na której występuje żądanie. Jeśli żądanie nie jest związane z kartą, ustaw wartość -1.

      • timeStamp

        Liczba

        Czas wywołania tego sygnału w milisekundach od początku epoki.

      • Sposób wykorzystania żądanego zasobu.

      • URL

        string,

onRequest

Udostępnia deklaracyjny interfejs API zdarzenia obejmujący addRules, removeRules oraz getRules.