chrome.declarativeNetRequest

Açıklama

chrome.declarativeNetRequest API, açıklayıcı kurallar belirleyerek ağ isteklerini engellemek veya değiştirmek için kullanılır. Bu sayede uzantılar, ağ isteklerini araya girmeden 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. Mümkün olduğunda, barındırıcılara tam erişim isteğinde bulunmamak için bu seçeneği kullanın.
"declarativeNetRequestFeedback"
Ayıklanmamış uzantılar (özellikle getMatchedRules() ve onRuleMatchedDebug) için hata ayıklama özelliklerini etkinleştirir.
"declarativeNetRequestWithHostAccess"
Yükleme sırasında izin uyarısı gösterilmez ancak bir ana makinede herhangi bir işlem yapmadan önce ana makine izinleri istemeniz gerekir. Bu, ek uyarılar oluşturmadan, zaten ana makine izinlerine sahip bir uzantıda açıklayıcı net istek kurallarını kullanmak istediğinizde uygundur.

Kullanılabilirlik

Chrome 84 ve üzeri sürümler

Manifest

Daha önce açıklanan izinlere ek olarak, belirli kural kümesi türleri (özellikle statik kural kümeleri) "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ündeki sözlükler içeren bir dizidir. ("Kural kümesi" adı, yalnızca bir dizi olduğundan manifest'in JSON'unda görünmez.) Statik kural kümeleri bu belgenin ilerleyen bölümlerinde 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 kümesi belirtin. Kural kümesi, bir dizi kural içerir. Tek bir kural aşağıdakilerden birini yapar:

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

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

Dinamik
Tarayıcı oturumları ve uzantı yükseltmelerinde devam eder ve bir uzantı kullanılırken JavaScript kullanılarak yönetilir.
Oturum
Tarayıcı kapandığında ve uzantının yeni bir sürümü yüklendiğinde temizlenir. Uzantı kullanılırken oturum kuralları JavaScript kullanılarak yönetilir.
Statik
Bir uzantı yüklendiğinde veya yükseltildiğ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 kullanılarak yönetilir.

  • Dinamik kurallar, tarayıcı oturumları ve uzantı yükseltmelerinde devam eder.
  • Tarayıcı kapatıldığında ve uzantının yeni bir sürümü yüklendiğinde oturum kuralları temizlenir.

Bu kural kümesi türlerinden her biri yalnızca bir tanedir. Kural sınırları aşılmadığı sürece uzantılar, updateDynamicRules() ve updateSessionRules() çağrılarını kullanarak bu kurallara dinamik olarak kural ekleyebilir veya kurallar 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 bu konuyla ilgili bir örnek görebilirsiniz.

Statik kural kümeleri

Dinamik ve oturum kurallarının aksine statik kurallar, bir uzantı yüklendiğinde veya yükseltildiğinde paketlenir, yüklenir ve güncellenir. Bu veriler, JSON biçiminde kural dosyalarında depolanır. Bu dosyalar, "declarative_net_request" ve "rule_resources" anahtarları yukarıda açıklandığı gibi ve bir veya daha fazla Ruleset sözlüğü kullanılarak uzantıya gösterilir. Ruleset sözlüğü, kural dosyasının yolunu, dosyada bulunan kural kümesinin kimliğini ve kural kümesinin etkin olup olmadığını içerir. Son ikisi, bir kural kümesini 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ı unpacked 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 kümelerini etkinleştirme ve devre dışı bırakma

Hem tek tek statik kurallar hem de 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ı arasında korunur. Bu iki dosya da uzantı güncellemelerinde korunmaz. 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 kümesi sayısı da sınırlıdır. Etkinleştirilebilecek ek kuralların sayısını kontrol etmek için getAvailableStaticRuleCount() numaralı telefonu arayı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() komutunu ç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ılmış statik kural sayısı en fazla 5.000 olabilir.

Statik kural kümelerini etkinleştirmek veya devre dışı bırakmak için updateEnabledRulesets() işlevini ç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ünden bağımsız olarak kurallar aşağıdaki gibi dört alanla başlar. "id" ve "priority" anahtarları bir sayı alırken "action" ve "condition" anahtarları çeşitli engelleme ve yönlendirme koşulları sağlayabilir. Aşağıdaki kural, "foo.com" kaynaklı ve alt dizesi "abc" olan 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

Açıklayıcı Net İstek, URL'leri bir kalıp eşleştirme söz dizimi veya normal ifadelerle eşleştirme olanağı sunar.

URL filtresi söz dizimi

Bir kuralın "condition" anahtarı, belirli 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" anahtarını inceleyin. Bu koşullar için geçerli olan sınırlar hakkında bilgi edinmek istiyorsanız Normal ifadeleri kullanan kurallar başlıklı makaleyi inceleyin.

İyi URL koşulları yazma

Kural yazarken her zaman alanın tamamıyla eşleşecek şekilde dikkatli olun. Aksi takdirde, kuralınız beklenmedik durumlarda eşleşebilir. Örneğin, kalıp eşleme 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

Şunları kullanabilirsiniz:

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

Benzer şekilde, normal ifadeyi sabitlemek için ^ ve / karakterlerini kullanın. Örneğin, ^https:\/\/www\.google\.com\/, https://www.google.com adresindeki herhangi bir yola 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.

İstek öncesinde

Bir uzantı, istek yapılmadan önce eşleşen bir kuralla 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 listesini belirler. modifyHeaders işlemi içeren kurallar daha sonra ele alınacağı için buraya dahil edilmez. Ayrıca, responseHeaders koşulu içeren kurallar daha sonra (yanıt üstbilgileri mevcut olduğunda) değerlendirilir ve dahil edilmez.

Ardından Chrome, her uzantı için istek başına en fazla bir aday seçer. Chrome, eşleşen tüm kuralları öncelik sırasına 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 istemin gönderildiği çerçeve daha önce bu uzantıda daha yüksek veya eşit öncelikli 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 yapılacak tek bir işlem seçilir. Chrome bunu, kuralları block > redirect veya upgradeScheme > allow ya da allowAllRequests sırasına göre sıralayarak yapar. İki kural aynı türdeyse Chrome, en son yüklenen uzantıdaki kuralı seçer.

İstek üstbilgileri gönderilmeden önce

Chrome, istek üst bilgilerini sunucuya göndermeden önce üst bilgiler 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 yapılacak değişikliklerin listesini oluşturur. Önceki 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 uzantılardaki kuralların her zaman daha eski uzantılardaki kurallardan önce değerlendirileceği şekilde uygulanır. Ayrıca, bir uzantıdaki daha yüksek öncelikli kurallar, her zaman aynı uzantıdaki daha düşük öncelikli kurallardan önce uygulanır. Özellikle uzantılar arasında:

  • Bir kural bir başlığa eklenirse daha düşük öncelikli kurallar yalnızca bu başlığa eklenebilir. Ayarlama ve kaldırma işlemlerine izin verilmez.
  • Bir kural bir başlık ayarlarsa bu başlığa yalnızca aynı uzantıdaki daha düşük öncelikli kurallar eklenebilir. Başka bir değişiklik yapılmasına izin verilmez.
  • Bir kural bir başlığı kaldırırsa daha düşük öncelikli kurallar başlığı daha fazla değiştiremez.

Yanıt alındıktan sonra

Yanıt başlıkları alındıktan sonra Chrome, responseHeaders koşulu içeren kuralları değerlendirir.

Bu kurallar action ve priority'ye göre sıralanır ve eşleşen bir allow veya allowAllRequests kuralı tarafından gereksiz hale getirilen kurallar hariç tutulur (bu işlem, "İstek öncesinde" bölümündeki adımlarla aynı şekilde gerçekleşir). Ardından Chrome, isteği bir uzantı adına engelleyebilir veya yönlendirebilir.

Bir istek bu aşamaya ulaştıysa isteğin sunucuya gönderilmiş olduğunu ve sunucunun istek gövdesi gibi veriler aldığını unutmayın. Yanıt üstbilgileri koşulu içeren bir engelleme veya yönlendirme kuralı yine de çalışır ancak isteği engelleyemez veya yönlendiremez.

Engelleme kuralı söz konusu olduğunda, istek yapan sayfa engellenen bir yanıt alır ve Chrome isteği erken sonlandırır. Yönlendirme kuralı söz konusu olduğunda Chrome, yönlendirilen URL için yeni bir istek gönderir. Bu davranışların, uzantınızla ilgili gizlilik beklentilerini karşılayıp karşılamadığını göz önünde bulundurun.

İstek engellenmez veya yönlendirilmezse Chrome, tüm 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 gönderildiğinden istek başlıklarında değişiklik yapmak hiçbir işe yaramaz.

Güvenli kurallar

Güvenli kurallar, block, allow, allowAllRequests veya upgradeScheme işlemine sahip kurallar olarak tanımlanır. Bu kurallar, daha yüksek bir dinamik kurallar kotasına tabidir.

Kural sınırları

Kuralları tarayıcıda yüklemek ve değerlendirmek performans açısından ek yük oluşturduğundan API'yi kullanı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 tanımlanan kural dosyalarında belirtilen kurallardır. Bir uzantı, "rule_resources" manifest anahtarı kapsamında en fazla 100 statik kural kümesi belirtebilir ancak bu kural kümelerinin yalnızca 50'si aynı anda etkinleştirilebilir. İkincisine MAX_NUMBER_OF_ENABLED_STATIC_RULESETS denir. Bu kural kümelerinin toplamda en az 30.000 kural içerdiği garanti edilir. Buna GUARANTEED_MINIMUM_STATIC_RULES denir.

Bu sayının ardından kullanılabilen kural sayısı, kullanıcının tarayıcısında yüklü olan tüm uzantılar tarafından etkinleştirilen kural sayısına bağlıdır. Bu numarayı, çalışma zamanında getAvailableStaticRuleCount() çağrısını yaparak bulabilirsiniz. Kod örnekleri bölümünde bu konuyla ilgili bir örnek görebilirsiniz.

Oturum kuralları

Bir uzantı en fazla 5.000 oturum kuralına sahip olabilir. Bu değer MAX_NUMBER_OF_SESSION_RULES olarak gösterilir.

Chrome 120'den önce, dinamik ve oturum kurallarının toplam sayısı 5.000 ile sınırlıydı.

Dinamik kurallar

Bir uzantı en az 5.000 dinamik kurala sahip olabilir. Bu değer MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES olarak gösterilir.

Chrome 121'den itibaren, güvenli dinamik kurallar için MAX_NUMBER_OF_DYNAMIC_RULES olarak sunulan 30.000 kurallık daha büyük bir sınır uygulanmaktadır. 5.000 sınırı dahilinde eklenen tüm güvenli olmayan kurallar da bu sınıra dahil edilir.

Chrome 120'den önce, dinamik ve oturum kurallarının toplam sayısı 5.000 ile sınırlıydı.

Normal ifade kullanan kurallar

Tüm kural türlerinde normal ifadeler kullanılabilir. Ancak her türdeki 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, 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 yok sayı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 bir hizmet çalışanının onfetch işleyicisinden geçen yanıtlar dahil olmayabilir. declarativeNetRequest, hizmet çalışanı tarafından oluşturulan veya CacheStorage'ten alınan yanıtları etkilemez ancak bir hizmet çalışanında fetch() çağrılarını etkiler.

Web'de erişilebilir kaynaklar

declarativeNetRequest kuralı, herkese açık bir kaynak isteğinden web'e erişilemeyen bir kaynağa yönlendiremez. Bunu yaptığınızda bir hata tetiklenir. Bu durum, belirtilen web'e erişilebilir kaynağın yönlendiren uzantıya ait olması durumunda bile geçerlidir. declarativeNetRequest için kaynakları beyan etmek üzere manifest'in "web_accessible_resources" dizisini kullanın.

Üstbilgi değişikliği

Ekleme işlemi yalnızca aşağıdaki üstbilgiler 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.

Örnekler

Kod örnekleri

Dinamik kuralları güncelleme

Aşağıdaki örnekte updateDynamicRules() işlevinin nasıl çağrılacağı gösterilmektedir. updateSessionRules() için prosedür aynıdır.

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

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

Statik kural kümelerini güncelleme

Aşağıdaki örnekte, kullanılabilir kural sayısı ve etkinleştirilmiş statik kural sayısının maksimum değeri dikkate alınarak kural kümelerinin nasıl etkinleştirileceği ve devre dışı bırakılacağı gösterilmektedir. Bu işlemi, ihtiyacınız olan statik kural sayısı izin verilen sayıyı aştığında yaparsınız. Bunun çalışması için kural kümelerinizden bazıları devre dışı bırakılarak yüklenmiş olmalıdır (manifest dosyasında "Enabled" değerini false olarak ayarlayın).

async function updateStaticRules(enableRulesetIds, disableCandidateIds) {
  // Create the options structure for the call to updateEnabledRulesets()
  let options = { enableRulesetIds: enableRulesetIds }
  // Get the number of enabled static rules
  const enabledStaticCount = await chrome.declarativeNetRequest.getEnabledRulesets();
  // Compare rule counts to determine if anything needs to be disabled so that
  // new rules can be enabled
  const proposedCount = enableRulesetIds.length;
  if (enabledStaticCount + proposedCount > chrome.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
    options.disableRulesetIds = disableCandidateIds
  }
  // Update the enabled static rules
  await chrome.declarativeNetRequest.updateEnabledRulesets(options);
}

Kural örnekleri

Aşağıdaki örneklerde, Chrome'un bir uzantıdaki kurallara nasıl öncelik verdiği gösterilmektedir. Bu kuralları incelerken öncelikli kuralları ayrı bir pencerede açabilirsiniz.

"priority" anahtarı

Bu örnekler için *://*.example.com/* için 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, altında gösterilen örnek kural dosyasını referans alır.

https://google.com adresine gitme
Bu URL'yi 1 ve 4 kimlikli kurallar kapsar. "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
Daha uzun URL nedeniyle 2 kimlikli kural artık 1 ve 4 kimlikli kurallara ek olarak eşleşiyor. "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 gereklidir.

Aşağıdaki örnekte, example.com adresinden gelen bir isteğin uzantıdaki bir sayfaya nasıl yönlendirileceği gösterilmektedir. /a.jpg uzantı yolu, chrome-extension://EXTENSION_ID/a.jpg olarak çözülür. Burada EXTENSION_ID, uzantınızın kimliğidir. Bunun çalışması için manifest'te /a.jpg, web'e erişilebilir bir kaynak olarak tanımlanmalıdır.

{
  "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ına yönlendirmek için "transform" anahtarı kullanılmaktadır. example.com'dan gelen herhangi bir şemaya sahip istekleri durdurmak için bir alan adı ankrası ("||") kullanılmaktadır. "transform" içindeki "scheme" anahtarı, alt alana 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önlendirmek için normal ifadeler kullanılmaktadır. "regexFilter" anahtarında, noktaların nasıl kaçırılıp yakalanma grubunun "abc" veya "def" seçtiğini fark edin. "regexSubstitution" anahtarı, normal ifadenin "\1" kullanılarak döndürülen ilk eşleşmesini belirtir. Bu durumda, "abc" yönlendirilen URL'den alınır ve ikame yerine 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 oluşturulduğu kare için birinci taraf mı yoksa üçüncü taraf mı olduğunu belirtir. Bir isteğin birinci taraf olduğu söylenir, eğer istek, kaynaklandığı çerçeveyle aynı alan adına (eTLD+1) sahipse.

Enum

"firstParty"
Ağ isteği, oluşturulduğu çerçeveye göre birinci taraftır.

"thirdParty"
Ağ isteği, oluşturulduğu çerçeveye göre üçüncü taraftır.

ExtensionActionOptions

Chrome 88 ve sonraki sürümler

Ö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ği. Bu tercih, oturumlar arasında korunur.

  • tabUpdate

    TabActionCountUpdate isteğe bağlı

    Chrome 89 ve sonraki sürümler

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

GetDisabledRuleIdsOptions

Chrome 111 ve sonraki sürümler

Özellikler

  • rulesetId

    dize

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

GetRulesFilter

Chrome 111 ve sonraki sürümler

Özellikler

  • ruleIds

    number[] isteğe bağlı

    Belirtilen değere sahip yalnızca kurallar dahil edilir.

HeaderInfo

Chrome 128+

Özellikler

  • excludedValues

    string[] isteğe bağlı

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

  • başlık

    dize

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

  • values

    string[] isteğe bağlı

    Belirtilen bu koşul, başlığın değeri bu listedeki en az bir kalıpla eşleşirse eşleşir. Bu, büyük/küçük harf duyarlı olmayan üstbilgi değeri eşleştirmenin yanı sıra aşağıdaki yapıları destekler:

    '*' : Herhangi bir karakter sayısıyla eşleşir.

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

    "*" ve "?" karakterleri ters eğik çizgiyle (ör. "\*" ve "\?") tırnak içine alınabilir.

HeaderOperation

Chrome 86 ve sonraki sürümler

Burada, "modifyHeaders" kuralı için olası işlemler açıklanmaktadır.

Enum

"append"
Belirtilen üstbilgi için yeni bir giriş ekler. Bu işlem, istek başlıklarında desteklenmez.

"set"
Belirtilen başlık için yeni bir değer ayarlar ve aynı ada sahip mevcut tüm başlıkları kaldırır.

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

IsRegexSupportedResult

Chrome 87 ve sonraki sürümler

Özellikler

  • isSupported

    boolean

  • neden

    UnsupportedRegexReason isteğe bağlı

    Normal ifadenin desteklenmeme nedenini belirtir. Yalnızca isSupported 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 kurallar grubundan gelen bir kural için bu değer DYNAMIC_RULESET_ID'a eşittir.

MatchedRuleInfo

Özellikler

  • kural
  • tabId

    sayı

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

  • timeStamp

    sayı

    Kuralın eşleştiği zaman. Zaman damgaları, zaman için JavaScript kuralına (yani, başlangıç tarihinden itibaren geçen milisaniye sayısı) karşılık gelir.

MatchedRuleInfoDebug

Özellikler

MatchedRulesFilter

Özellikler

  • minTimeStamp

    number isteğe bağlı

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

  • tabId

    number isteğe bağlı

    Belirtiliyse yalnızca belirtilen sekmeyle ilgili kuralları eşleştirir. -1 olarak ayarlanırsa etkin bir sekmeyle ilişkili olmayan kuralları eşleştirir.

ModifyHeaderInfo

Chrome 86 ve sonraki sürümler

Özellikler

  • başlık

    dize

    Değiştirilecek başlığın adı.

  • Bir başlıkta gerçekleştirilecek işlem.

  • value

    dize isteğe bağlı

    Başlığın yeni değeri. append ve set işlemleri için belirtilmelidir.

QueryKeyValue

Özellikler

  • anahtar

    dize

  • replaceOnly

    boole isteğe bağlı

    Chrome 94 ve üzeri sürümler

    Doğru ise sorgu anahtarı yalnızca zaten mevcutsa değiştirilir. Aksi takdirde, eksikse anahtar da eklenir. Varsayılan değer yanlıştı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

    dize isteğe bağlı

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

  • regexSubstitution

    dize isteğe bağlı

    regexFilter belirten kurallar için değiştirme kalıbı. URL'deki regexFilter ile ilk eşleşme bu kalıpla değiştirilir. regexSubstitution içinde, ilgili yakalama gruplarını eklemek için ters eğik çizgiden kaçan rakamlar ("1" ile "9" arasında) kullanılabilir. \0, eşleşen metnin tamamını ifade eder.

  • transform

    URLTransform isteğe bağlı

    Yapılacak URL dönüşümleri.

  • url

    dize isteğe bağlı

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

RegexOptions

Chrome 87 ve sonraki sürümler

Ö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 (doğru) değerini alır.

  • normal ifade : regex

    dize

    Kontrol edilecek normal ifade.

  • requireCapturing

    boole isteğe bağlı

    Belirtilen regex için yakalama işleminin gerekli olup olmadığı. Yakalama yalnızca regexSubstition işlemi belirten yönlendirme kuralları için gereklidir. Varsayılan değer yanlıştır.

RequestDetails

Özellikler

  • documentId

    dize isteğe bağlı

    Chrome 106 ve sonraki sürümler

    Bu istek bir çerçeve içinse çerçevenin belgesinin benzersiz tanımlayıcısı.

  • documentLifecycle

    DocumentLifecycle isteğe bağlı

    Chrome 106 ve sonraki sürümler

    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 ise isteğin gerçekleştiği alt çerçevenin kimliğini gösterir. Bir (alt) çerçevenin dokümanı yüklenirse (type, main_frame veya sub_frame ise) frameId, dış çerçevenin kimliğini değil, bu çerçevenin kimliğini belirtir. Çerçeve kimlikleri bir sekme içinde benzersizdir.

  • frameType

    FrameType isteğe bağlı

    Chrome 106 ve sonraki sürümler

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

  • başlatıcı

    dize 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

    dize isteğe bağlı

    Chrome 106 ve sonraki sürümler

    Bu istek bir çerçeve içinse ve çerçevenin üst öğesi varsa çerçevenin üst öğesinin 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, bir 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

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

Enum

"connect"

"delete"

"get"

"head"

"options"

"patch"

"post"

"put"

"other"

ResourceType

Bu, ağ isteğinin kaynak türünü tanımlar.

Enum

"main_frame"

"sub_frame"

"stylesheet"

"script"

"image"

"font"

"object"

"xmlhttprequest"

"ping"

"csp_report"

"media"

"websocket"

"webtransport"

"webbundle"

"other"

Rule

Özellikler

  • işlem

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

  • koşul

    Bu kuralın tetiklendiği durum.

  • 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ği durumlarda >= 1 olmalıdır.

RuleAction

Özellikler

  • yönlendir

    Yönlendirme isteğe bağlı

    Yönlendirmenin nasıl yapılması gerektiğ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

    İstek için değiştirilecek istek üst bilgileri. Yalnızca RuleActionType "modifyHeaders" ise geçerlidir.

  • responseHeaders

    ModifyHeaderInfo[] isteğe bağlı

    Chrome 86 ve sonraki sürümler

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

  • Yapılacak 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 engelleyin.

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

"allow"
Ağ isteğine izin verin. Eşleşen bir izin kuralı varsa istek durdurulmaz.

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

"modifyHeaders"
Ağ isteğinde istek/yanıt üstbilgilerini değiştirin.

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

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 beri desteği sonlandırıldı

    Bunun yerine initiatorDomains kullanın

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

  • excludedDomains

    string[] isteğe bağlı

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

    Bunun yerine excludedInitiatorDomains kullanın

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

  • excludedInitiatorDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler

    Kural, excludedInitiatorDomains listesinden gelen ağ istekleriyle eşleşmez. Liste boşsa veya atlanmışsa hiçbir alan hariç tutulmaz. Bu, initiatorDomains'e 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ılaştırılmış alanlar için punycode kodlamasını kullanın.
    • Bu, istek URL'siyle değil, istek başlatıcıyla eşleştirilir.
    • Listelenen alanların alt alanları da hariç tutulur.
  • excludedRequestDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler

    Alan adları excludedRequestDomains listesindeki bir alan adıyla eşleştiğinde kural, ağ istekleriyle eşleşmez. Liste boşsa veya atlanmışsa hiçbir alan hariç tutulmaz. Bu, requestDomains'e 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ılaştırılmış alanlar için punycode kodlamasını kullanın.
    • Listelenen alanların alt alanları da hariç tutulur.
  • excludedRequestMethods

    RequestMethod[] isteğe bağlı

    Chrome 91 ve sonraki sürümler

    Kuralın eşleşmeyeceği istek yöntemlerinin listesi. requestMethods ve excludedRequestMethods özelliklerinden yalnızca biri belirtilmelidir. Bunlardan 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+

    İ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 ve üzeri sürümler

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

  • initiatorDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler

    Kural yalnızca initiatorDomains listesinden gelen 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ılaştırılmış alanlar için punycode kodlamasını kullanın.
    • Bu, istek URL'siyle değil, istek başlatıcıyla eşleştirilir.
    • Listelenen alanların alt alanları da eşleştirilir.
  • isUrlFilterCaseSensitive

    boole isteğe bağlı

    urlFilter veya regexFilter (hangisi belirtilirse) özelliğinin büyük/küçük harfe duyarlı olup olmadığı. Varsayılan değer yanlıştır.

  • regexFilter

    dize isteğe bağlı

    Ağ istek URL'siyle eşleşecek normal ifade. Bu, RE2 söz dizimine uygundur.

    Not: Yalnızca bir urlFilter veya regexFilter belirtilebilir.

    Not: regexFilter yalnızca ASCII karakterlerinden oluşmalıdır. Bu değer, barındırıcının punycode biçiminde kodlandığı (uluslararasılaştırılmış alanlar söz konusu olduğunda) ve ASCII olmayan diğer tüm karakterlerin UTF-8 olarak URL kodlandığı bir URL ile eşleştirilir.

  • requestDomains

    string[] isteğe bağlı

    Chrome 101 ve sonraki sürümler

    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ılaştırılmış alanlar için punycode kodlamasını kullanın.
    • Listelenen alanların alt alanları da eşleştirilir.
  • requestMethods

    RequestMethod[] isteğe bağlı

    Chrome 91 ve sonraki sürümler

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

    Not: requestMethods kural koşulu belirtildiğinde HTTP(s) olmayan istekler de hariç tutulur. excludedRequestMethods belirtildiğinde ise bu durum geçerli olmaz.

  • 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+

    İ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 ve üzeri sürümler

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

  • urlFilter

    dize isteğe bağlı

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

    '*' : Joker karakter: Herhangi bir karakter sayısıyla eşleşir.

    '|' : Sol/sağ sabitleme noktası: Kalıbın iki ucundan birinde kullanılırsa sırasıyla URL'nin başlangıcını/sonunu belirtir.

    '||' : Alan adı yer tutucusu: Kalıpta kullanılıyorsa URL'nin (alt) alanının başlangıcını belirtir.

    '^' : Ayırıcı karakter: Harf, rakam veya aşağıdakilerden biri (_, -, . veya %) dışındaki her şeyle eşleşir. Bu, URL'nin sonuyla da eşleşir.

    Bu nedenle urlFilter aşağıdaki parçalardan oluşur: (isteğe bağlı sol/alan adı ankrası) + desen + (isteğe bağlı sağ ankraj).

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

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

    Not: Yalnızca bir urlFilter veya regexFilter belirtilebilir.

    Not: urlFilter yalnızca ASCII karakterlerinden oluşmalıdır. Bu değer, barındırıcının punycode biçiminde kodlandığı (uluslararasılaştırılmış alanlar söz konusu olduğunda) ve ASCII olmayan diğer tüm karakterlerin UTF-8 olarak URL 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'siyle eşleştirilir.

Ruleset

Özellikler

  • etkin

    boolean

    Kural kümesinin varsayılan olarak etkinleştirilip etkinleştirilmeyeceği.

  • id

    dize

    Kural kümesini benzersiz şekilde tanımlayan boş olmayan bir dize. "_" ile başlayan kimlikler şirket içi kullanım için ayrılmıştır.

  • yol

    dize

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

RulesMatchedDetails

Özellikler

  • rulesMatchedInfo

    Belirtilen filtreyle eşleşen kurallar.

TabActionCountUpdate

Chrome 89 ve sonraki sürümler

Ö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

Özellikler

  • matchedRules

    Farazi istekle eşleşen kurallar (varsa).

TestMatchRequestDetails

Chrome 103 ve sonraki sürümler

Özellikler

  • başlatıcı

    dize isteğe bağlı

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

  • method

    RequestMethod isteğe bağlı

    Varsayımsal isteğinin standart HTTP yöntemi. HTTP istekleri için varsayılan olarak "get" olur ve HTTP dışı istekler için yoksayılır.

  • responseHeaders

    nesne isteğe bağlı

    Chrome 129 ve üzeri sürümler

    İstek gönderilmeden önce engellenmezse veya yönlendirilmezse varsayımsal bir yanıt tarafından sağlanan üstbilgiler. Bir başlık adını dize değerleri listesiyle eşleyen bir nesne olarak temsil edilir. Belirtilmemişse varsayımsal yanıt, boş yanıt üstbilgileri döndürür. Bu üstbilgiler, üstbilgilerin yokluğuyla 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ğine karşılık gelmesi gerekmez. Varsayılan değer -1'dir. Bu, isteğin bir sekmeyle ilgili olmadığı anlamına gelir.

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

  • url

    dize

    Varsayımsal isteğin URL'si.

UnsupportedRegexReason

Chrome 87 ve sonraki sürümler

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

Enum

"syntaxError"
Normal ifade söz dizimi açısından yanlıştır veya RE2 söz diziminde bulunmayan özellikler kullanır.

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

UpdateRuleOptions

Chrome 87 ve sonraki sürümler

Özellikler

  • addRules

    Kural[] 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

Özellikler

  • disableRulesetIds

    string[] isteğe bağlı

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

  • enableRulesetIds

    string[] isteğe bağlı

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

UpdateStaticRulesOptions

Chrome 111 ve sonraki sürümler

Özellikler

  • disableRuleIds

    number[] isteğe bağlı

    Devre dışı bırakılacak Ruleset içindeki kurallara karşılık gelen kimlik grubu.

  • enableRuleIds

    number[] isteğe bağlı

    Etkinleştirilecek Ruleset içindeki kurallara karşılık gelen kimlik grubu.

  • rulesetId

    dize

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

URLTransform

Özellikler

  • parça

    dize isteğe bağlı

    İsteğin yeni parçası. Boş olmalıdır. Bu durumda mevcut parça temizlenir. Alternatif olarak, "#" ile başlamalıdır.

  • düzenleyen

    dize isteğe bağlı

    İsteğin yeni sahibi.

  • şifre

    dize isteğe bağlı

    İsteğin yeni şifresi.

  • yol

    dize isteğe bağlı

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

  • bağlantı noktası

    dize isteğe bağlı

    İsteğin yeni bağlantı noktası. Boşsa mevcut bağlantı noktası temizlenir.

  • sorgu

    dize isteğe bağlı

    İstek için yeni sorgu. Boş olmalıdır. Bu durumda mevcut sorgu temizlenir. Alternatif olarak, "?" ile başlamalıdır.

  • queryTransform

    QueryTransform isteğe bağlı

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

  • şema

    dize isteğe bağlı

    İsteğin yeni şeması. İzin verilen değerler: "http", "https", "ftp" ve "chrome-extension".

  • kullanıcı adı

    dize isteğe bağlı

    İsteğin yeni kullanıcı adı.

Özellikler

DYNAMIC_RULESET_ID

Uzantının eklediği dinamik kuralların kural kümesi kimliği.

Değer

"_dynamic"

GETMATCHEDRULES_QUOTA_INTERVAL

MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules aramasının yapılabileceği, dakika cinsinden belirtilen zaman aralığı. Ek aramalar hemen başarısız olur ve runtime.lastError olarak ayarlanır. 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

Etkin statik kural kümelerinde bir uzantı için 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 işlevinin GETMATCHEDRULES_QUOTA_INTERVAL süresi içinde çağrılma sayısı.

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 üzeri sürümler

Bir uzantının herhangi bir zamanda 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 belirtilen kurallar için ayrı ayrı değerlendirilir.

Değer

1000

MAX_NUMBER_OF_SESSION_RULES

Chrome 120+

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

Değer

5000

MAX_NUMBER_OF_STATIC_RULESETS

Bir uzantının "rule_resources" manifest anahtarı kapsamında belirtebileceği maksimum statik Rulesets sayısı.

Değer

100

MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES

Chrome 120+

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+

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

Değer

5000

SESSION_RULESET_ID

Chrome 90 ve üzeri sürümler

Uzantının eklediği oturum kapsamlı kuralların kural kümesi kimliği.

Değer

"_session"

Yöntemler

getAvailableStaticRuleCount()

Promise Chrome 89 ve üzeri sürümler
chrome.declarativeNetRequest.getAvailableStaticRuleCount(
  callback?: function,
)

Küresel statik kural sınırına ulaşılmadan önce bir uzantının etkinleştirebileceği statik kural sayısını döndürür.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (count: number) => void

    • sayı

      sayı

İadeler

  • Promise<number>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getDisabledRuleIds()

Promise Chrome 111 ve sonraki sürümler
chrome.declarativeNetRequest.getDisabledRuleIds(
  options: GetDisabledRuleIdsOptions,
  callback?: function,
)

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

Parametreler

  • Sorgulanacak kural kümesini belirtir.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (disabledRuleIds: number[]) => void

    • disabledRuleIds

      number[]

İadeler

  • Promise<number[]>

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getDynamicRules()

Promise
chrome.declarativeNetRequest.getDynamicRules(
  filter?: GetRulesFilter,
  callback?: function,
)

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

  • filtrele

    GetRulesFilter isteğe bağlı

    Chrome 111 ve sonraki sürümler

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

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (rules: Rule[]) => void

İadeler

  • Promise<Rule[]>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getEnabledRulesets()

Promise
chrome.declarativeNetRequest.getEnabledRulesets(
  callback?: function,
)

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

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (rulesetIds: string[]) => void

    • rulesetIds

      dize[]

İadeler

  • Promise<string[]>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getMatchedRules()

Promise
chrome.declarativeNetRequest.getMatchedRules(
  filter?: MatchedRulesFilter,
  callback?: function,
)

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

Parametreler

  • filtrele

    MatchedRulesFilter isteğe bağlı

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

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (details: RulesMatchedDetails) => void

İadeler

  • Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getSessionRules()

Promise Chrome 90 ve üzeri sürümler
chrome.declarativeNetRequest.getSessionRules(
  filter?: GetRulesFilter,
  callback?: function,
)

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

  • filtrele

    GetRulesFilter isteğe bağlı

    Chrome 111 ve sonraki sürümler

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

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (rules: Rule[]) => void

İadeler

  • Promise<Rule[]>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

isRegexSupported()

Promise Chrome 87 ve sonraki sürümler
chrome.declarativeNetRequest.isRegexSupported(
  regexOptions: RegexOptions,
  callback?: function,
)

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

Parametreler

İadeler

  • Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

setExtensionActionOptions()

Promise Chrome 88 ve sonraki sürümler
chrome.declarativeNetRequest.setExtensionActionOptions(
  options: ExtensionActionOptions,
  callback?: function,
)

Sekmelerin 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ı için bir yol sağlar.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    Chrome 89 ve sonraki sürümler

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

testMatchOutcome()

Promise Chrome 103 ve sonraki sürümler
chrome.declarativeNetRequest.testMatchOutcome(
  request: TestMatchRequestDetails,
  callback?: function,
)

Uzantının declarativeNetRequest kurallarından herhangi birinin varsayımsal bir istekle eşleşip eşleşmeyeceğini kontrol eder. Not: Bu özellik yalnızca uzantı geliştirme sırasında kullanılmak üzere tasarlandığından yalnızca paketi açılmış uzantılarda kullanılabilir.

Parametreler

İadeler

  • Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

updateDynamicRules()

Promise
chrome.declarativeNetRequest.updateDynamicRules(
  options: UpdateRuleOptions,
  callback?: function,
)

Uzantı için geçerli dinamik kural grubunu değiştirir. Önce options.removeRuleIds içinde listelenen kimliklere sahip kurallar 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 arasında kalıcı olarak saklanı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 kuralların sayısı MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES'ı aşmamalıdır.

Parametreler

  • seçenekler
    Chrome 87 ve sonraki sürümler
  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

updateEnabledRulesets()

Promise
chrome.declarativeNetRequest.updateEnabledRulesets(
  options: UpdateRulesetOptions,
  callback?: function,
)

Uzantı için etkin statik kural kümesini günceller. Önce options.disableRulesetIds içinde listelenen kimliklere sahip kural kümeleri kaldırılır, ardından options.enableRulesetIds içinde listelenen kural kümeleri eklenir. Etkin statik kural kümesinin oturumlar arasında korunduğunu ancak uzantı güncellemelerinde korunmadığını unutmayın. Yani rule_resources manifest anahtarı, her uzantı güncellemesinde etkin statik kural kümesini belirler.

Parametreler

  • seçenekler
    Chrome 87 ve sonraki sürümler
  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

updateSessionRules()

Promise Chrome 90 ve üzeri sürümler
chrome.declarativeNetRequest.updateSessionRules(
  options: UpdateRuleOptions,
  callback?: function,
)

Uzantı için geçerli oturum kapsamlı kural grubunu değiştirir. Önce options.removeRuleIds içinde listelenen kimliklere sahip kurallar 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 devam ettirilmez ve bellekte yedeklenir.
  • MAX_NUMBER_OF_SESSION_RULES, bir uzantının ekleyebileceği maksimum oturum kuralı sayısıdır.

Parametreler

  • seçenekler
  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 91 ve sonraki sürümler

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

updateStaticRules()

Promise Chrome 111 ve sonraki sürümler
chrome.declarativeNetRequest.updateStaticRules(
  options: UpdateStaticRulesOptions,
  callback?: function,
)

Ruleset'da statik kuralları tek tek devre dışı bırakır ve etkinleştirir. Devre dışı bırakılmış bir Ruleset'a ait kurallarda yapılan değişiklikler, Ruleset bir sonraki kez etkinleştirildiğinde geçerli olur.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Sözler, Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

Etkinlikler

onRuleMatchedDebug

chrome.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, paketi açılmış uzantılarda kullanılabilir.

Parametreler