From c2c2ccb109b4eb312bf08d47c50328c333a202ea Mon Sep 17 00:00:00 2001 From: MasterKia Date: Thu, 29 Dec 2022 12:31:57 +0330 Subject: [PATCH] Add method= network filter option; Add mentions of $header and ##^responseheader(...) to each section respectively --- Static-filter-syntax.md | 48 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/Static-filter-syntax.md b/Static-filter-syntax.md index 3f67ea7..f4329a9 100644 --- a/Static-filter-syntax.md +++ b/Static-filter-syntax.md @@ -440,6 +440,8 @@ Where connection: - is of type `script`. - has a response HTTP header named `via` whose value matches `1.1 google`. +To remove response headers, see: [`Response header filtering`](#response-header-filtering). + *** @@ -478,6 +480,40 @@ Instructs uBO filtering engine to perform a case-sensitive match. *** +#### `method` + +New in [1.46.1b0](https://github.com/gorhill/uBlock/commit/b6981877ba8f9011292aee9556c4d4c08c1bfd2d). + +Related issue: [uBlockOrigin/uBlock-issues#2117](https://github.com/uBlockOrigin/uBlock-issues/issues/2117). + +Ability to filter network requests according to their HTTP method. + +This option supports a list of `|`-separated lowercased method names. Negated method names are allowed. + +These are valid methods: + +- `connect` +- `delete` +- `get` +- `head` +- `options` +- `patch` +- `post` +- `put` + +As per DNR's own documentation: +- https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#type-RequestMethod + +Example: +``` +||google.com^$method=post|get +||example.com^$method=~get +``` + +The logger shows the method used for every network request. It's possible to filter the logger output for most-common methods: `get`, `head`, `post`. + +*** + #### `ping` Blocks requests send by the [`ping`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-ping) attribute on links and [Navigator.sendBeacon()](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon). @@ -546,7 +582,7 @@ For example: New in [1.46.1b0](https://github.com/gorhill/uBlock/commit/19f8b30d577ac17097b8060adfc92093866e26d8). -Solves [uBlockOrigin/uBlock-issues#2412](https://github.com/uBlockOrigin/uBlock-issues/discussions/2412). +Related issue: [uBlockOrigin/uBlock-issues#2412](https://github.com/uBlockOrigin/uBlock-issues/discussions/2412). The main motivation of this option is to give uBO's static network filtering engine an equivalent of DNR's [`requestDomains`](https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#property-RuleCondition-requestDomains) and [`excludedRequestDomains`](https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#property-RuleCondition-excludedRequestDomains). @@ -603,7 +639,7 @@ CSP option syntax is unusual compared to other filters. Recommend to be used onl Refer to ["Content Security Policy (CSP) Quick Reference Guide"](https://content-security-policy.com/) or [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy) for further syntax help. -See also [`denyallow`](#denyallow). +See also [`denyallow`](#denyallow) *** @@ -756,6 +792,8 @@ Since the base domain name gets used to derive the name of the "entity", `google New in [1.25.0](https://github.com/gorhill/uBlock/commit/3fab7bfdb4f892f3d33159fd53ccf1d5342a090a). +Related issue: [uBlockOrigin/uBlock-issues#803](https://github.com/uBlockOrigin/uBlock-issues/issues/803). + By preceding a typical generic cosmetic filter with a literal `*`, this can turn it into a specific-generic cosmetic filter that unconditionally gets injected into all web pages. ```adb @@ -772,8 +810,6 @@ The new specific-generic form will also be disabled when a web page is subject t Specific-generic cosmetic filters will NOT become discarded when checking the "Ignore generic cosmetic filters" option in the "Filter lists" pane since this option is primarily to disable the DOM surveyor. -Related issue: [#803](https://github.com/uBlockOrigin/uBlock-issues/issues/803). - *** ### Cosmetic filters @@ -806,7 +842,7 @@ Since `:remove()` is an "action" operator, it must only be used as a trailing op AG's cosmetic filter syntax `{ remove: true; }` will be converted to uBO's `:remove()` operator internally. -To remove elements from a document _before_ it is parsed by the browser, see: [`HTML filters`](#html-filters) +To remove elements from a document _before_ it is parsed by the browser, see: [`HTML filters`](#html-filters). *** @@ -918,6 +954,8 @@ Given that the header removal occurs at onHeaderReceived time, this new ability The motivation for this new filtering ability is an instance of a website using a `refresh` header to redirect a visitor to an undesirable destination after a few seconds. +To filter network responses according to whether a **specific** response header is present and whether or not it matches a **distinct value**, see: [`header`](#header). + *** ### Scriptlet injection