توضیحات
API chrome.declarativeNetRequest
برای مسدود کردن یا تغییر درخواستهای شبکه با تعیین قوانین اعلانی استفاده میشود. این به افزونهها اجازه میدهد درخواستهای شبکه را بدون رهگیری و مشاهده محتوای آنها تغییر دهند و در نتیجه حریم خصوصی بیشتری را فراهم کنند.
مجوزها
declarativeNetRequest
declarativeNetRequestWithHostAccess
مجوزهای « declarativeNetRequest
» و « declarativeNetRequestWithHostAccess
» قابلیتهای یکسانی را ارائه میدهند. تفاوت بین آنها در زمان درخواست یا اعطای مجوز است.
-
"declarativeNetRequest"
- در زمان نصب، یک هشدار مجوز ایجاد میکند، اما دسترسی ضمنی به قوانین
allow
،allowAllRequests
وblock
را فراهم میکند. در صورت امکان از این مورد استفاده کنید تا از نیاز به درخواست دسترسی کامل به میزبانها جلوگیری شود. -
"declarativeNetRequestFeedback"
- ویژگیهای اشکالزدایی را برای افزونههای باز نشده ، بهویژه
getMatchedRules()
وonRuleMatchedDebug
، فعال میکند. -
"declarativeNetRequestWithHostAccess"
- هشدار مجوز در زمان نصب نمایش داده نمیشود، اما قبل از انجام هرگونه عملی روی یک میزبان، باید مجوزهای میزبان را درخواست کنید. این زمانی مناسب است که میخواهید از قوانین درخواست اعلانی شبکه در افزونهای که از قبل مجوزهای میزبان را دارد، بدون ایجاد هشدارهای اضافی استفاده کنید.
در دسترس بودن
مانیفست
علاوه بر مجوزهایی که قبلاً توضیح داده شد، انواع خاصی از مجموعه قوانین، به طور خاص مجموعه قوانین استاتیک، نیاز به اعلام کلید مانیفست "declarative_net_request"
دارند که باید یک دیکشنری با یک کلید واحد به نام "rule_resources"
باشد. این کلید آرایهای است که شامل دیکشنریهایی از نوع Ruleset
است، همانطور که در ادامه نشان داده شده است. (توجه داشته باشید که نام 'Ruleset' در JSON مانیفست ظاهر نمیشود زیرا صرفاً یک آرایه است.) مجموعه قوانین استاتیک بعداً در این سند توضیح داده میشوند.
{
"name": "My extension",
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
}, {
"id": "ruleset_2",
"enabled": false,
"path": "rules_2.json"
}]
},
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestFeedback"
],
"host_permissions": [
"http://www.blogger.com/*",
"http://*.google.com/*"
],
...
}
قوانین و مجموعه قوانین
برای استفاده از این API، یک یا چند مجموعه قانون مشخص کنید. یک مجموعه قانون شامل آرایهای از قوانین است. یک قانون واحد یکی از موارد زیر را انجام میدهد:
- مسدود کردن درخواست شبکه
- طرحواره را ارتقا دهید (http به https).
- با نفی هرگونه قانون مسدود شدهی منطبق، از مسدود شدن یک درخواست جلوگیری کنید.
- تغییر مسیر یک درخواست شبکه.
- هدرهای درخواست یا پاسخ را تغییر دهید.
سه نوع مجموعه قوانین وجود دارد که به روشهای کمی متفاوت مدیریت میشوند.
- پویا
- در طول جلسات مرورگر و ارتقاء افزونهها باقی میمانند و در حین استفاده از افزونه، با استفاده از جاوا اسکریپت مدیریت میشوند.
- جلسه
- با خاموش شدن مرورگر و نصب نسخه جدید افزونه، پاک میشود. قوانین جلسه (session rules) در حین استفاده از افزونه با استفاده از جاوا اسکریپت مدیریت میشوند.
- استاتیک
- بستهبندی، نصب و بهروزرسانی میشوند، زمانی که یک افزونه نصب یا ارتقا مییابد. قوانین استاتیک در فایلهای قوانین با فرمت JSON ذخیره شده و در فایل مانیفست فهرست میشوند.
مجموعه قوانین پویا و در محدوده جلسه
مجموعه قوانین پویا و جلسهای با استفاده از جاوا اسکریپت در حین استفاده از افزونه مدیریت میشوند.
- قوانین پویا در طول جلسات مرورگر و ارتقاء افزونهها پابرجا میمانند.
- قوانین جلسه با خاموش شدن مرورگر و نصب نسخه جدید افزونه پاک میشوند.
فقط یکی از این انواع مجموعه قوانین وجود دارد. یک افزونه میتواند با فراخوانی updateDynamicRules()
و updateSessionRules()
به صورت پویا قوانین را به آنها اضافه یا حذف کند، مشروط بر اینکه از محدودیتهای قوانین تجاوز نشود. برای اطلاعات در مورد محدودیتهای قوانین، به Rule limits مراجعه کنید. میتوانید مثالی از این مورد را در زیر مثالهای کد مشاهده کنید.
مجموعه قوانین ایستا
برخلاف قوانین پویا و جلسهای، قوانین ایستا هنگام نصب یا ارتقاء یک افزونه، بستهبندی، نصب و بهروزرسانی میشوند. آنها در فایلهای قوانین با فرمت JSON ذخیره میشوند که با استفاده از کلیدهای "declarative_net_request"
و "rule_resources"
همانطور که در بالا توضیح داده شد ، و همچنین یک یا چند دیکشنری Ruleset
به افزونه نشان داده میشوند. یک دیکشنری Ruleset
شامل مسیری به فایل قوانین، یک شناسه برای مجموعه قوانین موجود در فایل و اینکه آیا مجموعه قوانین فعال یا غیرفعال است، میباشد. دو مورد آخر هنگام فعال یا غیرفعال کردن یک مجموعه قوانین به صورت برنامهنویسی مهم هستند.
{
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
},
...
]
}
...
}
برای آزمایش فایلهای قانون، افزونه خود را به صورت باز نشده بارگذاری کنید . خطاها و هشدارها در مورد قوانین استاتیک نامعتبر فقط برای افزونههای باز نشده نمایش داده میشوند. قوانین استاتیک نامعتبر در افزونههای بستهبندی شده نادیده گرفته میشوند.
بررسی سریع
تغییرات در مجموعه قوانین ایستا ممکن است واجد شرایط بررسی سریع باشند. برای تغییرات واجد شرایط، به بررسی سریع مراجعه کنید.
فعال و غیرفعال کردن قوانین و مجموعه قوانین ایستا
هم قوانین استاتیک منفرد و هم مجموعه قوانین استاتیک کامل میتوانند در زمان اجرا فعال یا غیرفعال شوند.
مجموعه قوانین و مجموعه قوانین استاتیک فعالشده در طول جلسات مرورگر حفظ میشوند. هیچکدام از آنها در طول بهروزرسانیهای افزونه حفظ نمیشوند، به این معنی که فقط قوانینی که شما انتخاب کردهاید در فایلهای قوانین خود باقی بمانند، پس از بهروزرسانی در دسترس هستند.
به دلایل عملکردی، محدودیتهایی نیز برای تعداد قوانین و مجموعه قوانینی که میتوانند همزمان فعال شوند، وجود دارد. برای بررسی تعداد قوانین اضافی که ممکن است فعال شوند، تابع getAvailableStaticRuleCount()
را فراخوانی کنید. برای اطلاعات بیشتر در مورد محدودیتهای قوانین، به Rule limits مراجعه کنید.
برای فعال یا غیرفعال کردن قوانین استاتیک، تابع updateStaticRules()
فراخوانی کنید. این متد یک شیء UpdateStaticRulesOptions
را میگیرد که شامل آرایههایی از شناسههای قوانین برای فعال یا غیرفعال کردن است. شناسهها با استفاده از کلید "id"
از دیکشنری Ruleset
تعریف میشوند. حداکثر تعداد قوانین استاتیک غیرفعال شده 5000 است.
برای فعال یا غیرفعال کردن مجموعه قوانین استاتیک، تابع updateEnabledRulesets()
را فراخوانی کنید. این متد یک شیء UpdateRulesetOptions
را میگیرد که شامل آرایههایی از شناسههای مجموعه قوانین برای فعال یا غیرفعال کردن است. شناسهها با استفاده از کلید "id"
از دیکشنری Ruleset
تعریف میشوند.
قوانین ساخت
صرف نظر از نوع، یک قانون با چهار فیلد شروع میشود، همانطور که در ادامه نشان داده شده است. در حالی که کلیدهای "id"
و "priority"
عدد میگیرند، کلیدهای "action"
و "condition"
ممکن است چندین شرط مسدود کردن و تغییر مسیر را ارائه دهند. قانون زیر تمام درخواستهای اسکریپتی را که از "foo.com"
به هر URL با "abc"
به عنوان زیررشته سرچشمه میگیرند، مسدود میکند.
{
"id" : 1,
"priority": 1,
"action" : { "type" : "block" },
"condition" : {
"urlFilter" : "abc",
"initiatorDomains" : ["foo.com"],
"resourceTypes" : ["script"]
}
}
تطبیق URL
درخواست اعلانی شبکه (Declarative Net Request) امکان تطبیق URLها را با استفاده از سینتکس تطبیق الگو یا عبارات منظم فراهم میکند.
سینتکس فیلتر URL
کلید "condition"
یک قانون، به کلید "urlFilter"
اجازه میدهد تا روی URLهای تحت یک دامنه مشخص عمل کند. شما با استفاده از توکنهای تطبیق الگو، الگوها را ایجاد میکنید. در اینجا چند مثال آورده شده است.
urlFilter | مسابقات | مطابقت ندارد |
---|---|---|
"abc" | https://abcd.com https://example.com/abcd | https://ab.com |
"abc*d" | https://abcd.com https://example.com/abcxyzd | https://abc.com |
"||a.example.com" | https://a.example.com/ https://baexample.com/xyz https://a.example.company | https://example.com/ |
"|https*" | https://example.com | http://example.com/ http://https.com |
"example*^123|" | https://example.com/123 http://abc.com/example?123 | https://example.com/1234 https://abc.com/example0123 |
عبارات منظم
شرطها همچنین میتوانند از عبارات منظم استفاده کنند. به کلید "regexFilter"
مراجعه کنید. برای کسب اطلاعات در مورد محدودیتهایی که برای این شرطها اعمال میشود، به قوانینی که از عبارات منظم استفاده میکنند مراجعه کنید.
شرایط خوب URL را بنویسید
هنگام نوشتن قوانین مراقب باشید که همیشه کل دامنه را مطابقت دهید. در غیر این صورت، قانون شما ممکن است در موقعیتهای غیرمنتظرهای مطابقت داشته باشد. برای مثال، هنگام استفاده از سینتکس تطبیق الگو:
-
google.com
به اشتباهhttps://example.com/?param=google.com
مطابقت دارد -
||google.com
به اشتباه باhttps://google.company
مطابقت دارد -
https://www.google.com
به اشتباهhttps://example.com/?param=https://www.google.com
مطابقت دارد.
استفاده از موارد زیر را در نظر بگیرید:
-
||google.com/
، که با همه مسیرها و همه زیر دامنهها مطابقت دارد. -
|https://www.google.com/
که با همه مسیرها و بدون زیر دامنهها مطابقت دارد.
به طور مشابه، از کاراکترهای ^
و /
برای لنگر انداختن یک عبارت منظم استفاده کنید. برای مثال، ^https:\/\/www\.google\.com\/
با هر مسیری در https://www.google.com مطابقت دارد.
ارزیابی قانون
قوانین DNR توسط مرورگر در مراحل مختلف چرخه عمر درخواست شبکه اعمال میشوند.
قبل از درخواست
قبل از اینکه درخواستی ارسال شود، یک افزونه میتواند آن را با یک قانون منطبق مسدود یا هدایت کند (از جمله ارتقاء طرح از HTTP به HTTPS).
برای هر افزونه، مرورگر فهرستی از قوانین منطبق را تعیین میکند. قوانینی که دارای اکشن modifyHeaders
هستند در اینجا گنجانده نشدهاند زیرا بعداً به آنها پرداخته خواهد شد. علاوه بر این، قوانینی که دارای شرط responseHeaders
هستند بعداً (زمانی که هدرهای پاسخ در دسترس باشند) در نظر گرفته میشوند و در اینجا گنجانده نشدهاند.
سپس، برای هر افزونه، کروم حداکثر یک کاندید را برای هر درخواست انتخاب میکند. کروم با مرتب کردن تمام قوانین منطبق بر اساس اولویت، یک قانون منطبق پیدا میکند. قوانینی که اولویت یکسانی دارند بر اساس عمل ( allow
یا allowAllRequests
> block
> upgradeScheme
> redirect
) مرتب میشوند.
اگر کاندید یک قانون allow
یا allowAllRequests
باشد، یا فریمی که درخواست در آن انجام میشود قبلاً با یک قانون allowAllRequests
با اولویت بالاتر یا مساوی از این افزونه مطابقت داشته باشد، درخواست "مجاز" تلقی میشود و افزونه هیچ تاثیری بر درخواست نخواهد داشت.
اگر بیش از یک افزونه بخواهد این درخواست را مسدود یا تغییر مسیر دهد، یک اقدام واحد برای انجام انتخاب میشود. کروم این کار را با مرتبسازی قوانین در block
ترتیب > redirect
یا upgradeScheme
> allow
یا allowAllRequests
انجام میدهد. اگر دو قانون از یک نوع باشند، کروم قانون را از آخرین افزونه نصب شده انتخاب میکند.
قبل از ارسال هدرهای درخواست
قبل از اینکه کروم هدرهای درخواست را به سرور ارسال کند، هدرها بر اساس قوانین modifyHeaders
مطابق، بهروزرسانی میشوند.
کروم در یک افزونهی واحد، با پیدا کردن تمام قوانین modifyHeaders
منطبق، فهرستی از اصلاحاتی که باید انجام شود را میسازد. مشابه قبل، فقط قوانینی که اولویت بالاتری نسبت به هر قانون allow
یا allowAllRequests
منطبق دارند، گنجانده میشوند.
این قوانین توسط کروم به ترتیبی اعمال میشوند که قوانین مربوط به افزونهای که اخیراً نصب شده است، همیشه قبل از قوانین افزونهای قدیمیتر ارزیابی میشوند. علاوه بر این، قوانین با اولویت بالاتر از یک افزونه همیشه قبل از قوانین با اولویت پایینتر از همان افزونه اعمال میشوند. نکته قابل توجه این است که حتی در بین افزونهها:
- اگر یک قانون به یک سرصفحه (header) اضافه شود، قوانین با اولویت پایینتر فقط میتوانند به آن سرصفحه اضافه شوند. عملیات تنظیم (set) و حذف (remove) مجاز نیستند.
- اگر یک قانون، یک سرصفحه (header) تنظیم کند، فقط قوانین با اولویت پایینتر از همان افزونه میتوانند به آن سرصفحه اضافه شوند. هیچ تغییر دیگری مجاز نیست.
- اگر یک قانون، یک سرصفحه (header) را حذف کند، آنگاه قوانین با اولویت پایینتر نمیتوانند سرصفحه را بیشتر تغییر دهند.
به محض دریافت پاسخ
پس از دریافت هدرهای پاسخ، کروم قوانین را با شرط responseHeaders
ارزیابی میکند.
پس از مرتبسازی این قوانین بر اساس action
و priority
و حذف هرگونه قانونی که توسط یک قانون allow
یا allowAllRequests
منطبق، اضافی شده است (این اتفاق دقیقاً مشابه مراحل «قبل از درخواست» رخ میدهد)، کروم ممکن است درخواست را از طرف یک افزونه مسدود یا هدایت کند.
توجه داشته باشید که اگر درخواستی به این مرحله رسیده باشد، درخواست قبلاً به سرور ارسال شده و سرور دادههایی مانند بدنه درخواست را دریافت کرده است. یک قانون مسدود کردن یا تغییر مسیر با شرط هدرهای پاسخ همچنان اجرا میشود - اما نمیتواند درخواست را مسدود یا تغییر مسیر دهد.
در مورد قانون مسدودسازی، این موضوع توسط صفحهای که باعث شده درخواست پاسخ مسدود شده دریافت کند و کروم درخواست را زودتر خاتمه دهد، مدیریت میشود. در مورد قانون تغییر مسیر، کروم درخواست جدیدی به URL تغییر مسیر داده شده ارسال میکند. حتماً در نظر بگیرید که آیا این رفتارها انتظارات حریم خصوصی افزونه شما را برآورده میکنند یا خیر.
اگر درخواست مسدود یا هدایت نشده باشد، کروم هرگونه قانون modifyHeaders
اعمال میکند. اعمال تغییرات در هدرهای پاسخ به همان روشی که در «قبل از ارسال هدرهای درخواست» توضیح داده شده است، انجام میشود. اعمال تغییرات در هدرهای درخواست هیچ کاری انجام نمیدهد، زیرا درخواست قبلاً انجام شده است.
قوانین ایمن
قوانین امن به عنوان قوانینی با عملکرد block
، allow
، allowAllRequests
یا upgradeScheme
تعریف میشوند. این قوانین مشمول سهمیه قوانین پویای افزایش یافته هستند.
محدودیتهای قانون
بارگذاری و ارزیابی قوانین در مرورگر، سربار عملکردی دارد، بنابراین هنگام استفاده از API محدودیتهایی اعمال میشود. این محدودیتها به نوع قانونی که استفاده میکنید بستگی دارد.
قوانین ایستا
قوانین ایستا، آنهایی هستند که در فایلهای قوانین اعلامشده در فایل مانیفست مشخص شدهاند. یک افزونه میتواند تا ۱۰۰ مجموعه قوانین ایستا را به عنوان بخشی از کلید مانیفست "rule_resources"
مشخص کند، اما فقط ۵۰ مورد از این مجموعه قوانین میتوانند در یک زمان فعال شوند. مورد دوم MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
نامیده میشود. در مجموع، این مجموعه قوانین حداقل ۳۰،۰۰۰ قانون را تضمین میکنند. به این GUARANTEED_MINIMUM_STATIC_RULES
میگویند.
تعداد قوانین موجود پس از آن بستگی به تعداد قوانین فعال شده توسط تمام افزونههای نصب شده روی مرورگر کاربر دارد. میتوانید این تعداد را در زمان اجرا با فراخوانی getAvailableStaticRuleCount()
پیدا کنید. میتوانید نمونهای از این مورد را در زیر مثالهای کد مشاهده کنید.
قوانین جلسه
یک افزونه میتواند تا ۵۰۰۰ قانون جلسه داشته باشد. این به صورت MAX_NUMBER_OF_SESSION_RULES
نمایش داده میشود.
قبل از کروم ۱۲۰، محدودیت ۵۰۰۰ قانون ترکیبی پویا و جلسهای وجود داشت.
قوانین پویا
یک افزونه میتواند حداقل ۵۰۰۰ قانون پویا داشته باشد. این به صورت MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
نمایش داده میشود.
با شروع از کروم ۱۲۱، محدودیت بیشتری به تعداد ۳۰۰۰۰ قانون برای قوانین پویای ایمن وجود دارد که به صورت MAX_NUMBER_OF_DYNAMIC_RULES
نمایش داده میشود. هر قانون ناامنی که در محدوده ۵۰۰۰ اضافه شود، نیز جزو این محدودیت محسوب میشود.
قبل از کروم ۱۲۰، محدودیت ۵۰۰۰ قانون پویا و جلسهای ترکیبی وجود داشت.
قوانینی که از عبارات منظم استفاده میکنند
همه انواع قوانین میتوانند از عبارات منظم استفاده کنند؛ با این حال، تعداد کل قوانین عبارات منظم از هر نوع نمیتواند از ۱۰۰۰ تجاوز کند. این مقدار MAX_NUMBER_OF_REGEX_RULES نامیده میشود.
علاوه بر این، هر قانون پس از کامپایل باید کمتر از ۲ کیلوبایت باشد. این تقریباً با پیچیدگی قانون مرتبط است. اگر سعی کنید قانونی را بارگذاری کنید که از این حد تجاوز کند، هشداری مانند زیر مشاهده خواهید کرد و قانون نادیده گرفته میشود.
rules_1.json: Rule with id 1 specified a more complex regex than allowed
as part of the "regexFilter" key.
تعامل با کارکنان خدماتی
یک declarativeNetRequest فقط برای درخواستهایی که به پشته شبکه میرسند اعمال میشود. این شامل پاسخهایی از حافظه پنهان HTTP میشود، اما ممکن است شامل پاسخهایی که از طریق کنترلکننده onfetch
یک service worker عبور میکنند، نباشد. declarativeNetRequest بر پاسخهای تولید شده توسط service worker یا بازیابی شده از CacheStorage
تأثیری نخواهد گذاشت، اما بر فراخوانیهای fetch()
که در یک service worker انجام میشود، تأثیر میگذارد.
منابع قابل دسترسی در وب
یک قانون declarativeNetRequest نمیتواند از یک درخواست منبع عمومی به منبعی که از طریق وب قابل دسترسی نیست، تغییر مسیر دهد. انجام این کار باعث ایجاد خطا میشود. این موضوع حتی اگر منبع مشخص شده که از طریق وب قابل دسترسی است، متعلق به افزونه تغییر مسیر دهنده باشد، صادق است. برای اعلام منابع برای declarativeNetRequest، از آرایه "web_accessible_resources"
در مانیفست استفاده کنید.
اصلاح هدر
عملیات افزودن فقط برای هدرهای درخواست زیر پشتیبانی میشود: accept
، accept-encoding
، accept-language
، access-control-request-headers
، cache-control
، connection
، content-language
، cookie
، forwarded
، if-match
، if-none-match
، keep-alive
، range
، te
، trailer
، transfer-encoding
، upgrade
، user-agent
، via
، want-digest
، x-forwarded-for
. این لیست مجاز به حروف کوچک و بزرگ حساس است ( اشکال ۴۴۹۱۵۲۹۰۲ ).
هنگام افزودن به هدر درخواست یا پاسخ، مرورگر در صورت امکان از جداکننده مناسب استفاده خواهد کرد.
مثالها
مثالهای کد
بهروزرسانی قوانین پویا
مثال زیر نحوه فراخوانی تابع updateDynamicRules()
را نشان میدهد. روال فراخوانی تابع updateSessionRules()
نیز مشابه است.
// Get arrays containing new and old rules
const newRules = await getNewRules();
const oldRules = await chrome.declarativeNetRequest.getDynamicRules();
const oldRuleIds = oldRules.map(rule => rule.id);
// Use the arrays to update the dynamic rules
await chrome.declarativeNetRequest.updateDynamicRules({
removeRuleIds: oldRuleIds,
addRules: newRules
});
بهروزرسانی مجموعه قوانین ایستا
مثال زیر نحوه فعال و غیرفعال کردن مجموعه قوانین را با در نظر گرفتن تعداد مجموعه قوانین استاتیک موجود و حداکثر تعداد مجموعه قوانین استاتیک فعال نشان میدهد. شما این کار را زمانی انجام میدهید که تعداد قوانین استاتیک مورد نیاز شما از تعداد مجاز بیشتر شود. برای اینکه این کار عملی شود، برخی از مجموعه قوانین شما باید با غیرفعال کردن برخی از مجموعه قوانین نصب شوند (تنظیم "Enabled"
روی false
در فایل مانیفست).
async function updateStaticRules(enableRulesetIds, disableCandidateIds) {
// Create the options structure for the call to updateEnabledRulesets()
let options = { enableRulesetIds: enableRulesetIds }
// Get the number of enabled static rules
const enabledStaticCount = await chrome.declarativeNetRequest.getEnabledRulesets();
// Compare rule counts to determine if anything needs to be disabled so that
// new rules can be enabled
const proposedCount = enableRulesetIds.length;
if (enabledStaticCount + proposedCount > chrome.declarativeNetRequest.MAX_NUMBER_OF_ENABLED_STATIC_RULESETS) {
options.disableRulesetIds = disableCandidateIds
}
// Update the enabled static rules
await chrome.declarativeNetRequest.updateEnabledRulesets(options);
}
مثالهای قاعده
مثالهای زیر نحوه اولویتبندی قوانین توسط کروم در یک افزونه را نشان میدهند. هنگام بررسی آنها، ممکن است بخواهید قوانین اولویتبندی را در یک پنجره جداگانه باز کنید.
کلید «اولویت»
این مثالها نیاز به مجوز میزبان برای *://*.example.com/*
دارند.
برای تعیین اولویت یک URL خاص، به کلید "priority"
(تعریف شده توسط توسعهدهنده)، کلید "action"
و کلید "urlFilter"
نگاه کنید. این مثالها به فایل قانون نمونهای که در زیر آنها نشان داده شده است، اشاره دارند.
- پیمایش به https://google.com
- دو قانون این URL را پوشش میدهند: قوانینی با شناسههای ۱ و ۴. قانون با شناسه ۱ اعمال میشود زیرا اقدامات
"block"
اولویت بالاتری نسبت به اقدامات"redirect"
دارند. قوانین باقیمانده اعمال نمیشوند زیرا برای URLهای طولانیتر هستند. - پیمایش به https://google.com/1234
- به دلیل طولانیتر شدن URL، اکنون علاوه بر قوانین با شناسههای ۱ و ۴، قانون با شناسه ۲ نیز مطابقت دارد. قانون با شناسه ۲ اعمال میشود زیرا
"allow"
اولویت بالاتری نسبت به"block"
و"redirect"
دارد. - پیمایش به https://google.com/12345
- هر چهار قانون با این URL مطابقت دارند. قانون با شناسه ۳ اعمال میشود زیرا اولویت تعریفشده توسط توسعهدهنده آن بالاترین اولویت در گروه است.
[
{
"id": 1,
"priority": 1,
"action": { "type": "block" },
"condition": {"urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
},
{
"id": 2,
"priority": 1,
"action": { "type": "allow" },
"condition": { "urlFilter": "||google.com/123", "resourceTypes": ["main_frame"] }
},
{
"id": 3,
"priority": 2,
"action": { "type": "block" },
"condition": { "urlFilter": "||google.com/12345", "resourceTypes": ["main_frame"] }
},
{
"id": 4,
"priority": 1,
"action": { "type": "redirect", "redirect": { "url": "https://example.com" } },
"condition": { "urlFilter": "||google.com/", "resourceTypes": ["main_frame"] }
},
]
تغییر مسیرها
مثال زیر نیاز به مجوز میزبان برای *://*.example.com/*
دارد.
مثال زیر نحوهی ریدایرکت کردن یک درخواست از example.com به صفحهای درون خود افزونه را نشان میدهد. مسیر افزونه /a.jpg
به chrome-extension://EXTENSION_ID/a.jpg
تبدیل میشود، که در آن EXTENSION_ID
شناسهی افزونهی شماست. برای اینکه این کار انجام شود، مانیفست باید /a.jpg
به عنوان یک منبع قابل دسترسی از طریق وب اعلام کند.
{
"id": 1,
"priority": 1,
"action": { "type": "redirect", "redirect": { "extensionPath": "/a.jpg" } },
"condition": {
"urlFilter": "||https://www.example.com/",
"resourceTypes": ["main_frame"]
}
}
کد زیر از کلید "transform"
برای هدایت به زیر دامنه example.com استفاده میکند. این کد از یک لنگر نام دامنه ("||") برای رهگیری درخواستها با هر طرحی از example.com استفاده میکند. کلید "scheme"
در "transform"
مشخص میکند که هدایت به زیر دامنه همیشه از "https" استفاده خواهد کرد.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"transform": { "scheme": "https", "host": "new.example.com" }
}
},
"condition": {
"urlFilter": "||example.com/",
"resourceTypes": ["main_frame"]
}
}
مثال زیر از عبارات منظم برای تغییر مسیر از https://www.abc.xyz.com/path
به https://abc.xyz.com/path
استفاده میکند. در کلید "regexFilter"
، توجه کنید که چگونه نقطهها حذف میشوند و گروه گیرنده "abc" یا "def" را انتخاب میکند. کلید "regexSubstitution"
اولین تطابق بازگشتی عبارت منظم را با استفاده از "\1" مشخص میکند. در این حالت، "abc" از URL تغییر مسیر داده شده گرفته شده و در جایگزینی قرار میگیرد.
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {
"regexSubstitution": "https://\\1.xyz.com/"
}
},
"condition": {
"regexFilter": "^https://www\\.(abc|def)\\.xyz\\.com/",
"resourceTypes": [
"main_frame"
]
}
}
سربرگها
مثال زیر تمام کوکیها را هم از یک فریم اصلی و هم از هر فریم فرعی حذف میکند.
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"requestHeaders": [{ "header": "cookie", "operation": "remove" }]
},
"condition": { "resourceTypes": ["main_frame", "sub_frame"] }
}
انواع
DomainType
این مشخص میکند که آیا درخواست، شخص اول یا شخص ثالث فریمی است که در آن ایجاد شده است. یک درخواست در صورتی شخص اول نامیده میشود که دامنه (eTLD+1) آن با فریمی که درخواست در آن ایجاد شده است، یکسان باشد.
شمارشی
"پارتی اول" "شخص ثالث"
درخواست شبکه، اولین طرفِ فریمی است که از آن سرچشمه گرفته است.
درخواست شبکه، نسبت به فریمی که از آن سرچشمه گرفته، شخص ثالث است.
ExtensionActionOptions
خواص
- نمایش تعداد اقدام به عنوان نشان متن
بولی اختیاری
اینکه آیا تعداد اقدامات یک صفحه به صورت خودکار به عنوان متن نشان افزونه نمایش داده شود یا خیر. این ترجیح در طول جلسات ثابت میماند.
- بهروزرسانی برگه
TabActionCountUpdate اختیاری است
کروم ۸۹+جزئیات نحوه تنظیم تعداد اقدامات تب.
GetDisabledRuleIdsOptions
خواص
- شناسه مجموعه قوانین
رشته
شناسه مربوط به یک
Ruleset
استاتیک.
GetRulesFilter
خواص
- شناسههای قاعده
عدد[] اختیاری
در صورت مشخص شدن، فقط قوانینی با شناسههای منطبق گنجانده میشوند.
HeaderInfo
خواص
- مقادیر مستثنی شده
رشته[] اختیاری
در صورت مشخص شدن، اگر هدر وجود داشته باشد اما مقدار آن حداقل شامل یک عنصر در این لیست باشد، این شرط مطابقت ندارد. این از همان سینتکس الگوی مطابقت مانند
values
استفاده میکند. - سربرگ
رشته
نام هدر. این شرط فقط در صورتی روی نام مطابقت دارد که هم
values
و همexcludedValues
مشخص نشده باشند. - ارزشها
رشته[] اختیاری
در صورت مشخص شدن، این شرط در صورتی مطابقت دارد که مقدار سرآیند حداقل با یک الگو در این لیست مطابقت داشته باشد. این از تطبیق مقدار سرآیند غیر حساس به حروف بزرگ و کوچک به علاوه ساختارهای زیر پشتیبانی میکند:
'*' : با هر تعداد کاراکتر مطابقت دارد.
'?' : با صفر یا یک کاراکتر مطابقت دارد.
میتوان از '*' و '?' با یک بکاسلش صرف نظر کرد، مثلاً '\*' و '\?'
HeaderOperation
این، عملیات ممکن برای یک قانون "modifyHeaders" را شرح میدهد.
شمارشی
"ضمیمه کردن" "تنظیم" "حذف کردن"
یک ورودی جدید برای هدر مشخص شده اضافه میکند. هنگام تغییر هدرهای یک درخواست، این عملیات فقط برای هدرهای خاص پشتیبانی میشود.
یک مقدار جدید برای هدر مشخص شده تنظیم میکند و هدرهای موجود با نام مشابه را حذف میکند.
تمام ورودیهای مربوط به سرآیند مشخصشده را حذف میکند.
IsRegexSupportedResult
خواص
- پشتیبانی میشود
بولی
- دلیل
دلیل منظم پشتیبانی نشده اختیاری
دلیل عدم پشتیبانی از عبارت منظم را مشخص میکند. فقط در صورتی ارائه میشود که
isSupported
مقدار false داشته باشد.
MatchedRule
خواص
- شناسه قاعده
شماره
شناسهی یک قانون منطبق.
- شناسه مجموعه قوانین
رشته
شناسهی
Ruleset
این قانون به آن تعلق دارد. برای قانونی که از مجموعه قوانین پویا سرچشمه میگیرد، این مقدار برابر باDYNAMIC_RULESET_ID
خواهد بود.
MatchedRuleInfo
خواص
- قاعده
- شناسه برگه
شماره
شناسهی برگهای که درخواست از آن آغاز شده است، در صورتی که برگه هنوز فعال باشد. در غیر این صورت -1.
- مهر زمانی
شماره
زمانی که قانون تطبیق داده شده است. مهرهای زمانی با قرارداد جاوا اسکریپت برای زمانها مطابقت دارند، یعنی تعداد میلیثانیهها از زمان شروع.
MatchedRuleInfoDebug
خواص
- درخواست
جزئیات مربوط به درخواستی که با قانون مطابقت داده شده است.
- قاعده
MatchedRulesFilter
خواص
- minTimeStamp
شماره اختیاری
در صورت مشخص شدن، فقط با قوانینی که پس از مهر زمانی مشخص شده قرار دارند، مطابقت دارد.
- شناسه برگه
شماره اختیاری
در صورت مشخص شدن، فقط با قوانین مربوط به تب داده شده مطابقت دارد. در صورت تنظیم روی -1، با قوانینی که با هیچ تب فعالی مرتبط نیستند، مطابقت دارد.
ModifyHeaderInfo
خواص
- سربرگ
رشته
نام سربرگی که قرار است اصلاح شود.
- عملیات
عملیاتی که قرار است روی یک هدر انجام شود.
- ارزش
رشته اختیاری
مقدار جدید برای سرآیند. باید برای عملیات
append
وset
مشخص شود.
QueryKeyValue
خواص
- کلید
رشته
- فقط جایگزین
بولی اختیاری
کروم ۹۴+اگر مقدار آن درست باشد، کلید پرسوجو فقط در صورتی جایگزین میشود که از قبل وجود داشته باشد. در غیر این صورت، اگر کلید وجود نداشته باشد، آن کلید نیز اضافه میشود. مقدار پیشفرض آن نادرست است.
- ارزش
رشته
QueryTransform
خواص
- پارامترهای addOrReplace
مقدار کلید پرسوجو [] اختیاری
فهرست جفتهای کلید-مقدار پرسوجو که باید اضافه یا جایگزین شوند.
- حذف پارامترها
رشته[] اختیاری
فهرست کلیدهای پرسوجویی که باید حذف شوند.
Redirect
خواص
- مسیر افزونه
رشته اختیاری
مسیر نسبت به دایرکتوری افزونه. باید با '/' شروع شود.
- جایگزینی regex
رشته اختیاری
الگوی جایگزینی برای قوانینی که
regexFilter
مشخص میکنند. اولین مورد منطبق باregexFilter
در url با این الگو جایگزین میشود. درregexSubstitution
، میتوان از ارقام دارای بکاسلش (\1 تا \9) برای درج گروههای ضبط مربوطه استفاده کرد. \0 به کل متن منطبق اشاره دارد. - تبدیل کردن
تبدیل URL اختیاری
تبدیلهای URL برای انجام.
- آدرس اینترنتی
رشته اختیاری
آدرس اینترنتی تغییر مسیر. تغییر مسیر به آدرسهای اینترنتی جاوا اسکریپت مجاز نیست.
RegexOptions
خواص
- حساس به حروف بزرگ و کوچک
بولی اختیاری
اینکه آیا
regex
مشخص شده به حروف بزرگ و کوچک حساس است یا خیر. مقدار پیشفرض true است. - عبارت منظم
رشته
عبارت منظم برای بررسی.
- نیاز به گرفتن
بولی اختیاری
اینکه آیا
regex
مشخص شده نیاز به ضبط دارد یا خیر. ضبط فقط برای قوانین تغییر مسیری که یک عملregexSubstition
را مشخص میکنند، لازم است. مقدار پیشفرض false است.
RequestDetails
خواص
- شناسه سند
رشته اختیاری
کروم ۱۰۶+شناسه منحصر به فرد برای سند فریم، اگر این درخواست برای یک فریم باشد.
- چرخه عمر سند
چرخه عمر سند (اختیاری)
کروم ۱۰۶+چرخه حیات سند فریم، اگر این درخواست برای یک فریم باشد.
- شناسه قاب
شماره
مقدار ۰ نشان میدهد که درخواست در فریم اصلی اتفاق میافتد؛ مقدار مثبت نشان دهنده شناسه یک زیرفریم است که درخواست در آن اتفاق میافتد. اگر سند یک (زیرفریم) بارگذاری شود (
type
main_frame
یاsub_frame
باشد)،frameId
شناسه این فریم را نشان میدهد، نه شناسه فریم بیرونی. شناسههای فریم در یک تب منحصر به فرد هستند. - نوع قاب
نوع قاب اختیاری
کروم ۱۰۶+نوع فریم، اگر این درخواست برای یک فریم باشد.
- آغازگر
رشته اختیاری
مبدایی که درخواست از آنجا آغاز شده است. این مورد از طریق تغییر مسیرها تغییر نمیکند. اگر این یک مبدا مبهم باشد، از رشته 'null' استفاده خواهد شد.
- روش
رشته
روش استاندارد HTTP.
- شناسه سند والد
رشته اختیاری
کروم ۱۰۶+شناسه منحصر به فرد برای سند والد فریم، اگر این درخواست برای یک فریم باشد و والد داشته باشد.
- شناسه والدفریم
شماره
شناسه فریمی که فریمی که درخواست را ارسال کرده است را در بر میگیرد. اگر فریم والدی وجود نداشته باشد، روی -۱ تنظیم میشود.
- شناسه درخواست
رشته
شناسه درخواست. شناسههای درخواست در یک جلسه مرورگر منحصر به فرد هستند.
- شناسه برگه
شماره
شناسهی برگهای که درخواست در آن انجام میشود. اگر درخواست مربوط به برگهای نباشد، روی -۱ تنظیم کنید.
- نوع
نوع منبع درخواست.
- آدرس اینترنتی
رشته
آدرس اینترنتی (URL) درخواست.
RequestMethod
این روش درخواست HTTP یک درخواست شبکه را توصیف میکند.
شمارشی
"وصل کردن" "حذف" "دریافت" "سر" «گزینهها» "وصله" «پست» "گذاشتن" «دیگر»
ResourceType
این نوع منبع درخواست شبکه را توصیف میکند.
شمارشی
"فریم_اصلی" "زیر_فریم" "شیوهنامه" «فیلمنامه» «تصویر» "فونت" "شیء" "درخواست xmlhttp" "پینگ" "گزارش csp" «رسانه» "سوکت وب" "حمل و نقل تحت وب" "بسته وب" «دیگر»
Rule
خواص
- عمل
اقدامی که در صورت مطابقت با این قانون باید انجام شود.
- وضعیت
شرایطی که تحت آن این قانون فعال میشود.
- شناسه
شماره
یک شناسه که به طور منحصر به فرد یک قانون را مشخص میکند. اجباری است و باید بزرگتر یا مساوی ۱ باشد.
- اولویت
شماره اختیاری
اولویت قانون. پیشفرض ۱. در صورت مشخص شدن، باید >= ۱ باشد.
RuleAction
خواص
- تغییر مسیر
تغییر مسیر اختیاری
نحوه انجام ریدایرکت را شرح میدهد. فقط برای قوانین ریدایرکت معتبر است.
- درخواستها
ModifyHeaderInfo [] اختیاری
کروم ۸۶+هدرهای درخواست برای تغییر در درخواست. فقط در صورتی معتبر است که RuleActionType برابر با "modifyHeaders" باشد.
- هدرهای پاسخ
ModifyHeaderInfo [] اختیاری
کروم ۸۶+هدرهای پاسخ برای تغییر در درخواست. فقط در صورتی معتبر است که RuleActionType برابر با "modifyHeaders" باشد.
- نوع
نوع عملی که باید انجام شود.
RuleActionType
نوع اقدامی را که در صورت مطابقت با یک RuleCondition مشخص باید انجام شود، توصیف میکند.
شمارشی
"بلوک" "تغییر مسیر" «اجازه دادن» "طرح ارتقا" "اصلاح هدرها" "اجازه دادن به همه درخواستها"
درخواست شبکه را مسدود کنید.
درخواست شبکه را تغییر مسیر دهید.
درخواست شبکه را مجاز کن. اگر قانون مجاز با آن مطابقت داشته باشد، درخواست رهگیری نخواهد شد.
اگر درخواست از نوع http یا ftp است، طرح آدرس اینترنتی درخواست شبکه را به https ارتقا دهید.
هدرهای درخواست/پاسخ را از درخواست شبکه تغییر دهید.
به همه درخواستهای درون یک سلسله مراتب فریم، از جمله خود درخواست فریم، اجازه دهید.
RuleCondition
خواص
- نوع دامنه
نوع دامنه اختیاری
مشخص میکند که آیا درخواست شبکه، مربوط به دامنهای است که از آن سرچشمه گرفته و توسط شخص اول یا شخص ثالث ارسال شده است. در صورت حذف، همه درخواستها پذیرفته میشوند.
- دامنهها
رشته[] اختیاری
از زمان کروم ۱۰۱ منسوخ شده استبه جای آن از
initiatorDomains
استفاده کنیداین قانون فقط درخواستهای شبکهای که از لیست
domains
سرچشمه میگیرند را مطابقت میدهد. - دامنههای مستثنیشده
رشته[] اختیاری
از زمان کروم ۱۰۱ منسوخ شده استبه جای آن از
excludedInitiatorDomains
استفاده کنیداین قانون با درخواستهای شبکهای که از لیست
excludedDomains
سرچشمه میگیرند، مطابقت نخواهد داشت. - دامنههای آغازگر مستثنیشده
رشته[] اختیاری
کروم ۱۰۱+این قانون با درخواستهای شبکهای که از لیست
excludedInitiatorDomains
سرچشمه میگیرند، مطابقت نخواهد داشت. اگر لیست خالی یا حذف شده باشد، هیچ دامنهای مستثنی نمیشود. این برinitiatorDomains
اولویت دارد.یادداشتها:
- زیر دامنههایی مانند "a.example.com" نیز مجاز هستند.
- ورودیها باید فقط شامل کاراکترهای اسکی (ascii) باشند.
- برای دامنههای بینالمللی از کدگذاری punycode استفاده کنید.
- این با آغازگر درخواست مطابقت دارد و نه با آدرس اینترنتی درخواست.
- زیر دامنههای دامنههای ذکر شده نیز مستثنی هستند.
- دامنههای درخواستی مستثنیشده
رشته[] اختیاری
کروم ۱۰۱+این قانون درخواستهای شبکه را در صورتی که دامنهها با یکی از دامنههای موجود در لیست
excludedRequestDomains
مطابقت داشته باشند، مطابقت نمیدهد. اگر لیست خالی یا حذف شده باشد، هیچ دامنهای مستثنی نمیشود. این مورد برrequestDomains
اولویت دارد.یادداشتها:
- زیر دامنههایی مانند "a.example.com" نیز مجاز هستند.
- ورودیها باید فقط شامل کاراکترهای اسکی (ascii) باشند.
- برای دامنههای بینالمللی از کدگذاری punycode استفاده کنید.
- زیر دامنههای دامنههای ذکر شده نیز مستثنی هستند.
- متدهای درخواست حذفشده
RequestMethod [] اختیاری
کروم ۹۱+فهرست متدهای درخواستی که قانون با آنها مطابقت نخواهد داشت. فقط یکی از
requestMethods
وexcludedRequestMethods
باید مشخص شود. اگر هیچ یک از آنها مشخص نشود، تمام متدهای درخواست مطابقت داده میشوند. - انواع منابع مستثنی شده
نوع منبع [] اختیاری
فهرست انواع منابعی که قانون با آنها مطابقت نخواهد داشت. فقط یکی از
resourceTypes
وexcludedResourceTypes
باید مشخص شود. اگر هیچ یک از آنها مشخص نشود، همه انواع منابع به جز "main_frame" مسدود میشوند. - هدرهای پاسخ مستثنی شده
اطلاعات سربرگ [] اختیاری
کروم ۱۲۸+اگر درخواست با هر یک از شرایط هدر پاسخ در این لیست (در صورت مشخص شدن) مطابقت داشته باشد، قانون مطابقت ندارد. اگر هر دو
excludedResponseHeaders
وresponseHeaders
مشخص شده باشند، آنگاه ویژگیexcludedResponseHeaders
اولویت دارد. - TabId های حذف شده
عدد[] اختیاری
کروم ۹۲+فهرست
tabs.Tab.id
که قانون نباید با آنها مطابقت داشته باشد. شناسهtabs.TAB_ID_NONE
درخواستهایی را که از یک تب سرچشمه نمیگیرند، حذف میکند. فقط برای قوانین محدود به جلسه پشتیبانی میشود. - دامنههای آغازگر
رشته[] اختیاری
کروم ۱۰۱+این قانون فقط درخواستهای شبکهای که از لیست
initiatorDomains
سرچشمه میگیرند را مطابقت میدهد. اگر این لیست حذف شود، این قانون برای درخواستهای همه دامنهها اعمال میشود. لیست خالی مجاز نیست.یادداشتها:
- زیر دامنههایی مانند "a.example.com" نیز مجاز هستند.
- ورودیها باید فقط شامل کاراکترهای اسکی (ascii) باشند.
- برای دامنههای بینالمللی از کدگذاری punycode استفاده کنید.
- این با آغازگر درخواست مطابقت دارد و نه با آدرس اینترنتی درخواست.
- زیر دامنههای دامنههای ذکر شده نیز مطابقت دارند.
- حساس به حروف بزرگ و کوچک (isUrlFilterSensitive)
بولی اختیاری
اینکه آیا
urlFilter
یاregexFilter
(هر کدام که مشخص شده باشد) به حروف کوچک و بزرگ حساس است یا خیر. مقدار پیشفرض false است. - فیلتر منظم
رشته اختیاری
عبارت منظم برای تطبیق با آدرس اینترنتی درخواست شبکه. این از سینتکس RE2 پیروی میکند.
نکته: فقط یکی از
urlFilter
یاregexFilter
را میتوان مشخص کرد.نکته:
regexFilter
باید فقط از کاراکترهای ASCII تشکیل شده باشد. این با url ای که میزبان آن با فرمت punycode کدگذاری شده است (در مورد دامنههای بینالمللی) و سایر کاراکترهای غیر اسکی با utf-8 کدگذاری شدهاند، مطابقت دارد. - درخواست دامنهها
رشته[] اختیاری
کروم ۱۰۱+این قانون فقط زمانی درخواستهای شبکه را مطابقت میدهد که دامنه با یکی از دامنههای موجود در لیست
requestDomains
مطابقت داشته باشد. اگر لیست حذف شود، این قانون برای درخواستهای همه دامنهها اعمال میشود. لیست خالی مجاز نیست.یادداشتها:
- زیر دامنههایی مانند "a.example.com" نیز مجاز هستند.
- ورودیها باید فقط شامل کاراکترهای اسکی (ascii) باشند.
- برای دامنههای بینالمللی از کدگذاری punycode استفاده کنید.
- زیر دامنههای دامنههای ذکر شده نیز مطابقت دارند.
- متدهای درخواست
RequestMethod [] اختیاری
کروم ۹۱+فهرستی از روشهای درخواست HTTP که این قانون میتواند با آنها مطابقت داشته باشد. فهرست خالی مجاز نیست.
نکته: تعیین شرط قانون
requestMethods
، درخواستهای غیر HTTP(ها) را نیز مستثنی میکند، در حالی که تعیینexcludedRequestMethods
چنین نخواهد کرد. - انواع منابع
نوع منبع [] اختیاری
فهرست انواع منابعی که قانون میتواند با آنها مطابقت داشته باشد. فهرست خالی مجاز نیست.
توجه: این مورد باید برای قوانین
allowAllRequests
مشخص شود و فقط میتواند شامل انواع منابعsub_frame
وmain_frame
باشد. - هدرهای پاسخ
اطلاعات سربرگ [] اختیاری
کروم ۱۲۸+اگر درخواست با هر یک از شرایط هدر پاسخ در این لیست (در صورت مشخص شدن) مطابقت داشته باشد، قانون مطابقت دارد.
- شناسههای برگه
عدد[] اختیاری
Chrome 92+List of
tabs.Tab.id
which the rule should match. An ID oftabs.TAB_ID_NONE
matches requests which don't originate from a tab. An empty list is not allowed. Only supported for session-scoped rules. - urlFilter
رشته اختیاری
The pattern which is matched against the network request url. Supported constructs:
'*' : Wildcard: Matches any number of characters.
'|' : Left/right anchor: If used at either end of the pattern, specifies the beginning/end of the url respectively.
'||' : Domain name anchor: If used at the beginning of the pattern, specifies the start of a (sub-)domain of the URL.
'^' : Separator character: This matches anything except a letter, a digit, or one of the following:
_
,-
,.
, or%
. This also match the end of the URL.Therefore
urlFilter
is composed of the following parts: (optional Left/Domain name anchor) + pattern + (optional Right anchor).If omitted, all urls are matched. An empty string is not allowed.
A pattern beginning with
||*
is not allowed. Use*
instead.Note: Only one of
urlFilter
orregexFilter
can be specified.Note: The
urlFilter
must be composed of only ASCII characters. This is matched against a url where the host is encoded in the punycode format (in case of internationalized domains) and any other non-ascii characters are url encoded in utf-8. For example, when the request url is http://abc.рф?q=ф, theurlFilter
will be matched against the url http://abc.xn--p1ai/?q=%D1%84.
Ruleset
خواص
- فعال شده
بولی
Whether the ruleset is enabled by default.
- شناسه
رشته
A non-empty string uniquely identifying the ruleset. IDs beginning with '_' are reserved for internal use.
- مسیر
رشته
The path of the JSON ruleset relative to the extension directory.
RulesMatchedDetails
خواص
- rulesMatchedInfo
Rules matching the given filter.
TabActionCountUpdate
خواص
- افزایش
شماره
The amount to increment the tab's action count by. Negative values will decrement the count.
- tabId
شماره
The tab for which to update the action count.
TestMatchOutcomeResult
خواص
- matchedRules
MatchedRule []
The rules (if any) that match the hypothetical request.
TestMatchRequestDetails
خواص
- آغازگر
رشته اختیاری
The initiator URL (if any) for the hypothetical request.
- روش
RequestMethod optional
Standard HTTP method of the hypothetical request. Defaults to "get" for HTTP requests and is ignored for non-HTTP requests.
- responseHeaders
object optional
Chrome 129+The headers provided by a hypothetical response if the request does not get blocked or redirected before it is sent. Represented as an object which maps a header name to a list of string values. If not specified, the hypothetical response would return empty response headers, which can match rules which match on the non-existence of headers. Eg
{"content-type": ["text/html; charset=utf-8", "multipart/form-data"]}
- tabId
number optional
The ID of the tab in which the hypothetical request takes place. Does not need to correspond to a real tab ID. Default is -1, meaning that the request isn't related to a tab.
- نوع
The resource type of the hypothetical request.
- آدرس اینترنتی
رشته
The URL of the hypothetical request.
UnsupportedRegexReason
Describes the reason why a given regular expression isn't supported.
Enum
"syntaxError" "memoryLimitExceeded"
The regular expression is syntactically incorrect, or uses features not available in the RE2 syntax .
The regular expression exceeds the memory limit.
UpdateRuleOptions
خواص
- addRules
Rule [] optional
Rules to add.
- removeRuleIds
number[] optional
IDs of the rules to remove. Any invalid IDs will be ignored.
UpdateRulesetOptions
خواص
UpdateStaticRulesOptions
خواص
URLTransform
خواص
- قطعه قطعه
رشته اختیاری
The new fragment for the request. Should be either empty, in which case the existing fragment is cleared; or should begin with '#'.
- میزبان
رشته اختیاری
The new host for the request.
- رمز عبور
رشته اختیاری
The new password for the request.
- مسیر
رشته اختیاری
The new path for the request. If empty, the existing path is cleared.
- بندر
رشته اختیاری
The new port for the request. If empty, the existing port is cleared.
- پرس و جو
رشته اختیاری
The new query for the request. Should be either empty, in which case the existing query is cleared; or should begin with '?'.
- queryTransform
QueryTransform optional
Add, remove or replace query key-value pairs.
- طرح
رشته اختیاری
The new scheme for the request. Allowed values are "http", "https", "ftp" and "chrome-extension".
- نام کاربری
رشته اختیاری
The new username for the request.
خواص
DYNAMIC_RULESET_ID
Ruleset ID for the dynamic rules added by the extension.
ارزش
"_dynamic"
GETMATCHEDRULES_QUOTA_INTERVAL
Time interval within which MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL getMatchedRules
calls can be made, specified in minutes. Additional calls will fail immediately and set runtime.lastError
. Note: getMatchedRules
calls associated with a user gesture are exempt from the quota.
ارزش
۱۰
GUARANTEED_MINIMUM_STATIC_RULES
The minimum number of static rules guaranteed to an extension across its enabled static rulesets. Any rules above this limit will count towards the global static rule limit .
ارزش
۳۰۰۰۰
MAX_GETMATCHEDRULES_CALLS_PER_INTERVAL
The number of times getMatchedRules
can be called within a period of GETMATCHEDRULES_QUOTA_INTERVAL
.
ارزش
۲۰
MAX_NUMBER_OF_DYNAMIC_RULES
The maximum number of dynamic rules that an extension can add.
ارزش
۳۰۰۰۰
MAX_NUMBER_OF_ENABLED_STATIC_RULESETS
The maximum number of static Rulesets
an extension can enable at any one time.
ارزش
۵۰
MAX_NUMBER_OF_REGEX_RULES
The maximum number of regular expression rules that an extension can add. This limit is evaluated separately for the set of dynamic rules and those specified in the rule resources file.
ارزش
۱۰۰۰
MAX_NUMBER_OF_SESSION_RULES
The maximum number of session scoped rules that an extension can add.
ارزش
۵۰۰۰
MAX_NUMBER_OF_STATIC_RULESETS
The maximum number of static Rulesets
an extension can specify as part of the "rule_resources"
manifest key.
ارزش
۱۰۰
MAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
The maximum number of "unsafe" dynamic rules that an extension can add.
ارزش
۵۰۰۰
MAX_NUMBER_OF_UNSAFE_SESSION_RULES
The maximum number of "unsafe" session scoped rules that an extension can add.
ارزش
۵۰۰۰
SESSION_RULESET_ID
Ruleset ID for the session-scoped rules added by the extension.
ارزش
"_session"
روشها
getAvailableStaticRuleCount()
chrome.declarativeNetRequest.getAvailableStaticRuleCount(): Promise<number>
Returns the number of static rules an extension can enable before the global static rule limit is reached.
بازگشتها
Promise<number>
Chrome 91+
getDisabledRuleIds()
chrome.declarativeNetRequest.getDisabledRuleIds(
options: GetDisabledRuleIdsOptions,
): Promise<number[]>
Returns the list of static rules in the given Ruleset
that are currently disabled.
پارامترها
- گزینهها
Specifies the ruleset to query.
بازگشتها
Promise<number[]>
getDynamicRules()
chrome.declarativeNetRequest.getDynamicRules(
filter?: GetRulesFilter,
): Promise<Rule[]>
Returns the current set of dynamic rules for the extension. Callers can optionally filter the list of fetched rules by specifying a filter
.
پارامترها
- فیلتر
GetRulesFilter optional
Chrome 111+An object to filter the list of fetched rules.
بازگشتها
Promise< Rule []>
Chrome 91+
getEnabledRulesets()
chrome.declarativeNetRequest.getEnabledRulesets(): Promise<string[]>
Returns the ids for the current set of enabled static rulesets.
بازگشتها
Promise<string[]>
Chrome 91+
getMatchedRules()
chrome.declarativeNetRequest.getMatchedRules(
filter?: MatchedRulesFilter,
): Promise<RulesMatchedDetails>
Returns all rules matched for the extension. Callers can optionally filter the list of matched rules by specifying a filter
. This method is only available to extensions with the "declarativeNetRequestFeedback"
permission or having the "activeTab"
permission granted for the tabId
specified in filter
. Note: Rules not associated with an active document that were matched more than five minutes ago will not be returned.
پارامترها
- فیلتر
MatchedRulesFilter optional
An object to filter the list of matched rules.
بازگشتها
Promise< RulesMatchedDetails >
Chrome 91+
getSessionRules()
chrome.declarativeNetRequest.getSessionRules(
filter?: GetRulesFilter,
): Promise<Rule[]>
Returns the current set of session scoped rules for the extension. Callers can optionally filter the list of fetched rules by specifying a filter
.
پارامترها
- فیلتر
GetRulesFilter optional
Chrome 111+An object to filter the list of fetched rules.
بازگشتها
Promise< Rule []>
Chrome 91+
isRegexSupported()
chrome.declarativeNetRequest.isRegexSupported(
regexOptions: RegexOptions,
): Promise<IsRegexSupportedResult>
Checks if the given regular expression will be supported as a regexFilter
rule condition.
پارامترها
- regexOptions
The regular expression to check.
بازگشتها
Promise< IsRegexSupportedResult >
Chrome 91+
setExtensionActionOptions()
chrome.declarativeNetRequest.setExtensionActionOptions(
options: ExtensionActionOptions,
): Promise<void>
Configures if the action count for tabs should be displayed as the extension action's badge text and provides a way for that action count to be incremented.
پارامترها
- گزینهها
بازگشتها
Promise<void>
Chrome 91+
testMatchOutcome()
chrome.declarativeNetRequest.testMatchOutcome(
request: TestMatchRequestDetails,
): Promise<TestMatchOutcomeResult>
Checks if any of the extension's declarativeNetRequest rules would match a hypothetical request. Note: Only available for unpacked extensions as this is only intended to be used during extension development.
پارامترها
- درخواست
بازگشتها
Promise< TestMatchOutcomeResult >
updateDynamicRules()
chrome.declarativeNetRequest.updateDynamicRules(
options: UpdateRuleOptions,
): Promise<void>
Modifies the current set of dynamic rules for the extension. The rules with IDs listed in options.removeRuleIds
are first removed, and then the rules given in options.addRules
are added. Notes:
- This update happens as a single atomic operation: either all specified rules are added and removed, or an error is returned.
- These rules are persisted across browser sessions and across extension updates.
- Static rules specified as part of the extension package can not be removed using this function.
-
MAX_NUMBER_OF_DYNAMIC_RULES
is the maximum number of dynamic rules an extension can add. The number of unsafe rules must not exceedMAX_NUMBER_OF_UNSAFE_DYNAMIC_RULES
.
پارامترها
- گزینههاChrome 87+
بازگشتها
Promise<void>
Chrome 91+
updateEnabledRulesets()
chrome.declarativeNetRequest.updateEnabledRulesets(
options: UpdateRulesetOptions,
): Promise<void>
Updates the set of enabled static rulesets for the extension. The rulesets with IDs listed in options.disableRulesetIds
are first removed, and then the rulesets listed in options.enableRulesetIds
are added. Note that the set of enabled static rulesets is persisted across sessions but not across extension updates, ie the rule_resources
manifest key will determine the set of enabled static rulesets on each extension update.
پارامترها
- گزینههاChrome 87+
بازگشتها
Promise<void>
Chrome 91+
updateSessionRules()
chrome.declarativeNetRequest.updateSessionRules(
options: UpdateRuleOptions,
): Promise<void>
Modifies the current set of session scoped rules for the extension. The rules with IDs listed in options.removeRuleIds
are first removed, and then the rules given in options.addRules
are added. Notes:
- This update happens as a single atomic operation: either all specified rules are added and removed, or an error is returned.
- These rules are not persisted across sessions and are backed in memory.
-
MAX_NUMBER_OF_SESSION_RULES
is the maximum number of session rules an extension can add.
پارامترها
- گزینهها
بازگشتها
Promise<void>
Chrome 91+
updateStaticRules()
chrome.declarativeNetRequest.updateStaticRules(
options: UpdateStaticRulesOptions,
): Promise<void>
Disables and enables individual static rules in a Ruleset
. Changes to rules belonging to a disabled Ruleset
will take effect the next time that it becomes enabled.
پارامترها
- گزینهها
بازگشتها
Promise<void>
رویدادها
onRuleMatchedDebug
chrome.declarativeNetRequest.onRuleMatchedDebug.addListener(
callback: function,
)
Fired when a rule is matched with a request. Only available for unpacked extensions with the "declarativeNetRequestFeedback"
permission as this is intended to be used for debugging purposes only.
پارامترها
- تماس برگشتی
تابع
The
callback
parameter looks like:(info: MatchedRuleInfoDebug) => void
- اطلاعات