Commit graph

3438 commits

Author SHA1 Message Date
Raymond Hill
ed9999efd6
Improve jsonl[...] suite of scriptlets
Reuse original line separator when reassembling JSONL lines.
2025-05-30 11:06:33 -04:00
Raymond Hill
b69f809d91
Need this to distinguish FilterMessage instances 2025-05-29 15:19:03 -04:00
Raymond Hill
d8298bb067
Add support for network filter option message
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1195
2025-05-29 13:23:56 -04:00
Raymond Hill
408b538e75
[mv3] Add support to convert header= option to DNR rules
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/157

The `header=` option will be converted into DNR's `responseHeaders`
condition.

There will be an attempt to convert regex-based values into DNR-
compatible syntax. Not all regex-based patterns can be converted to
use DNR's patterns with `*` and `?` special characters.

The implementation of `header=` option in uBO has been revisited to
improve compatibility with DNR syntax to minimize burden for list
maintainers when creating `header=` filters compatible with both
uBO and uBOL.

The changes:
- Header names are now case-insensitive by default
- Occurrences of `*` in non-regex-based header values now mean
  "matches any number of characters"
- Occurrences of `?` in non-regex-based header values now mean
  "matches zero or one character"

At time of commit, and as per MDN, only Chromium-based browsers
currently support filtering on repsonse headers:
https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/declarativeNetRequest/HeaderInfo

Also as per MDN, Chromium 121-127 silently ignore the `responseHeaders`
condition, potentially causing undue blocking of network requests.
Currently uBOL support Chromium 122 and later, meaning we need to mind
potential false positives in Chromium 122-127 for filters using
`header=` option.
2025-05-22 11:46:08 -04:00
Imre Eilertsen
7e239db9a8
Added AdGuard's 2 newest !#if tokens. (#3938) 2025-05-13 12:38:33 -04:00
Raymond Hill
2e7d0a07e7
[mv3] Add TODO comment 2025-05-11 10:36:21 -04:00
Raymond Hill
3292f128d2
[mv3] Mind discarded regex- or path-based entries when determining genericity
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/28260
2025-05-11 07:32:32 -04:00
Raymond Hill
ea0c400c51
Revert "Allow user to change CodeMirror input style in "My filters""
This reverts commit cf7777e9fd.
2025-05-02 08:43:47 -04:00
Raymond Hill
1d1490523d
[mv3] Fix incorrect DNR priority for redirect/important filters 2025-04-30 08:50:45 -04:00
Raymond Hill
8df96e4718
Fix regression in parsing of AG's [domain=...] syntax
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3235#issuecomment-2836674712

Related commit:
8b696a691a (diff-848f3a5c8459fe07d1c65764e30b7c9471be77f9e9574674442319b831138024)
2025-04-28 17:43:44 -04:00
Raymond Hill
cf7777e9fd
Allow user to change CodeMirror input style in "My filters"
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3613
2025-04-27 10:50:21 -04:00
Raymond Hill
0e5dec7fbb
[mv3] Separate EasyList, EasyPrivacy, PGL lists from uBlock filters
Additionally, remember `badfilter` filters across conversion of
filter lists to DNR rulesets.
2025-04-24 09:58:31 -04:00
Raymond Hill
59f4aca010
Exclude chrome: as valid openers for popup candidates
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2227
2025-04-22 09:34:26 -04:00
Raymond Hill
8b964a8c54
Fetch diff patches from "reliable" servers only
Some CDN servers take too long to mirror updated resources,
potentially preventing diff-updating to work reliably as
intended.
2025-04-21 15:42:04 -04:00
Raymond Hill
b5651417aa
[mv3] Merge Safari branch
Safari version of uBO Lite can now be built from master branch.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/327
2025-04-19 13:08:59 -04:00
Raymond Hill
eaedaf5b10
Fix regexes with potential catastrophic backtracking
The quoted email below was sent to ubo-security at raymondhill dot net:

=====
Dear Raymond,

I am writing to report a potential Regular Expression Denial of Service (ReDoS)
vulnerability in the 1p-filters.js script of uBlock Origin. The vulnerability
occurs due to the use of the regular expression /\s+$/, which is used to remove
trailing whitespace. This issue can lead to a denial of service when processing
strings with a large number of trailing spaces, potentially causing a browser to
freeze.

Affected file(s)

    js/1p-filters.js

Vulnerable pattern(s)

    Lines 131 and 167: /\s+$/

Description of the issue

The regular expression /\s+$/ is applied to remove trailing whitespace in user‑
provided content. However, when the content has a large number of spaces
(e.g., ~100,000), this pattern causes excessive backtracking in the regular
expression engine, resulting in performance degradation and UI freezing. This is
a classic ReDoS attack vector.

Steps to reproduce

1. Open the uBlock Origin dashboard and navigate to the My filters tab.
2. Run the following code in the browser's DevTools Console or as a bookmarklet.
3. Observe the UI freezing for several seconds or even longer, depending on the
   number of spaces used.

PoC (Proof of Concept)

/**
 * poc.js — triggers ReDoS in 1p-filters.js
 * Expected: <1 ms; Actual: several seconds – UI freeze
 */
(() => {
  const payload = " ".repeat(100000) + "!";  // 100,000 spaces + sentinel
  const run = () => {
    if (!window.cmEditor) {
      console.error("cmEditor not ready");
      return;
    }
    // Inject payload into the editor
    cmEditor.setValue(payload);

    console.time("ReDoS");
    // Call the vulnerable function (mirroring getEditorText)
    cmEditor.getValue().replace(/\s+$/, '');
    // Alternatively, simulate a realistic user flow:
    // document.querySelector('#userFiltersApply').click();
    console.timeEnd("ReDoS");
  };

  if (document.readyState === "complete") {
    run();
  } else {
    window.addEventListener("load", run, { once: true });
  }
})();

Impact

This issue can significantly degrade the user experience, causing the page to
become unresponsive. If an attacker can inject this malicious string into the
page (for example, through XSS or other attacks), it could lead to a denial of
service (DoS). This vulnerability can be triggered repeatedly, causing the
browser to hang indefinitely.

Suggested fix

The issue can be mitigated by replacing /\s+$/ with a more efficient solution,
such as a look‑behind assertion /(?<=\S)\s+$/ (available in modern browsers)
which ensures no backtracking occurs, or using trimEnd() for legacy support:

// Example of using look-behind:
cmEditor.setValue(text.replace(/(?<=\S)\s+$/, '') + '\n\n');

// Alternatively, using trimEnd():
cmEditor.setValue(text.trimEnd() + '\n\n');

Additional information

If required, I am happy to assist in testing or provide more information.
Please feel free to contact me for further clarification.

Best regards,
[redacted]
=====
2025-04-15 12:47:02 -04:00
Raymond Hill
f51a4c79db
[mv3] Determine "genericity" on a per-cosmetic filter basis
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/328
2025-04-13 09:02:12 -04:00
Raymond Hill
cac420a22d
Rename trusted-create-element to trusted-create-html
To avoid confusion with AG's own `trusted-create-element`, which has
a different syntax and a different purpose.
2025-04-13 07:34:36 -04:00
Raymond Hill
dfd42ebf5f
Improve noscript spoofing
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2642
2025-04-12 15:20:18 -04:00
Raymond Hill
20dd606504
Add trusted-create-element scriptlet
As discussed with filter list maintainers.

* @scriptlet trusted-create-element
*
* @description
* Element(s) from a parsed HTML string are added as child element(s) to a
* specific parent element in the DOM.
*
* @param parent
* A CSS selector identifying the element to which created element(s) will be
* added.
*
* @param html
* An HTML string to be parsed using DOMParser, and which resulting elements
* are to be added as child element(s).
*
* @param duration
* Optional. If specified, the time in ms after which the added elements will
* be removed. No removal will occur if not specified.
2025-04-12 10:51:50 -04:00
Raymond Hill
ad2add4676
Code review 2025-04-12 08:08:12 -04:00
Raymond Hill
f25a437fd1
Code review re. scriptlets lookup
Possibly fixes a race condition at browser launch causing empty
scriptlets to be injected (and cached).
2025-04-11 18:20:51 -04:00
Raymond Hill
11e159fd31
[mv3] Discard regex- or path-based targets in static extended filters
There is no support yet for such filters in uBO Lite.
2025-04-11 09:49:03 -04:00
Raymond Hill
15e832da8a
Mind potential race condition when dynamically registering scriptlets
In Firefox, scriptlets are dynamically registered as content scripts
to ensure they execute in a timely manner.

The race condition could lead to scriptlet injection failing at
browser launch time in Firefox when the setting "Suspend network
activity until all filter lists are loaded" had been disabled[1],
even after forcing a page reload. Causing the filter lists to
reload would make the issue go away.

[1] Default is enabled in Firefox and it is strongly advised to NOT
    change this.
2025-04-11 09:35:38 -04:00
Raymond Hill
d0e303ca19
Fix regression in response header filtering
Related commit:
8b696a691a
2025-04-10 07:32:09 -04:00
Raymond Hill
9029d1d715
Fix regression in categorizing highly generic filters at load time
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3235#issuecomment-2790807915

Regression from:
8b696a691a
2025-04-09 18:23:01 -04:00
Raymond Hill
f6f7333b5d
Code review for recent commit re path support in target
Related commit:
8b696a691a

1) There will always be a `/` at that point in the code path
2) The hostname will already be a match in that code path
2025-04-08 19:01:43 -04:00
Raymond Hill
eb7f23b173
Fix silly test
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/1755#discussioncomment-12769044

Related commit:
8b696a691a
2025-04-08 15:42:00 -04:00
Raymond Hill
2bb6999e3f
Fix undue unchecking of setting in "My filters"
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/2895#discussioncomment-12749154
2025-04-08 13:49:41 -04:00
Raymond Hill
8b696a691a
Add path support as target option in static extended filtering
Support for paths allows to narrow down specific static extended
filters to specific webpages on a given site.

Examples of usage:

example.com/toto##h1
/example\.com\/toto\d+/#@#h1
2025-04-08 11:20:27 -04:00
Raymond Hill
6b9968d804
Add logging information re. fetched assets 2025-04-03 12:11:57 -04:00
Raymond Hill
4ce26b63ff
Add trusted-prevent-fetch scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/915#discussioncomment-12077068
2025-04-03 11:59:00 -04:00
Raymond Hill
8632cd6072
Fix typo causing regression in uritransform=
Related feedback:
https://github.com/uBlockOrigin/uAssets/discussions/27802
2025-03-30 16:56:04 -04:00
Raymond Hill
9adedbc30e
Remove the need for parethesis for JSONPath filter selectors
As per official proposed standard:
https://www.rfc-editor.org/rfc/rfc9535.html#name-filter-selector
2025-03-30 13:57:04 -04:00
Raymond Hill
5587111d21
Add support for union syntax in JSONPath
This immediately useful to list maintainers.

Related commits:
- https://github.com/gorhill/uBlock/commit/d5fd1de150
- https://github.com/gorhill/uBlock/commit/b18daa53aa
- https://github.com/gorhill/uBlock/commit/caa25cdaf3
2025-03-30 12:36:37 -04:00
Raymond Hill
97e740bd2c
Code viewer shouldn't be maximizable
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3161#issuecomment-2764549781
2025-03-30 09:34:22 -04:00
Raymond Hill
b381ceda72
Mind other old constructs for scriptlets
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1jmcqhn/

Related commit:
https://github.com/gorhill/uBlock/commit/44c038b9a1
2025-03-29 09:54:41 -04:00
Raymond Hill
44c038b9a1
Fix for old scriptlet syntax
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1jmcqhn/
2025-03-29 09:06:07 -04:00
Raymond Hill
564f3f3442
English 2025-03-28 10:24:21 -04:00
Raymond Hill
caa25cdaf3
Add minimal in-code documentation for JSONPath 2025-03-28 10:20:21 -04:00
Raymond Hill
b18daa53aa
Add json-edit suite of scriptlets; extend replace= option
Scriptlets added:
- json-edit
- trusted-json-edit
- json-edit-xhr-response
- trusted-json-edit-xhr-response
- json-edit-fetch-response
- trusted-json-edit-fetch-response
- jsonl-edit-xhr-response
- trusted-jsonl-edit-xhr-response
- jsonl-edit-fetch-response
- trusted-jsonl-edit-fetch-response

These scriptlets are functionally similar to their `json-prune` counterpart,
except that they all use the new uBO-flavored JSONPath syntax, and the
`trusted-` versions allow to modify values instead of just removing them.

The `replace=` filter option has been extended to support applying
uBO-flavored JSONPath syntax to the response body. If the `replace=`
value starts with `json:` or `jsonl:`, the remaining of the value will
be interpreted as a JSONPath directive, which can be used to either
remove or modify property in a JSON document.
2025-03-28 09:51:38 -04:00
Raymond Hill
d5fd1de150
Use JSONPath-like syntax for new jsonl- scriptlets 2025-03-26 11:47:56 -04:00
Raymond Hill
760bd23c5e
Minor 2025-03-25 12:29:46 -04:00
Raymond Hill
68a256bdde
Improve trusted-prevent-dom-bypass scriptlet 2025-03-25 12:12:00 -04:00
Raymond Hill
d18311213d
Improve jsonl-prune-... scriptlets 2025-03-24 12:16:10 -04:00
Raymond Hill
0fce659bb0
Use Object.hasOwn instead of Object.prototype.hasOwnProperty
Reference:
https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/hasOwn
2025-03-24 08:15:09 -04:00
Raymond Hill
0c8de6b550
Fix prevent-innerHTML scriptlet 2025-03-24 07:33:21 -04:00
Raymond Hill
95a3be9d56
Add jsonl-prune-xhr-response/jsonl-prune-fetch-response scriptlets
As discussed internally with filter list volunteers.
2025-03-22 16:01:43 -04:00
Raymond Hill
88fa550a96
Improve [json-prune|trusted-replace]-fetch-response scriptlets
Output more information to the logger in verbose mode.
2025-03-20 12:06:58 -04:00
Raymond Hill
5b81369fc2
bidiTrie is hardcoded
Thus no need to threat it as if it was a changing parameter.
2025-03-20 12:03:17 -04:00
Raymond Hill
76b80baaea
Fix TypedArray overflow
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3582
2025-03-20 07:14:38 -04:00
Raymond Hill
18349292a6
Improve logging ability in new prevent-innerHTML scriptlet 2025-03-19 12:43:36 -04:00
Raymond Hill
fe744816f1
Add prevent-innerHTML scriptlet
@description
Conditionally prevent assignment to `innerHTML` property.

@param [selector]
Optional. The element must matches `selector` for the prevention to take
place.

@param [pattern]
Optional. A pattern to match against the assigned value. The pattern can be
a plain string, or a regex. Prepend with `!` to reverse the match condition.

As discussed with filter list volunteers.
2025-03-19 12:34:03 -04:00
Raymond Hill
98b011f64c
[mv3] Add support for explicit generichide filter option
`generichide` option is implicitly enforced on all sites unless an
exception overrides `generichide`. Though rare, sometimes a
`generichide` exception needs to be overridden so that generic
cosmetic filtering is made possible on a specific site.

This commit is to add support for restoring generic cosmetic
filtering on sites which were excluded through a `generichide`
exception.

Concretely, this is needed to ensure the test suite can properly
verify that generic cosmetic filtering is working when the
filtering mode is set to "complete":

||ublockorigin.github.io^$generichide,important
2025-03-18 17:15:35 -04:00
Raymond Hill
d36ea89a02
Improve prevent-set[Timeout|Interval] scriptlets 2025-03-17 08:02:30 -04:00
Raymond Hill
4aebdbb0a9
Add quit button to element zapper mode
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1968

Given the availability of this new quit button, the element zapper
will now default to stick around after zapping an element.
2025-03-16 05:50:53 -04:00
Raymond Hill
9e946ce0c3
Improve trusted-override-element-method scriptlet
As discussed with filter list maintainers:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/933
2025-03-15 07:50:28 -04:00
Raymond Hill
34cea70924
Disable obsolete cache-control workaround for Firefox
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3576

This is the first step, a trivial code change which disable the
injection of `Cache-Control` header in Firefox.

In the next dev cycle, the second step will be to remove all
the code related to `Cache-Control` injection.
2025-03-14 10:47:14 -04:00
Raymond Hill
a009623d97
[mv3] Improve generic cosmetic filtering
Specifically, properly exclude generic cosmetic filters according to
specific cosmetic exceptions.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/181
2025-03-13 13:15:27 -04:00
Raymond Hill
7db84ef13d
Do not blindly force https in urlskip
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2708584507
2025-03-11 09:15:40 -04:00
Raymond Hill
31d82c494b
Fix typo in variable name 2025-03-06 14:15:02 -05:00
Raymond Hill
fc231998b9
Improve overlay-buster scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3470
2025-03-06 09:50:37 -05:00
Raymond Hill
a483f7955f
Add ability to inject scriptlets according to origin of ancestor contexts
New syntax for scriptlet-based filtering: it is now possible to
inject a scriptlet in a context according to whether an ancestor
origin matches a specific hostname. Example:

  example.com>>##+js(set, iAmEmbeddedInExampleDotCom, true)

The new `>>` specifier means that the scriptlet will not be injected
in `example.com`, but will be injected in all direct and indirect
embedded contexts in pages loaded from `example.com`

The new ancestor domain specifier also works for entity directives:

  example.*##+js(set, iAmEmbeddedInExampleDotEffectiveTLD, true)

This is an experimental feature, to be further evaluated and
discussed by filter list maintainers. This is not a complete
implementation, by choice. Do not open issues regarding this
new syntax, the current shortcomings are known.

The new syntax is being discussed internally at:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/244
2025-03-06 08:57:27 -05:00
Raymond Hill
e636c32f2a
Fix range parser in prevent-setTimeout scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/925#discussioncomment-11940830
2025-03-04 07:12:56 -05:00
Raymond Hill
987ddad1fd
[mv3] Adjust as per feedback
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/156#issuecomment-2696060398
2025-03-04 07:02:41 -05:00
Raymond Hill
1dbd280ba3
[mv3] Convert domain= to to= for csp=/permissions= options
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/156#issuecomment-2694741399
2025-03-03 11:45:54 -05:00
Raymond Hill
34df044808
Add filter option synonyms for strict1p/strict3p
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3554
2025-03-01 16:26:46 -05:00
Raymond Hill
36404543e4
Increase URL buffer size to 8192 (from 2048)
Related:
https://github.com/easylist/easylist/commit/777d7ba9
2025-03-01 14:48:51 -05:00
Raymond Hill
ea8853cda3
Use onmessage/postMessage instead of BroadcastChannel in diff updater 2025-02-28 17:18:48 -05:00
Raymond Hill
d41989e62a
Improve disable-newtab-links scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3551
2025-02-25 13:02:44 -05:00
Raymond Hill
9c26a07b53
Improve prevent-addEventListener scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3360
2025-02-24 12:47:54 -05:00
Raymond Hill
5921e50e03
Fix reverse lookup of ##^responseheader(...) filters
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3544
2025-02-20 15:11:36 -05:00
Raymond Hill
9bb1a2baaf
Improve evaldata-prune scriptlet 2025-02-20 09:47:36 -05:00
Raymond Hill
0df7faffac
Improve noeval-if scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2907#issuecomment-2660051167
2025-02-19 14:01:27 -05:00
Fanboynz
35a47d674b
Add "closed","next", "mandatory", "agree/disagree" values to cookies.js (#3934)
* Add closed and next values to cookies.js

* Add mandatory to cookie value

* Add disagree/aggree
2025-02-19 07:36:02 -05:00
Raymond Hill
ab0f4ba0d4
[mv3] Fix conversion of filters with important option
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/266
2025-01-10 10:25:15 -05:00
Raymond Hill
f8975e3a6a
Better integrate latest eslint version 2025-01-10 10:25:15 -05:00
Fanboynz
4b12247da1
Add decline value to cookie.js (#3933) 2025-01-10 09:21:19 -05:00
Raymond Hill
2266473336
Fix regression in trusted-replace-argument scritplet
Related feedback:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/859#discussioncomment-11751928

Regression from:
adced29b5b
2025-01-06 20:04:22 -05:00
Raymond Hill
b617926c1c
Improve abort-on-stack-trace scriptlet
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/26704#issuecomment-2569381462
2025-01-04 20:29:19 -05:00
Raymond Hill
551c6bc6eb
Improve href-sanitizer scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/26709#issuecomment-2569993803
2025-01-04 20:23:53 -05:00
Fanboynz
62178de756
Add granted and done cookie values (#3932) 2024-12-30 08:27:50 -05:00
Raymond Hill
61922da24b
[mv3] Extend strict-blocking coverage; improve URL-skip behavior
This extends coverage of strict-blocking to pattern-based filters
with `doc` filter option.

When proceeding with a URL-skip URL present, no temporary bypass
will be created when the "Don't warn me again about this site" is
left unchecked. The idea is to avoid the intermediate redirects
if we navigate again on the same strict-blocked site, while a
temporary bypass would prevent this.

uBO's "Badware risks" list has been spinned off as its own list.
The idea is that should a site be strict-blocked from that list,
we would want to know the strict-block is due to the
"Badware risks" list.
2024-12-29 16:38:56 -05:00
Raymond Hill
c92a518218
Fix deserialization of ArrayBuffer shared by multiple TypedArrays
Deserialization failed to restore proper ArrayBuffer when used by
multiple TypedArrays.

This didn't affect uBO since this specific code path was never
taken.
2024-12-26 19:14:20 -05:00
Raymond Hill
cb6c11ab6f
Improve trusted-suppress-native-method scriptlet
As per AdGuard's documentation `/.../` is a valid matcher, to
match a string argument against a regex pattern.
2024-12-26 08:10:13 -05:00
Raymond Hill
42638f0e44
Fix regression in href-sanitizer scriptlet
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2531#issuecomment-2561968581

Regression from:
https://github.com/gorhill/uBlock/commit/9bf8d53ebe
2024-12-25 14:26:00 -05:00
Raymond Hill
a7aa755f18
Improve urlskip= filter option
New step: `#`, to extract the hash part of a URL.

Example, URL:
https://example.com/#aHR0cHM6Ly9naXRodWIuY29tL3VCbG9ja09yaWdpbi8=

Filter:
||example.com^$urlskip=# -base64

As a result, navigate to https://github.com/uBlockOrigin/
2024-12-24 08:59:28 -05:00
Raymond Hill
7494eaf621
Improve parse-properties-to-match scriptlet helper
Related issue:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/831#discussioncomment-11637436

If the property name contains unexpected characters, assume that
the `:` is not a separator.
2024-12-21 11:27:03 -05:00
Raymond Hill
9bf8d53ebe
Improve href-sanitizer scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3487

Add support for `urlskip=` syntax by internally reusing `urlskip=`
code.
2024-12-20 10:12:33 -05:00
Fanboynz
791a2b08e1
Add all/none in set-local/cookie (#3928)
* Add all/none in set-local/cookie

* Add functional cookie value
2024-12-16 08:26:36 -05:00
Raymond Hill
9c75814525
Use code quotes for filters in logger export feature 2024-12-14 09:03:32 -05:00
Raymond Hill
8ba71f09d7
Improve quote usage in filter options and scriptlets
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-2540436382

Using quotes in filter option values is meant to remove ambiguity
when the value contains special characters. This was not working when
the value started with `$`. For example, fixes usage of quotes in:

  $removeparam='$deep_link'

Also, fixed logger output for scriptlets using empty parameters
in quotes.
2024-12-13 10:54:01 -05:00
Raymond Hill
9b2cf0169a
Improve trusted-suppress-native-method scriptlet
Add ability to log stack trace when verbose mode is enabled.
2024-12-12 10:18:42 -05:00
Raymond Hill
7ed3470844
Improve trusted-suppress-native-method scriptlet
Add support for the `stack` parameter.
2024-12-11 08:47:10 -05:00
Raymond Hill
2ccb01973e
Fix regression in set-constant scriptlet
Regression from 3417fe3d5d
2024-12-09 08:22:21 -05:00
Raymond Hill
7daa45e49f
Revert "Fix regression in set-constantscriptlet"
This reverts commit b7441bb9c0.
2024-12-09 08:19:43 -05:00
Raymond Hill
b7441bb9c0
Fix regression in set-constantscriptlet
Regression from https://github.com/gorhill/uBlock/commit/3417fe3d5d
2024-12-09 08:05:47 -05:00
Raymond Hill
56ba93700c
[mv3] Ensure no generic cosmetic filters end up in specific realm
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/254

Cosmetic filters with only negated hostnames would end up being
classified as specific, while in reality the filter is generic, with
specific exceptions.

This commit fixes the improper classification. Enforcing specific
exception filters in the generic realm is still an issue to
address.
2024-12-08 08:37:29 -05:00
Raymond Hill
4ed97bb513
Update JSDoc documenation 2024-12-06 12:04:21 -05:00
Raymond Hill
3417fe3d5d
Improve trusted-replace-argument scriptlet
As discussed with filter list maintainers.
2024-12-06 11:53:42 -05:00