browser.declarativeNetRequest

Açıklama

chrome.declarativeNetRequest API'si, bildirim temelli kurallar belirterek ağ isteklerini engellemek veya değiştirmek için kullanılır. Bu sayede uzantılar, ağ isteklerini kesintiye uğratmadan ve içeriklerini görüntülemeden değiştirebilir. Böylece daha fazla gizlilik sağlanır.

İzinler

declarativeNetRequest
declarativeNetRequestWithHostAccess

"declarativeNetRequest" ve "declarativeNetRequestWithHostAccess" izinleri aynı özellikleri sağlar. Aralarındaki fark, izinlerin ne zaman istendiği veya verildiğidir.

"declarativeNetRequest"
Yükleme sırasında izin uyarısı tetikler ancak allow, allowAllRequests ve block kurallarına dolaylı erişim sağlar. Ana makinelere tam erişim istemek zorunda kalmamak için mümkün olduğunda bu yöntemi kullanın.
"declarativeNetRequestFeedback"
Paketlenmemiş uzantılar için hata ayıklama özelliklerini (özellikle getMatchedRules() ve onRuleMatchedDebug) etkinleştirir.
"declarativeNetRequestWithHostAccess"
Yükleme sırasında izin uyarısı gösterilmez ancak bir ana makinede işlem yapabilmek için önce ana makine izinlerini istemeniz gerekir. Bu, ek uyarılar oluşturmadan, zaten ana makine izinlerine sahip bir uzantıda bildirim temelli ağ isteği kurallarını kullanmak istediğinizde uygundur.

Kullanılabilirlik

Chrome 84 ve sonraki sürümler Chrome 148'den itibaren browser.*

Manifest

Daha önce açıklanan izinlere ek olarak, belirli kural grubu türleri (özellikle statik kural grupları), "declarative_net_request" manifest anahtarının tanımlanmasını gerektirir. Bu anahtar, "rule_resources" adlı tek bir anahtara sahip bir sözlük olmalıdır. Bu anahtar, aşağıda gösterildiği gibi Ruleset türünde sözlükler içeren bir dizidir. ("Ruleset" adı yalnızca bir dizi olduğundan manifest dosyasının JSON'unda görünmez.) Statik kural kümeleri bu belgenin ilerleyen kısımlarında açıklanmıştır.

{
  "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/*"
  ],
  ...
}

Kurallar ve kural kümeleri

Bu API'yi kullanmak için bir veya daha fazla kural grubu belirtin. Kural grubu, bir kural dizisi içerir. Tek bir kural aşağıdakilerden birini yapar:

  • Ağ isteğini engelleme
  • Şemayı yükseltin (http'den https'ye).
  • Eşleşen engellenmiş kuralları geçersiz kılarak bir isteğin engellenmesini önleyin.
  • Ağ isteğini yönlendirme
  • İstek veya yanıt başlıklarını değiştirme

Biraz farklı şekillerde yönetilen üç tür kural grubu vardır.

Dinamik
Tarayıcı oturumları ve uzantı yükseltmeleri boyunca kalıcıdır ve uzantı kullanılırken JavaScript kullanılarak yönetilir.
Oturum
Tarayıcı kapatıldığında ve uzantının yeni bir sürümü yüklendiğinde temizlenir. Oturum kuralları, bir uzantı kullanılırken JavaScript ile yönetilir.
Statik
Bir uzantı yüklendiğinde veya yeni sürüme geçirildiğinde paketlenir, yüklenir ve güncellenir. Statik kurallar, JSON biçimli kural dosyalarında depolanır ve manifest dosyasında listelenir.

Dinamik ve oturum kapsamlı kural kümeleri

Dinamik ve oturum kural kümeleri, bir uzantı kullanılırken JavaScript ile yönetilir.

  • Dinamik kurallar, tarayıcı oturumları ve uzantı yükseltmeleri boyunca geçerli olur.
  • Oturum kuralları, tarayıcı kapatıldığında ve uzantının yeni bir sürümü yüklendiğinde temizlenir.

Bu kural grubu türlerinin her birinden yalnızca bir tane vardır. Bir uzantı, kural sınırları aşılmadığı sürece updateDynamicRules() ve updateSessionRules() yöntemlerini çağırarak kuralları dinamik olarak ekleyebilir veya kaldırabilir. Kural sınırları hakkında bilgi edinmek için Kural sınırları başlıklı makaleyi inceleyin. Kod örnekleri bölümünde bunun bir örneğini görebilirsiniz.

Statik kural kümeleri

Dinamik ve oturum kurallarının aksine statik kurallar, bir uzantı yüklendiğinde veya yeni sürüme geçirildiğinde paketlenir, yüklenir ve güncellenir. Bunlar, "declarative_net_request" ve "rule_resources" anahtarları kullanılarak uzantıya yukarıda açıklandığı gibi belirtilen JSON biçimindeki kural dosyalarında ve bir veya daha fazla Ruleset sözlüğünde depolanır. Ruleset sözlüğü, kural dosyasının yolunu, dosyada bulunan kural kümesinin kimliğini ve kural kümesinin etkin mi yoksa devre dışı mı olduğunu içerir. Son ikisi, bir kural grubunu programatik olarak etkinleştirdiğinizde veya devre dışı bıraktığınızda önemlidir.

{
  ...
  "declarative_net_request" : {
    "rule_resources" : [{
      "id": "ruleset_1",
      "enabled": true,
      "path": "rules_1.json"
    },
    ...
    ]
  }
  ...
}

Kural dosyalarını test etmek için uzantınızı paketi açılmış olarak yükleyin. Geçersiz statik kurallarla ilgili hatalar ve uyarılar yalnızca paketi açılmış uzantılar için gösterilir. Paketlenmiş uzantılardaki geçersiz statik kurallar yoksayılır.

Hızlandırılmış inceleme

Statik kural kümelerinde yapılan değişiklikler hızlandırılmış incelemeye uygun olabilir. Uygun değişiklikler için hızlandırılmış inceleme bölümüne bakın.

Statik kuralları ve kural gruplarını etkinleştirme ve devre dışı bırakma

Hem bağımsız statik kurallar hem de eksiksiz statik kural kümeleri çalışma zamanında etkinleştirilebilir veya devre dışı bırakılabilir.

Etkin statik kurallar ve kural kümeleri, tarayıcı oturumları boyunca kalıcı olur. İkisi de uzantı güncellemeleri arasında kalıcı değildir. Yani güncellemeden sonra yalnızca kural dosyalarınızda bırakmayı seçtiğiniz kurallar kullanılabilir.

Performans nedeniyle, aynı anda etkinleştirilebilecek kural ve kural grubu sayısıyla ilgili de sınırlar vardır. Etkinleştirilebilecek ek kural sayısını kontrol etmek için getAvailableStaticRuleCount() yöntemini çağırın. Kural sınırları hakkında bilgi edinmek için Kural sınırları başlıklı makaleyi inceleyin.

Statik kuralları etkinleştirmek veya devre dışı bırakmak için updateStaticRules() yöntemini çağırın. Bu yöntem, etkinleştirilecek veya devre dışı bırakılacak kuralların kimlik dizilerini içeren bir UpdateStaticRulesOptions nesnesi alır. Kimlikler, Ruleset sözlüğünün "id" anahtarı kullanılarak tanımlanır. Devre dışı bırakılan statik kural sayısı en fazla 5.000 olabilir.

Statik kural kümelerini etkinleştirmek veya devre dışı bırakmak için updateEnabledRulesets() yöntemini çağırın. Bu yöntem, etkinleştirilecek veya devre dışı bırakılacak kural kümelerinin kimlik dizilerini içeren bir UpdateRulesetOptions nesnesi alır. Kimlikler, Ruleset sözlüğünün "id" anahtarı kullanılarak tanımlanır.

Derleme kuralları

Türü ne olursa olsun, bir kural aşağıda gösterildiği gibi dört alanla başlar. "id" ve "priority" anahtarları bir sayı alırken "action" ve "condition" anahtarları birkaç engelleme ve yönlendirme koşulu sağlayabilir. Aşağıdaki kural, "foo.com" adresinden kaynaklanan ve alt dize olarak "abc" içeren tüm URL'lere yönelik komut dosyası isteklerini engeller.

{
  "id" : 1,
  "priority": 1,
  "action" : { "type" : "block" },
  "condition" : {
    "urlFilter" : "abc",
    "initiatorDomains" : ["foo.com"],
    "resourceTypes" : ["script"]
  }
}

URL eşleştirme

Declarative Net Request, URL'leri kalıp eşleme söz dizimi veya normal ifadelerle eşleştirme olanağı sunar.

URL filtresi söz dizimi

Bir kuralın "condition" anahtarı, belirtilen bir alan altındaki URL'lerde işlem yapmak için "urlFilter" anahtarına izin verir. Kalıp eşleştirme jetonlarını kullanarak kalıplar oluşturursunuz. Aşağıda birkaç örnek verilmiştir.

urlFilter Eşleşmeler Eşleşmez
"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

Normal ifadeler

Koşullarda normal ifadeler de kullanılabilir. "regexFilter" tuşuna bakın. Bu koşullar için geçerli olan sınırlar hakkında bilgi edinmek üzere Normal ifadeleri kullanan kurallar başlıklı makaleyi inceleyin.

İyi URL koşulları yazma

Kural yazarken her zaman alanın tamamıyla eşleşmesine dikkat edin. Aksi takdirde kuralınız beklenmedik durumlarda eşleşebilir. Örneğin, kalıp eşleştirme söz dizimini kullanırken:

  • google.com, https://example.com/?param=google.com ile yanlış eşleşiyor
  • ||google.com, https://google.company ile yanlış eşleşiyor
  • https://www.google.com, https://example.com/?param=https://www.google.com ile yanlış eşleşiyor

Şu özelliklerden faydalanabilirsiniz:

  • ||google.com/, tüm yollar ve tüm alt alan adlarıyla eşleşir.
  • |https://www.google.com/ tüm yollarla eşleşir ancak alt alan adlarıyla eşleşmez.

Benzer şekilde, normal ifadeyi sabitlemek için ^ ve / karakterlerini kullanın. Örneğin, ^https:\/\/www\.google\.com\/, https://www.google.com adresindeki tüm yollarla eşleşir.

Kural değerlendirmesi

DNR kuralları, tarayıcı tarafından ağ isteği yaşam döngüsünün çeşitli aşamalarında uygulanır.

İstekten önce

İstek gönderilmeden önce bir uzantı, eşleşen bir kural kullanarak isteği engelleyebilir veya yönlendirebilir (şemayı HTTP'den HTTPS'ye yükseltme dahil).

Tarayıcı, her uzantı için eşleşen kuralların bir listesini belirler. modifyHeaders işlemi içeren kurallar daha sonra ele alınacağı için buraya dahil edilmez. Ayrıca, responseHeaders koşuluna sahip kurallar daha sonra (yanıt başlıkları kullanılabilir olduğunda) değerlendirilir ve dahil edilmez.

Ardından Chrome, her uzantı için istek başına en fazla bir aday seçer. Chrome, tüm eşleşen kuralları önceliğe göre sıralayarak eşleşen bir kural bulur. Aynı önceliğe sahip kurallar, işleme göre sıralanır (allow veya allowAllRequests > block > upgradeScheme > redirect).

Aday bir allow veya allowAllRequests kuralıysa ya da isteğin yapıldığı çerçeve daha önce bu uzantıdan daha yüksek veya eşit önceliğe sahip bir allowAllRequests kuralıyla eşleştiyse isteğe "izin verilir" ve uzantının istek üzerinde herhangi bir etkisi olmaz.

Birden fazla uzantı bu isteği engellemek veya yönlendirmek isterse tek bir işlem seçilir. Chrome bunu, kuralları block > redirect veya upgradeScheme > allow ya da allowAllRequests şeklinde sıralayarak yapar. İki kural aynı türdeyse Chrome, en son yüklenen uzantıdaki kuralı seçer.

İstek başlıkları gönderilmeden önce

Chrome, istek başlıklarını sunucuya göndermeden önce başlıklar, eşleşen modifyHeaders kurallarına göre güncellenir.

Chrome, tek bir uzantı içinde, eşleşen tüm modifyHeaders kurallarını bularak gerçekleştirilecek değişikliklerin listesini oluşturur. Daha önce olduğu gibi, yalnızca eşleşen allow veya allowAllRequests kurallarından daha yüksek önceliğe sahip kurallar dahil edilir.

Bu kurallar Chrome tarafından, daha yeni yüklenen bir uzantının kuralları her zaman daha eski bir uzantının kurallarından önce değerlendirilecek şekilde uygulanır. Ayrıca, bir uzantıdaki yüksek öncelikli kurallar her zaman aynı uzantıdaki düşük öncelikli kurallardan önce uygulanır. Özellikle uzantılar arasında bile:

  • Bir kural bir üstbilgiye ekleme yapıyorsa daha düşük öncelikli kurallar yalnızca bu üstbilgiye ekleme yapabilir. Ayar ve kaldırma işlemlerine izin verilmez.
  • Bir kural bir üstbilgi ayarlarsa yalnızca aynı uzantıdaki daha düşük öncelikli kurallar bu üstbilgiye ekleme yapabilir. Başka bir değişikliğe izin verilmez.
  • Bir kural bir üstbilgiyi kaldırırsa daha düşük öncelikli kurallar üstbilgiyi daha fazla değiştiremez.

Yanıt alındıktan sonra

Yanıt başlıkları alındıktan sonra Chrome, responseHeaders koşuluna sahip kuralları değerlendirir.

Chrome, bu kuralları action ve priority ölçütlerine göre sıraladıktan ve eşleşen bir allow veya allowAllRequests kuralı nedeniyle gereksiz hale gelen kuralları hariç tuttuktan sonra ("İstekten önce" bölümündeki adımlarla aynı şekilde gerçekleşir) bir uzantı adına isteği engelleyebilir veya yönlendirebilir.

Bir istek bu aşamaya ulaştıysa isteğin sunucuya gönderildiğini ve sunucunun istek gövdesi gibi verileri aldığını unutmayın. Yanıt başlıkları koşulu içeren bir engelleme veya yönlendirme kuralı çalışmaya devam eder ancak isteği engelleyemez veya yönlendiremez.

Engelleme kuralı söz konusu olduğunda bu durum, isteği yapan sayfanın engellenmiş bir yanıt alması ve Chrome'un isteği erken sonlandırmasıyla ele alınır. Yönlendirme kuralı söz konusu olduğunda Chrome, yönlendirilen URL'ye yeni bir istek gönderir. Bu davranışların, uzantınız için gizlilik beklentilerini karşılayıp karşılamadığını değerlendirin.

İstek engellenmez veya yönlendirilmezse Chrome, modifyHeaders kurallarını uygular. Yanıt başlıklarında değişiklik yapma işlemi, "İstek başlıkları gönderilmeden önce" bölümünde açıklandığı şekilde çalışır. İstek zaten yapıldığından istek başlıklarında değişiklik yapmak bir işe yaramaz.

Güvenli kurallar

Güvenli kurallar; block, allow, allowAllRequests veya upgradeScheme işlemi olan kurallar olarak tanımlanır. Bu kurallar, artırılmış dinamik kurallar kotasına tabidir.

Kural sınırları

Kuralların tarayıcıda yüklenmesi ve değerlendirilmesi performans ek yüküne neden olur. Bu nedenle, API kullanılırken bazı sınırlamalar geçerlidir. Sınırlar, kullandığınız kuralın türüne bağlıdır.

Statik kurallar

Statik kurallar, manifest dosyasında belirtilen kural dosyalarında tanımlanan kurallardır. Bir uzantı, "rule_resources" manifest anahtarının bir parçası olarak en fazla 100 statik kural kümesi belirtebilir ancak bu kural kümelerinden aynı anda yalnızca 50'si etkinleştirilebilir. İkincisine MAX_NUMBER_OF_ENABLED_STATIC_RULESETS denir. Bu kural kümeleri için toplamda en az 30.000 kural garanti edilir. Buna GUARANTEED_MINIMUM_STATIC_RULES denir.

Bu sayıdan sonra kullanılabilecek kural sayısı, kullanıcının tarayıcısına yüklenen tüm uzantılar tarafından etkinleştirilen kural sayısına bağlıdır. Bu numarayı, çalışma zamanında getAvailableStaticRuleCount() yöntemini çağırarak bulabilirsiniz. Kod örnekleri bölümünde bunun bir örneğini görebilirsiniz.

Oturum kuralları

Bir uzantıda en fazla 5.000 oturum kuralı olabilir. Bu, MAX_NUMBER_OF_SESSION_RULES olarak gösterilir.

Chrome 120'den önce, toplamda 5.000 dinamik ve oturum kuralı sınırı vardı.

Dinamik kurallar

Bir uzantının en az 5.000 dinamik kuralı olabilir. Bu, MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES olarak gösterilir.

Chrome 121'den itibaren, MAX_NUMBER_OF_DYNAMIC_RULES olarak gösterilen güvenli dinamik kurallar için 30.000 kuraldan oluşan daha büyük bir sınır vardır. 5.000 kural sınırı dahilinde eklenen güvenli olmayan kurallar da bu sınıra dahil edilir.

Chrome 120'den önce, toplamda 5.000 dinamik ve oturum kuralı sınırı vardı.

Normal ifadeleri kullanan kurallar

Tüm kural türlerinde normal ifadeler kullanılabilir ancak her türden normal ifade kuralının toplam sayısı 1.000'i aşamaz. Buna MAX_NUMBER_OF_REGEX_RULES denir.

Ayrıca, her kural derlendikten sonra 2 KB'tan küçük olmalıdır. Bu süre, kuralın karmaşıklığıyla kabaca ilişkilidir. Bu sınırı aşan bir kural yüklemeye çalışırsanız aşağıdaki gibi bir uyarı görürsünüz ve kural yoksayılır.

rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.

Hizmet çalışanlarıyla etkileşimler

declarativeNetRequest yalnızca ağ yığınına ulaşan istekler için geçerlidir. Buna HTTP önbelleğinden gelen yanıtlar dahildir ancak hizmet çalışanının onfetch işleyicisinden geçen yanıtlar dahil olmayabilir. declarativeNetRequest, hizmet çalışanı tarafından oluşturulan veya CacheStorage adresinden alınan yanıtları etkilemez ancak hizmet çalışanında yapılan fetch() çağrılarını etkiler.

Web'den erişilebilen kaynaklar

declarativeNetRequest kuralı, herkese açık bir kaynak isteğini web'den erişilemeyen bir kaynağa yönlendiremez. Bunu yaparsanız hata tetiklenir. Bu durum, belirtilen web'den erişilebilir kaynağın sahibi yönlendiren uzantı olsa bile geçerlidir. declarativeNetRequest için kaynakları bildirmek üzere manifest'in "web_accessible_resources" dizisini kullanın.

Üstbilgi değişikliği

Ekleme işlemi yalnızca şu istek başlıkları için desteklenir: 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. Bu izin verilenler listesi, büyük/küçük harfe duyarlıdır (hata 449152902).

Tarayıcı, bir istek veya yanıt başlığına ekleme yaparken mümkün olduğunda uygun ayırıcıyı kullanır.

Örnekler

Kod örnekleri

Dinamik kuralları güncelleme

Aşağıdaki örnekte updateDynamicRules() yönteminin nasıl çağrılacağı gösterilmektedir. updateSessionRules() için de aynı prosedür geçerlidir.

// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await browser.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);

// Use the arrays to update the dynamic rules
await browser.declarativeNetRequest.updateDynamicRules({
  removeRuleIds: oldRuleIds,
  addRules: newRules
});

Statik kural kümelerini güncelleme

Aşağıdaki örnekte, kullanılabilir statik kural kümelerinin sayısını ve etkinleştirilen statik kural kümelerinin maksimum sayısını dikkate alarak kural kümelerinin nasıl etkinleştirileceği ve devre dışı bırakılacağı gösterilmektedir. İhtiyacınız olan statik kural sayısı, izin verilen sayıyı aştığında bu işlemi yaparsınız. Bunun çalışması için kural gruplarınızdan bazılarının devre dışı bırakılmış kural gruplarınızdan bazılarıyla yüklenmesi gerekir (manifest dosyasında "Enabled", false olarak ayarlanır).

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 browser.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 > browser.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
    options.disableRulesetIds = disableCandidateIds
  }
  // Update the enabled static rules
  await browser.declarativeNetRequest.updateEnabledRulesets(options);
}

Kural örnekleri

Aşağıdaki örneklerde, Chrome'un bir uzantıdaki kuralları nasıl önceliklendirdiği gösterilmektedir. Bunları incelerken önceliklendirme kurallarını ayrı bir pencerede açmak isteyebilirsiniz.

"priority" anahtarı

Bu örnekler için *://*.example.com/* adresine ana makine izni gerekir.

Belirli bir URL'nin önceliğini belirlemek için (geliştirici tarafından tanımlanan) "priority" anahtarına, "action" anahtarına ve "urlFilter" anahtarına bakın. Bu örnekler, altlarında gösterilen örnek kural dosyasına atıfta bulunur.

https://google.com adresine gitme
Bu URL'yi iki kural kapsar: 1 ve 4 kimlikli kurallar. "block" işlemleri "redirect" işlemlerinden daha yüksek önceliğe sahip olduğundan 1 kimlikli kural uygulanır. Kalan kurallar daha uzun URL'ler için olduğundan geçerli değildir.
https://google.com/1234 adresine gitme
URL daha uzun olduğu için artık 1 ve 4 kimlikli kuralların yanı sıra 2 kimlikli kural da eşleşir. "allow", "block" ve "redirect"'den daha yüksek önceliğe sahip olduğundan 2 kimlikli kural uygulanır.
https://google.com/12345 adresine gitme
Dört kuralın tümü bu URL ile eşleşiyor. Geliştirici tarafından tanımlanan önceliği gruptaki en yüksek öncelik olduğundan 3 kimlikli kural uygulanır.
[
  {
    "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"] }
  },
]

Yönlendirmeler

Aşağıdaki örnekte *://*.example.com/* için ana makine izni gerekir.

Aşağıdaki örnekte, example.com'dan gelen bir isteğin uzantının kendi içindeki bir sayfaya nasıl yönlendirileceği gösterilmektedir. /a.jpg uzantı yolu, chrome-extension://EXTENSION_ID/a.jpg olarak çözümlenir. Burada EXTENSION_ID, uzantınızın kimliğidir. Bunun çalışması için manifest, /a.jpg öğesini web'den erişilebilir kaynak olarak beyan etmelidir.

{
  "id": 1,
  "priority": 1,
  "action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
  "condition": {
    "urlFilter": "||https://www.example.com/",
    "resourceTypes": ["main_frame"]
  }
}

Aşağıdaki örnekte, example.com'un bir alt alan adına yönlendirme yapmak için "transform" anahtarı kullanılmaktadır. example.com'dan gelen tüm şemalara sahip istekleri yakalamak için bir alan adı sabitleyici ("||") kullanılır. "transform" içindeki "scheme" anahtarı, alt alan adına yönlendirmelerin her zaman "https" kullanacağını belirtir.

{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "redirect",
    "redirect": {
      "transform": { "scheme": "https", "host": "new.example.com" }
    }
  },
  "condition": {
    "urlFilter": "||example.com/",
    "resourceTypes": ["main_frame"]
  }
}

Aşağıdaki örnekte, https://www.abc.xyz.com/path adresinden https://abc.xyz.com/path adresine yönlendirme yapmak için normal ifadeler kullanılmaktadır. "regexFilter" anahtarında, noktaların nasıl kaçış karakteriyle kullanıldığına ve yakalama grubunun "abc" veya "def"i seçtiğine dikkat edin. "regexSubstitution" anahtarı, "\1" kullanarak normal ifadenin döndürülen ilk eşleşmesini belirtir. Bu durumda, "abc" yönlendirilen URL'den alınır ve ikameye yerleştirilir.

{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "redirect",
    "redirect": {
      "regexSubstitution": "https://\\1.xyz.com/"
    }
  },
  "condition": {
    "regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
    "resourceTypes": [
      "main_frame"
    ]
  }
}

Üst bilgiler

Aşağıdaki örnekte, hem ana çerçevedeki hem de alt çerçevelerdeki tüm çerezler kaldırılmaktadır.

{
  "id": 1,
  "priority": 1,
  "action": {
    "type": "modifyHeaders",
    "requestHeaders": [{ "header": "cookie", "operation": "remove" }]
  },
  "condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}

Türler

DomainType

Bu, isteğin kaynaklandığı çerçeve için birinci taraf mı yoksa üçüncü taraf mı olduğunu açıklar. Bir istek, isteğin kaynaklandığı çerçeveyle aynı alana (eTLD+1) sahipse birinci taraf olarak kabul edilir.

Enum

"firstParty"
Ağ isteği, kaynaklandığı çerçeve için birinci taraftır.

"thirdParty"
Ağ isteği, kaynaklandığı çerçeveye göre üçüncü taraftır.

ExtensionActionOptions

Chrome 88 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • displayActionCountAsBadgeText

    boole isteğe bağlı

    Bir sayfanın işlem sayısının, uzantının rozet metni olarak otomatik olarak gösterilip gösterilmeyeceğini belirler. Bu tercih, oturumlar arasında kalıcıdır.

  • tabUpdate

    TabActionCountUpdate isteğe bağlı

    Chrome 89 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Sekmenin işlem sayısının nasıl ayarlanması gerektiğiyle ilgili ayrıntılar.

GetDisabledRuleIdsOptions

Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • rulesetId

    dize

    Statik bir Ruleset'e karşılık gelen kimlik.

GetRulesFilter

Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • ruleIds

    number[] isteğe bağlı

    Belirtilirse yalnızca eşleşen kimliklere sahip kurallar dahil edilir.

HeaderInfo

Chrome 128 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • excludedValues

    string[] isteğe bağlı

    Belirtilirse başlık mevcutsa ancak değeri bu listede en az bir öğe içeriyorsa bu koşul eşleşmez. Bu, values ile aynı eşleşme kalıbı söz dizimini kullanır.

  • başlık

    dize

    Üstbilginin adı. Bu koşul, yalnızca values ve excludedValues belirtilmemişse adla eşleşir.

  • values

    string[] isteğe bağlı

    Belirtilirse bu koşul, üstbilginin değeri bu listedeki en az bir kalıpla eşleştiğinde karşılanır. Bu, büyük/küçük harfe duyarlı olmayan üstbilgi değeri eşleşmesini ve aşağıdaki yapıları destekler:

    "*" : Herhangi bir sayıda karakterle eşleşir.

    "?" : Sıfır veya bir karakterle eşleşir.

    "*" ve "?" karakterleri ters eğik çizgiyle (ör. "\*" ve "\?") kullanılabilir.

HeaderOperation

Chrome 86 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bu, "modifyHeaders" kuralı için olası işlemleri açıklar.

Enum

"append"
Belirtilen üstbilgi için yeni bir giriş ekler. Bir isteğin üstbilgileri değiştirilirken bu işlem yalnızca belirli üstbilgiler için desteklenir.

"set"
Belirtilen üstbilgi için yeni bir değer ayarlar ve aynı ada sahip mevcut üstbilgileri kaldırır.

"remove"
Belirtilen üstbilgi için tüm girişleri kaldırır.

IsRegexSupportedResult

Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • isSupported

    boole

  • neden

    UnsupportedRegexReason isteğe bağlı

    Normal ifadenin neden desteklenmediğini belirtir. Yalnızca isSupported değeri yanlışsa sağlanır.

MatchedRule

Özellikler

  • ruleId

    sayı

    Eşleşen kuralın kimliği.

  • rulesetId

    dize

    Bu kuralın ait olduğu Ruleset kimliği. Dinamik kural grubundan kaynaklanan bir kural için bu değer DYNAMIC_RULESET_ID değerine eşit olur.

MatchedRuleInfo

Özellikler

  • kural
  • tabId

    sayı

    Sekme hâlâ etkinse isteğin kaynaklandığı sekmenin tabId değeri. Aksi takdirde -1.

  • timeStamp

    sayı

    Kuralın eşleştiği zaman. Zaman damgaları, zamanlar için JavaScript kuralına (yani epoch'tan bu yana geçen milisaniye sayısı) karşılık gelir.

MatchedRuleInfoDebug

Özellikler

MatchedRulesFilter

Özellikler

  • minTimeStamp

    number isteğe bağlı

    Belirtilirse yalnızca belirtilen zaman damgasından sonraki kurallarla eşleşir.

  • tabId

    number isteğe bağlı

    Belirtilirse yalnızca belirli sekme için kurallarla eşleşir. -1 olarak ayarlanırsa etkin sekmelerle ilişkili olmayan kurallarla eşleşir.

ModifyHeaderInfo

Chrome 86 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • başlık

    dize

    Değiştirilecek üstbilginin adı.

  • Üstbilgide gerçekleştirilecek işlem.

  • value

    string isteğe bağlı

    Üstbilginin yeni değeri. append ve set işlemleri için belirtilmelidir.

QueryKeyValue

Özellikler

  • anahtar

    dize

  • replaceOnly

    boole isteğe bağlı

    Chrome 94 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Doğru değerine ayarlanırsa sorgu anahtarı yalnızca mevcutsa değiştirilir. Aksi takdirde, anahtar eksikse de eklenir. Varsayılan olarak "false" (yanlış) değerine ayarlıdır.

  • value

    dize

QueryTransform

Özellikler

  • addOrReplaceParams

    QueryKeyValue[] isteğe bağlı

    Eklenecek veya değiştirilecek sorgu anahtar/değer çiftlerinin listesi.

  • removeParams

    string[] isteğe bağlı

    Kaldırılacak sorgu anahtarlarının listesi.

Redirect

Özellikler

  • extensionPath

    string isteğe bağlı

    Uzantı dizinine göre yol. "/" ile başlamalıdır.

  • regexSubstitution

    string isteğe bağlı

    regexFilter belirten kurallar için değiştirme kalıbı. URL'deki ilk regexFilter eşleşmesi bu kalıpla değiştirilir. regexSubstitution içinde, karşılık gelen yakalama gruplarını eklemek için ters eğik çizgiyle kodlanmış rakamlar (\1 - \9) kullanılabilir. \0, eşleşen metnin tamamını ifade eder.

  • transform

    URLTransform isteğe bağlı

    Gerçekleştirilecek URL dönüşümleri.

  • url

    string isteğe bağlı

    Yönlendirme URL'si. JavaScript URL'lerine yönlendirmelere izin verilmez.

RegexOptions

Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • isCaseSensitive

    boole isteğe bağlı

    Belirtilen regex değerinin büyük/küçük harfe duyarlı olup olmadığı. Varsayılan değer true'dur.

  • normal ifade : regex

    dize

    Kontrol edilecek normal ifade.

  • requireCapturing

    boole isteğe bağlı

    Belirtilen regex için yakalama gerekip gerekmediği. Yakalama, yalnızca regexSubstition işlemi belirten yönlendirme kuralları için gereklidir. Varsayılan değer "false"dur.

RequestDetails

Özellikler

  • documentId

    string isteğe bağlı

    Chrome 106 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu istek bir çerçeve içinse çerçevenin dokümanının benzersiz tanımlayıcısı.

  • documentLifecycle

    DocumentLifecycle isteğe bağlı

    Chrome 106 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu istek bir çerçeve içinse çerçevenin dokümanının yaşam döngüsü.

  • frameId

    sayı

    0 değeri, isteğin ana çerçevede gerçekleştiğini gösterir. Pozitif bir değer, isteğin gerçekleştiği alt çerçevenin kimliğini gösterir. Bir (alt) çerçevenin dokümanı yüklüyse (type, main_frame veya sub_frame ise) frameId, dış çerçevenin kimliğini değil, bu çerçevenin kimliğini gösterir. Kare kimlikleri bir sekme içinde benzersizdir.

  • frameType

    FrameType isteğe bağlı

    Chrome 106 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu istek bir çerçeve içinse çerçevenin türü.

  • başlatan

    string isteğe bağlı

    İsteğin başlatıldığı kaynak. Bu durum, yönlendirmelerle değişmez. Bu, opak bir kaynaksa "null" dizesi kullanılır.

  • method

    dize

    Standart HTTP yöntemi.

  • parentDocumentId

    string isteğe bağlı

    Chrome 106 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu istek bir çerçeve içinse ve bir üst öğesi varsa çerçevenin üst dokümanının benzersiz tanımlayıcısı.

  • parentFrameId

    sayı

    İsteği gönderen çerçeveyi sarmalayan çerçevenin kimliği. Üst çerçeve yoksa -1 olarak ayarlanır.

  • requestId

    dize

    İsteğin kimliği. İstek kimlikleri, tarayıcı oturumunda benzersizdir.

  • tabId

    sayı

    İsteğin gerçekleştiği sekmenin kimliği. İstek bir sekmeyle ilgili değilse -1 olarak ayarlanır.

  • İsteğin kaynak türü.

  • url

    dize

    İsteğin URL'si.

RequestMethod

Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bu, bir ağ isteğinin HTTP istek yöntemini açıklar.

Enum

"connect"

"delete"

"get"

"head"

"options"

"patch"

"post"

"put"

"diğer"

ResourceType

Bu, ağ isteğinin kaynak türünü açıklar.

Enum

"main_frame"

"sub_frame"

"stylesheet"

"script"

"image"

"font"

"object"

"xmlhttprequest"

"ping"

"csp_report"

"media"

"websocket"

"webtransport"

"webbundle"

"diğer"

Rule

Özellikler

  • işlem

    Bu kural eşleşirse yapılacak işlem.

  • koşul

    Bu kuralın tetiklendiği koşul.

  • id

    sayı

    Bir kuralı benzersiz şekilde tanımlayan kimlik. Zorunludur ve >= 1 olmalıdır.

  • önceliği

    number isteğe bağlı

    Kural önceliği. Varsayılan olarak 1 değerine ayarlanır. Belirtildiğinde >= 1 olmalıdır.

RuleAction

Özellikler

  • yönlendir

    Yönlendirme isteğe bağlı

    Yönlendirmenin nasıl gerçekleştirileceğini açıklar. Yalnızca yönlendirme kuralları için geçerlidir.

  • requestHeaders

    ModifyHeaderInfo[] isteğe bağlı

    Chrome 86 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İstek için değiştirilecek istek başlıkları. Yalnızca RuleActionType "modifyHeaders" ise geçerlidir.

  • responseHeaders

    ModifyHeaderInfo[] isteğe bağlı

    Chrome 86 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İstek için değiştirilecek yanıt başlıkları. Yalnızca RuleActionType "modifyHeaders" ise geçerlidir.

  • Gerçekleştirilecek işlemin türü.

RuleActionType

Belirli bir RuleCondition eşleşirse yapılacak işlem türünü açıklar.

Enum

"block"
Ağ isteğini engeller.

"redirect"
Ağ isteğini yönlendirin.

"allow"
Ağ isteğine izin verin. İstek, kendisiyle eşleşen bir izin verme kuralı varsa engellenmez.

"upgradeScheme"
İstek http veya ftp ise ağ isteği URL'sinin şemasını https'ye yükseltin.

"modifyHeaders"
Ağ isteğindeki istek/yanıt başlıklarını değiştirin.

"allowAllRequests"
Çerçeve isteğinin kendisi de dahil olmak üzere bir çerçeve hiyerarşisindeki tüm isteklere izin verilir.

RuleCondition

Özellikler

  • domainType

    DomainType isteğe bağlı

    Ağ isteğinin, kaynaklandığı alan için birinci taraf mı yoksa üçüncü taraf mı olduğunu belirtir. Atlanırsa tüm istekler kabul edilir.

  • alan adları

    string[] isteğe bağlı

    Chrome 101'den itibaren desteği sonlandırıldı

    Bunun yerine initiatorDomains kullanın

    Kural yalnızca domains listesinden kaynaklanan ağ istekleriyle eşleşir.

  • excludedDomains

    string[] isteğe bağlı

    Chrome 101'den itibaren desteği sonlandırıldı

    Bunun yerine excludedInitiatorDomains kullanın

    Kural, excludedDomains listesinden kaynaklanan ağ istekleriyle eşleşmez.

  • excludedInitiatorDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Kural, excludedInitiatorDomains listesinden kaynaklanan ağ istekleriyle eşleşmez. Liste boşsa veya atlanırsa hiçbir alan hariç tutulmaz. Bu, initiatorDomains politikasına göre daha önceliklidir.

    Notlar:

    • "a.example.com" gibi alt alan adlarına da izin verilir.
    • Girişler yalnızca ASCII karakterlerinden oluşmalıdır.
    • Uluslararası alan adları için Punycode kodlaması kullanın.
    • Bu, istek URL'siyle değil, isteği başlatanla eşleşir.
    • Listelenen alan adlarının alt alan adları da hariç tutulur.
  • excludedRequestDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Alan adları excludedRequestDomains listesindeki bir alan adıyla eşleştiğinde kural, ağ istekleriyle eşleşmez. Liste boşsa veya atlanırsa hiçbir alan hariç tutulmaz. Bu, requestDomains politikasına göre daha önceliklidir.

    Notlar:

    • "a.example.com" gibi alt alan adlarına da izin verilir.
    • Girişler yalnızca ASCII karakterlerinden oluşmalıdır.
    • Uluslararası alan adları için Punycode kodlaması kullanın.
    • Listelenen alan adlarının alt alan adları da hariç tutulur.
  • excludedRequestMethods

    RequestMethod[] isteğe bağlı

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Kuralın eşleşmeyeceği istek yöntemlerinin listesi. requestMethods ve excludedRequestMethods özelliklerinden yalnızca biri belirtilmelidir. Hiçbiri belirtilmezse tüm istek yöntemleri eşleştirilir.

  • excludedResourceTypes

    ResourceType[] isteğe bağlı

    Kuralın eşleşmeyeceği kaynak türlerinin listesi. resourceTypes ve excludedResourceTypes özelliklerinden yalnızca biri belirtilmelidir. İkisi de belirtilmezse "main_frame" dışındaki tüm kaynak türleri engellenir.

  • excludedResponseHeaders

    HeaderInfo[] isteğe bağlı

    Chrome 128 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İstek, bu listedeki herhangi bir yanıt başlığı koşuluyla eşleşirse (belirtilmişse) kural eşleşmez. Hem excludedResponseHeaders hem de responseHeaders belirtilirse excludedResponseHeaders özelliği öncelikli olur.

  • excludedTabIds

    number[] isteğe bağlı

    Chrome 92+ Chrome 148'den itibaren browser.*

    Kuralın eşleşmemesi gereken tabs.Tab.id listesi. tabs.TAB_ID_NONE kimliği, bir sekmeden kaynaklanmayan istekleri hariç tutar. Yalnızca oturum kapsamlı kurallar için desteklenir.

  • excludedTopDomains

    string[] isteğe bağlı

    Chrome 145 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İlişkili üst düzey çerçevenin alanı, excludedTopDomains listesindeki bir alanla eşleştiğinde kural, ağ istekleriyle eşleşmez. Liste boşsa veya atlanırsa hiçbir alan hariç tutulmaz. Bu, topDomains politikasına göre daha önceliklidir.

    Notlar:

    • "a.example.com" gibi alt alan adlarına da izin verilir.
    • Girişler yalnızca ASCII karakterlerinden oluşmalıdır.
    • Uluslararası alan adları için Punycode kodlaması kullanın.
    • Listelenen alan adlarının alt alan adları da hariç tutulur.
    • İlişkili üst düzey çerçevesi olmayan isteklerde (ör. ServiceWorker tarafından başlatılan istekler) istek başlatıcının alanı dikkate alınır.
  • initiatorDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Kural yalnızca initiatorDomains listesinden kaynaklanan ağ istekleriyle eşleşir. Liste atlanırsa kural tüm alanlardan gelen isteklere uygulanır. Boş listeye izin verilmez.

    Notlar:

    • "a.example.com" gibi alt alan adlarına da izin verilir.
    • Girişler yalnızca ASCII karakterlerinden oluşmalıdır.
    • Uluslararası alan adları için Punycode kodlaması kullanın.
    • Bu, istek URL'siyle değil, isteği başlatanla eşleşir.
    • Listelenen alan adlarının alt alan adları da eşleştirilir.
  • isUrlFilterCaseSensitive

    boole isteğe bağlı

    urlFilter veya regexFilter (hangisi belirtilmişse) büyük/küçük harfe duyarlı olup olmadığı. Varsayılan değer "false"dur.

  • regexFilter

    string isteğe bağlı

    Ağ isteği URL'siyle eşleşecek normal ifade. Bu, RE2 söz dizimine uyar.

    Not: urlFilter veya regexFilter değerlerinden yalnızca biri belirtilebilir.

    Not: regexFilter yalnızca ASCII karakterlerden oluşmalıdır. Bu, ana makinenin punycode biçiminde kodlandığı (uluslararası alan adları söz konusu olduğunda) ve ASCII olmayan diğer tüm karakterlerin UTF-8 biçiminde URL olarak kodlandığı bir URL ile eşleştirilir.

  • requestDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Kural, yalnızca alan adı requestDomains listesindeki bir alan adıyla eşleştiğinde ağ istekleriyle eşleşir. Liste atlanırsa kural tüm alanlardan gelen isteklere uygulanır. Boş listeye izin verilmez.

    Notlar:

    • "a.example.com" gibi alt alan adlarına da izin verilir.
    • Girişler yalnızca ASCII karakterlerinden oluşmalıdır.
    • Uluslararası alan adları için Punycode kodlaması kullanın.
    • Listelenen alan adlarının alt alan adları da eşleştirilir.
  • requestMethods

    RequestMethod[] isteğe bağlı

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Kuralın eşleşebileceği HTTP istek yöntemlerinin listesi. Boş listeye izin verilmez.

    Not: requestMethods kural koşulunun belirtilmesi, HTTP(s) olmayan istekleri de hariç tutar. excludedRequestMethods belirtildiğinde ise bu istekler hariç tutulmaz.

  • resourceTypes

    ResourceType[] isteğe bağlı

    Kuralın eşleşebileceği kaynak türlerinin listesi. Boş listeye izin verilmez.

    Not: Bu, allowAllRequests kuralları için belirtilmelidir ve yalnızca sub_frame ve main_frame kaynak türlerini içerebilir.

  • responseHeaders

    HeaderInfo[] isteğe bağlı

    Chrome 128 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İstek, bu listedeki herhangi bir yanıt başlığı koşuluyla eşleşirse (belirtilmişse) kural eşleşir.

  • tabIds

    number[] isteğe bağlı

    Chrome 92+ Chrome 148'den itibaren browser.*

    Kuralın eşleşmesi gereken tabs.Tab.id listesi. tabs.TAB_ID_NONE kimliği, bir sekmeden kaynaklanmayan isteklerle eşleşir. Boş listeye izin verilmez. Yalnızca oturum kapsamlı kurallar için desteklenir.

  • topDomains

    string[] isteğe bağlı

    Chrome 145 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Kural, yalnızca ilişkili üst düzey çerçevenin alanı topDomains listesindeki bir alanla eşleştiğinde ağ istekleriyle eşleşir. Liste atlanırsa kural, tüm üst düzey çerçeve alanlarıyla ilişkili isteklere uygulanır. Boş listeye izin verilmez.

    Notlar:

    • "a.example.com" gibi alt alan adlarına da izin verilir.
    • Girişler yalnızca ASCII karakterlerinden oluşmalıdır.
    • Uluslararası alan adları için Punycode kodlaması kullanın.
    • Listelenen alan adlarının alt alan adları da eşleştirilir.
    • İlişkili üst düzey çerçevesi olmayan isteklerde (ör. ServiceWorker tarafından başlatılan istekler) istek başlatıcının alanı dikkate alınır.
  • urlFilter

    string isteğe bağlı

    Ağ isteği URL'siyle eşleştirilen kalıp. Desteklenen yapılar:

    "*" : Joker karakter: Herhangi bir sayıda karakterle eşleşir.

    "|" : Sol/sağ sabitleyici: Kalıbın her iki ucunda da kullanılıyorsa sırasıyla URL'nin başlangıcını/sonunu belirtir.

    '||' : Alan adı sabitleyici: Kalıbın başında kullanıldığında URL'nin (alt) alan adının başlangıcını belirtir.

    '^' : Ayırıcı karakter: Harf, rakam veya şunlardan biri hariç her şeyle eşleşir: _, -, . veya %. Bu, URL'nin sonuyla da eşleşir.

    Bu nedenle urlFilter şu bölümlerden oluşur: (isteğe bağlı Sol/Alan adı sabitleyici) + kalıp + (isteğe bağlı Sağ sabitleyici).

    Atlanırsa tüm URL'ler eşleştirilir. Boş dizeye izin verilmez.

    ||* ile başlayan kalıplara izin verilmez. Bunun yerine * politikasını kullanın.

    Not: urlFilter veya regexFilter değerlerinden yalnızca biri belirtilebilir.

    Not: urlFilter yalnızca ASCII karakterlerden oluşmalıdır. Bu, ana makinenin punycode biçiminde kodlandığı (uluslararası alan adları söz konusu olduğunda) ve ASCII olmayan diğer tüm karakterlerin UTF-8 biçiminde URL olarak kodlandığı bir URL ile eşleştirilir. Örneğin, istek URL'si http://abc.рф?q=ф olduğunda urlFilter, http://abc.xn--p1ai/?q=%D1%84 URL'si ile eşleştirilir.

RuleConditionKeys

Chrome 145 ve sonraki sürümler Chrome 148'den itibaren browser.*

Enum

"urlFilter"

"regexFilter"

"isUrlFilterCaseSensitive"

"initiatorDomains"

"excludedInitiatorDomains"

"requestDomains"

"excludedRequestDomains"

"topDomains"

"excludedTopDomains"

"domains"

"excludedDomains"

"resourceTypes"

"excludedResourceTypes"

"requestMethods"

"excludedRequestMethods"

"domainType"

"tabIds"

"excludedTabIds"

"responseHeaders"

"excludedResponseHeaders"

Ruleset

Özellikler

  • etkin

    boole

    Kural grubunun varsayılan olarak etkin olup olmadığı.

  • id

    dize

    Kural grubunu benzersiz şekilde tanımlayan, boş olmayan bir dize. "_" ile başlayan kimlikler dahili kullanım için ayrılmıştır.

  • yol

    dize

    JSON kural kümesinin uzantı dizinine göre yolu.

RulesMatchedDetails

Özellikler

  • rulesMatchedInfo

    Belirtilen filtreyle eşleşen kurallar.

TabActionCountUpdate

Chrome 89 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • artır

    sayı

    Sekmenin işlem sayısının artırılacağı miktar. Negatif değerler sayıyı azaltır.

  • tabId

    sayı

    İşlem sayısının güncelleneceği sekme.

TestMatchOutcomeResult

Chrome 103 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • matchedRules

    Varsayımsal istekle eşleşen kurallar (varsa).

TestMatchRequestDetails

Chrome 103 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • başlatan

    string isteğe bağlı

    Varsayımsal istek için başlatıcı URL'si (varsa).

  • method

    RequestMethod isteğe bağlı

    Varsayımsal isteğin standart HTTP yöntemi. HTTP istekleri için varsayılan olarak "get" değerine ayarlanır ve HTTP olmayan istekler için yoksayılır.

  • responseHeaders

    isteğe bağlı nesne

    Chrome 129 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İstek, gönderilmeden önce engellenmez veya yönlendirilmezse varsayımsal bir yanıt tarafından sağlanan başlıklar. Bir başlık adını dize değerleri listesiyle eşleyen bir nesne olarak temsil edilir. Belirtilmezse varsayımsal yanıt, boş yanıt başlıkları döndürür. Bu başlıklar, başlıkların mevcut olmamasıyla eşleşen kurallarla eşleşebilir. Ör. {"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}

  • tabId

    number isteğe bağlı

    Varsayımsal isteğin gerçekleştiği sekmenin kimliği. Gerçek bir sekme kimliğiyle eşleşmesi gerekmez. Varsayılan değer -1'dir. Bu, isteğin bir sekmeyle ilgili olmadığı anlamına gelir.

  • topUrl

    string isteğe bağlı

    Chrome 145 ve sonraki sürümler Chrome 148'den itibaren browser.*

    İstek için ilişkili üst düzey çerçeve URL'si (varsa).

  • Varsayımsal isteğin kaynak türü.

  • url

    dize

    Varsayımsal isteğin URL'si.

UnsupportedRegexReason

Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

Belirli bir normal ifadenin neden desteklenmediğini açıklar.

Enum

"syntaxError"
Normal ifade, söz dizimi açısından hatalı veya RE2 söz diziminde bulunmayan özellikleri kullanıyor.

"memoryLimitExceeded"
Normal ifade, bellek sınırını aşıyor.

UpdateRuleOptions

Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • addRules

    Rule[] isteğe bağlı

    Eklenecek kurallar.

  • removeRuleIds

    number[] isteğe bağlı

    Kaldırılacak kuralların kimlikleri. Geçersiz kimlikler yoksayılır.

UpdateRulesetOptions

Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • disableRulesetIds

    string[] isteğe bağlı

    Devre dışı bırakılması gereken statik Ruleset'e karşılık gelen kimlik grubu.

  • enableRulesetIds

    string[] isteğe bağlı

    Etkinleştirilmesi gereken statik bir Ruleset'e karşılık gelen kimlik grubu.

UpdateStaticRulesOptions

Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • disableRuleIds

    number[] isteğe bağlı

    Ruleset içinde devre dışı bırakılacak kurallara karşılık gelen kimlikler kümesi.

  • enableRuleIds

    number[] isteğe bağlı

    Etkinleştirilecek Ruleset'deki kurallara karşılık gelen kimlik grubu.

  • rulesetId

    dize

    Statik bir Ruleset'e karşılık gelen kimlik.

URLTransform

Özellikler

  • parça

    string isteğe bağlı

    İstek için yeni parça. Boş olmalıdır (bu durumda mevcut parça temizlenir) veya "#" ile başlamalıdır.

  • düzenleyen

    string isteğe bağlı

    İstek için yeni ana makine.

  • şifre

    string isteğe bağlı

    İstek için yeni şifre.

  • yol

    string isteğe bağlı

    İsteğin yeni yolu. Boşsa mevcut yol temizlenir.

  • bağlantı noktası

    string isteğe bağlı

    İstek için yeni bağlantı noktası. Boş bırakılırsa mevcut bağlantı noktası temizlenir.

  • sorgu

    string isteğe bağlı

    İstek için yeni sorgu. Boş olmalıdır (bu durumda mevcut sorgu temizlenir) veya "?" ile başlamalıdır.

  • queryTransform

    QueryTransform isteğe bağlı

    Sorgu anahtar/değer çiftlerini ekleyin, kaldırın veya değiştirin.

  • şema

    string isteğe bağlı

    İstek için yeni şema. İzin verilen değerler "http", "https", "ftp" ve "chrome-extension"dır.

  • kullanıcı adı

    string isteğe bağlı

    İstek için yeni kullanıcı adı.

Özellikler

DYNAMIC_RULESET_ID

Uzantı tarafından eklenen dinamik kuralların kural kümesi kimliği.

Değer

"_dynamic"

GETMATCHEDRULES_QUOTA_INTERVAL

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules aramalarının yapılabileceği zaman aralığı (dakika cinsinden belirtilir). Ek çağrılar hemen başarısız olur ve runtime.lastError değerini ayarlar. Not: Kullanıcı hareketiyle ilişkili getMatchedRules çağrıları kotadan muaftır.

Değer

10

GUARANTEED_MINIMUM_STATIC_RULES

Chrome 89 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bir uzantının etkin statik kural kümelerinde garanti edilen minimum statik kural sayısı. Bu sınırın üzerindeki kurallar, genel statik kural sınırına dahil edilir.

Değer

30000

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL

getMatchedRules, GETMATCHEDRULES_QUOTA_INTERVAL içinde en fazla bu kadar kez çağrılabilir.

Değer

20

MAX_NUMBER_OF_DYNAMIC_RULES

Bir uzantının ekleyebileceği maksimum dinamik kural sayısı.

Değer

30000

MAX_NUMBER_OF_ENABLED_STATIC_RULESETS

Chrome 94 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bir uzantının aynı anda etkinleştirebileceği maksimum statik Rulesets sayısı.

Değer

50

MAX_NUMBER_OF_REGEX_RULES

Bir uzantının ekleyebileceği maksimum normal ifade kuralı sayısı. Bu sınır, dinamik kural grubu ve kural kaynakları dosyasında belirtilenler için ayrı ayrı değerlendirilir.

Değer

1000

MAX_NUMBER_OF_SESSION_RULES

Chrome 120 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bir uzantının ekleyebileceği oturum kapsamlı kuralların maksimum sayısı.

Değer

5000

MAX_NUMBER_OF_STATIC_RULESETS

Bir uzantının "rule_resources" manifest anahtarının bir parçası olarak belirtebileceği maksimum statik Rulesets sayısı.

Değer

100

MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

Chrome 120 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bir uzantının ekleyebileceği maksimum "güvenli olmayan" dinamik kural sayısı.

Değer

5000

MAX_NUMBER_OF_UNSAFE_SESSION_RULES

Chrome 120 ve sonraki sürümler Chrome 148'den itibaren browser.*

Bir uzantının ekleyebileceği "güvenli olmayan" oturum kapsamlı kuralların maksimum sayısı.

Değer

5000

SESSION_RULESET_ID

Chrome 90 ve sonraki sürümler Chrome 148'den itibaren browser.*

Uzantı tarafından eklenen oturum kapsamlı kuralların kural grubu kimliği.

Değer

"_session"

Yöntemler

getAvailableStaticRuleCount()

Chrome 89 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.getAvailableStaticRuleCount(): Promise<number>

Bir uzantının genel statik kural sınırına ulaşmadan önce etkinleştirebileceği statik kural sayısını döndürür.

İadeler

  • Promise<number>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

getDisabledRuleIds()

Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.getDisabledRuleIds(
  options: GetDisabledRuleIdsOptions,
)
: Promise<number[]>

Belirtilen Ruleset içinde şu anda devre dışı olan statik kuralların listesini döndürür.

Parametreler

İadeler

  • Promise<number[]>

    Bu kural grubundaki devre dışı bırakılmış kurallara karşılık gelen kimliklerin listesiyle çözümlenen Promise.

getDynamicRules()

browser.declarativeNetRequest.getDynamicRules(
  filter?: GetRulesFilter,
)
: Promise<Rule[]>

Uzantı için geçerli dinamik kural grubunu döndürür. Arayanlar, isteğe bağlı olarak bir filter belirterek getirilen kuralların listesini filtreleyebilir.

Parametreler

  • filtre

    GetRulesFilter isteğe bağlı

    Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Alınan kuralların listesini filtrelemek için kullanılan bir nesne.

İadeler

  • Promise<Rule[]>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Dinamik kural grubuyla çözümlenen Promise. Geçici dahili hatalar nedeniyle Promise reddedilebilir.

getEnabledRulesets()

browser.declarativeNetRequest.getEnabledRulesets(): Promise<string[]>

Geçerli etkin statik kural kümelerinin kimliklerini döndürür.

İadeler

  • Promise<string[]>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Her kimliğin etkin bir statik Ruleset'ye karşılık geldiği kimlik listesiyle çözümlenen Promise.

getMatchedRules()

browser.declarativeNetRequest.getMatchedRules(
  filter?: MatchedRulesFilter,
)
: Promise<RulesMatchedDetails>

Uzantıyla eşleşen tüm kuralları döndürür. Arayanlar, isteğe bağlı olarak bir filter belirterek eşleşen kuralların listesini filtreleyebilir. Bu yöntem yalnızca "declarativeNetRequestFeedback" iznine sahip olan veya filter içinde belirtilen tabId için "activeTab" izni verilmiş uzantılar tarafından kullanılabilir. Not: Beş dakikadan daha uzun süre önce eşleştirilen ve etkin bir dokümanla ilişkili olmayan kurallar döndürülmez.

Parametreler

  • filtre

    MatchedRulesFilter isteğe bağlı

    Eşleşen kuralların listesini filtrelemek için kullanılan bir nesne.

İadeler

  • Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Eşleşen kuralların listesi getirildikten sonra çözümlenen Promise. Hata durumunda Promise reddedilir. Bu durum, yetersiz izinler veya kotanın aşılması gibi çeşitli nedenlerden kaynaklanabilir.

getSessionRules()

Chrome 90 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.getSessionRules(
  filter?: GetRulesFilter,
)
: Promise<Rule[]>

Uzantı için geçerli oturum kapsamlı kural grubunu döndürür. Arayanlar, isteğe bağlı olarak bir filter belirterek getirilen kuralların listesini filtreleyebilir.

Parametreler

  • filtre

    GetRulesFilter isteğe bağlı

    Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Alınan kuralların listesini filtrelemek için kullanılan bir nesne.

İadeler

  • Promise<Rule[]>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Oturum kapsamlı kural grubuyla çözümlenen Promise.

isRegexSupported()

Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.isRegexSupported(
  regexOptions: RegexOptions,
)
: Promise<IsRegexSupportedResult>

Belirtilen normal ifadenin regexFilter kural koşulu olarak desteklenip desteklenmeyeceğini kontrol eder.

Parametreler

İadeler

  • Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Normal ifadenin desteklenip desteklenmediği ve desteklenmiyorsa nedeni gibi ayrıntılarla çözümlenen Promise.

setExtensionActionOptions()

Chrome 88 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.setExtensionActionOptions(
  options: ExtensionActionOptions,
)
: Promise<void>

Sekmeler için işlem sayısının, uzantı işleminin rozet metni olarak gösterilip gösterilmeyeceğini yapılandırır ve bu işlem sayısının artırılmasına olanak tanır.

Parametreler

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

testMatchOutcome()

Chrome 103 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.testMatchOutcome(
  request: TestMatchRequestDetails,
)
: Promise<TestMatchOutcomeResult>

Uzantının declarativeNetRequest kurallarından herhangi birinin varsayımsal bir istekle eşleşip eşleşmediğini kontrol eder. Not: Yalnızca uzantı geliştirme sırasında kullanılması amaçlandığından, yalnızca paketi açılmış uzantılar için kullanılabilir.

Parametreler

İadeler

updateDynamicRules()

browser.declarativeNetRequest.updateDynamicRules(
  options: UpdateRuleOptions,
)
: Promise<void>

Uzantının mevcut dinamik kural grubunu değiştirir. Kimlikleri options.removeRuleIds içinde listelenen kurallar önce kaldırılır, ardından options.addRules içinde verilen kurallar eklenir. Notlar:

  • Bu güncelleme tek bir atomik işlem olarak gerçekleşir: Belirtilen tüm kurallar eklenir ve kaldırılır ya da bir hata döndürülür.
  • Bu kurallar, tarayıcı oturumları ve uzantı güncellemeleri boyunca kalıcıdır.
  • Uzantı paketinin bir parçası olarak belirtilen statik kurallar bu işlev kullanılarak kaldırılamaz.
  • MAX_NUMBER_OF_DYNAMIC_RULES, bir uzantının ekleyebileceği maksimum dinamik kural sayısıdır. Güvenli olmayan kural sayısı MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES'ü aşmamalıdır.

Parametreler

  • seçenekler
    Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Güncelleme tamamlandığında çözümlenen Promise. Hata durumunda promise reddedilir ve kural kümesinde herhangi bir değişiklik yapılmaz. Bu durum; geçersiz kural biçimi, yinelenen kural kimliği, kural sayısı sınırının aşılması, dahili hatalar ve diğer nedenlerden kaynaklanabilir.

updateEnabledRulesets()

browser.declarativeNetRequest.updateEnabledRulesets(
  options: UpdateRulesetOptions,
)
: Promise<void>

Uzantı için etkinleştirilen statik kural kümelerini günceller. Kimlikleri options.disableRulesetIds içinde listelenen kural kümeleri önce kaldırılır, ardından options.enableRulesetIds içinde listelenen kural kümeleri eklenir. Etkin statik kural kümelerinin oturumlar arasında kalıcı olduğunu ancak uzantı güncellemeleri arasında kalıcı olmadığını unutmayın. Yani rule_resources manifest anahtarı, her uzantı güncellemesinde etkin statik kural kümelerini belirler.

Parametreler

  • seçenekler
    Chrome 87 ve sonraki sürümler Chrome 148'den itibaren browser.*

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Güncelleme tamamlandığında çözümlenen Promise. Hata durumunda promise reddedilir ve etkin kural kümelerinde herhangi bir değişiklik yapılmaz. Bu durum, geçersiz kural grubu kimlikleri, kural sayısı sınırının aşılması veya dahili hatalar gibi çeşitli nedenlerden kaynaklanabilir.

updateSessionRules()

Chrome 90 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.updateSessionRules(
  options: UpdateRuleOptions,
)
: Promise<void>

Uzantı için mevcut oturum kapsamlı kural grubunu değiştirir. Kimlikleri options.removeRuleIds içinde listelenen kurallar önce kaldırılır, ardından options.addRules içinde verilen kurallar eklenir. Notlar:

  • Bu güncelleme tek bir atomik işlem olarak gerçekleşir: Belirtilen tüm kurallar eklenir ve kaldırılır ya da bir hata döndürülür.
  • Bu kurallar oturumlar arasında kalıcı değildir ve bellekte yedeklenir.
  • Bir uzantının ekleyebileceği maksimum oturum kuralı sayısı MAX_NUMBER_OF_SESSION_RULES'dir.

Parametreler

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Güncelleme tamamlandığında çözümlenen Promise. Hata durumunda promise reddedilir ve kural kümesinde herhangi bir değişiklik yapılmaz. Bu durum, geçersiz kural biçimi, yinelenen kural kimliği, kural sayısı sınırının aşılması gibi çeşitli nedenlerden kaynaklanabilir.

updateStaticRules()

Chrome 111 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.declarativeNetRequest.updateStaticRules(
  options: UpdateStaticRulesOptions,
)
: Promise<void>

Ruleset içindeki statik kuralları tek tek devre dışı bırakır ve etkinleştirir. Devre dışı bırakılmış bir Ruleset kuralında yapılan değişiklikler, kural bir sonraki etkinleştirildiğinde geçerli olur.

Parametreler

İadeler

  • Promise<void>

    Güncelleme tamamlandığında çözümlenen Promise. Hata durumunda promise reddedilir ve etkin statik kurallarda değişiklik yapılmaz.

Etkinlikler

onRuleMatchedDebug

browser.declarativeNetRequest.onRuleMatchedDebug.addListener(
  callback: function,
)

Bir kural bir istekle eşleştiğinde tetiklenir. Yalnızca hata ayıklama amacıyla kullanılması amaçlandığından, yalnızca "declarativeNetRequestFeedback" iznine sahip paketlenmemiş uzantılar için kullanılabilir.

Parametreler