1
1
mirror of https://github.com/gorhill/uBlock.git synced 2025-10-05 21:32:39 +02:00

Compare commits

...

1143 Commits

Author SHA1 Message Date
Raymond Hill
2a2e223fd9 Import translation work from https://crowdin.com/project/ublock 2025-10-05 10:41:10 -04:00
Raymond Hill
cdc5a4a0e7 [mv3] Use "split" mode for "incognito" manifest key
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/336
2025-10-05 10:29:58 -04:00
Raymond Hill
be14670b76 [mv3] Decrease granularity of hashes of generic cosmetic selectors
This reduces the size of content scripts with no downside.
2025-10-04 13:32:16 -04:00
Raymond Hill
4ee38a056e Remove stray character 2025-10-04 12:53:07 -04:00
Raymond Hill
0d4f55ff30 Update changelog 2025-10-04 10:27:24 -04:00
Raymond Hill
a43d1d8c42 Improve href-sanitizer scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3650
2025-10-04 10:22:47 -04:00
Raymond Hill
41a65315f9 [mv3] Minor code change 2025-10-03 14:45:46 -04:00
Raymond Hill
5bcdf3731d New revision for dev build 2025-10-02 12:39:24 -04:00
Raymond Hill
cc30763c57 Update changelog 2025-10-02 12:38:35 -04:00
Raymond Hill
d376adaae8 Fix editInboundObjectFn utility scriptlet 2025-10-02 12:31:13 -04:00
Raymond Hill
d8ed2c2866 Update in-source code documentation 2025-10-02 12:30:06 -04:00
Raymond Hill
52bc354bce Improve trusted-replace-argument scriptlet 2025-10-02 12:27:45 -04:00
Raymond Hill
bf09ec0b99 Update submodules 2025-10-02 07:39:59 -04:00
Raymond Hill
a03de94729 import translation work from https://crowdin.com/project/ublock 2025-10-02 07:32:16 -04:00
Raymond Hill
f36d2b8496 Add ability to test against regex in JSONPath expressions
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/30157#issuecomment-3356048999
2025-10-01 11:35:15 -04:00
Raymond Hill
2b8ef3ee8e Revert "Make Firefox dev build auto-update"
This reverts commit 9f8d74b60f.
2025-10-01 11:23:47 -04:00
Raymond Hill
9f8d74b60f Make Firefox dev build auto-update 2025-10-01 11:22:48 -04:00
Raymond Hill
0ee49bcc29 Make Firefox dev build auto-update 2025-10-01 10:19:57 -04:00
Raymond Hill
8d721f6a68 Make Firefox dev build auto-update 2025-10-01 10:14:43 -04:00
Raymond Hill
bbd12ec2f3 New revision for dev build 2025-10-01 09:26:15 -04:00
Raymond Hill
54326a350b Update changelog 2025-10-01 09:25:43 -04:00
Raymond Hill
dd4f764920 Improve proxy-apply utility scriptlet 2025-10-01 09:21:43 -04:00
Raymond Hill
6623889920 [mv3] Improve details of troublshooting info
Also, avoid loading troubleshooting module in service worker as it's
of use only as a user interface component.
2025-09-29 13:07:59 -04:00
Raymond Hill
4b1f87710c [mv3] Minor CSS changes 2025-09-29 12:19:11 -04:00
Raymond Hill
e91c47846b [mv3] Fix issues with restore from file 2025-09-28 15:04:26 -04:00
Raymond Hill
bb8e3d4d47 Import translation work from https://crowdin.com/project/ublock 2025-09-28 14:35:14 -04:00
Raymond Hill
be1502feb3 [mv3] Avoid mouseenter/mouseleave on mobile devices
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/478
2025-09-28 11:24:23 -04:00
Raymond Hill
80cf4d9286 [mv3] Use manifest's path value to access static rulesets
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/503
2025-09-28 11:08:48 -04:00
Raymond Hill
f40dac91b9 Import translation work from https://crowdin.com/project/ublock 2025-09-28 09:28:14 -04:00
Raymond Hill
575f018c69 [mv3] Fine tuning details 2025-09-27 15:59:32 -04:00
Raymond Hill
6a9357e903 [mv3] Group toggle-based options all under same section 2025-09-27 13:57:00 -04:00
Raymond Hill
12418ae664 Import translation work from https://crowdin.com/project/ublock 2025-09-27 13:54:09 -04:00
Raymond Hill
2581004e8f [mv3] Add ability to backup/restore settings
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/482
2025-09-27 12:53:58 -04:00
Raymond Hill
f89de42364 Import translation work from https://crowdin.com/project/ublock 2025-09-27 12:34:44 -04:00
Raymond Hill
10e48d7ec5 Import translation work from https://crowdin.com/project/ublock 2025-09-27 12:31:08 -04:00
Raymond Hill
f441773f30 Update changelog 2025-09-26 11:57:51 -04:00
Raymond Hill
3e5ea3b03f Fix removeparam for multiple query parameters with same name
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/30090
2025-09-26 11:55:38 -04:00
Raymond Hill
34d202f79d Import translation work from https://crowdin.com/project/ublock 2025-09-25 09:08:34 -04:00
Raymond Hill
93c5c077a0 [mv3] Minor CSS-related change 2025-09-25 08:57:55 -04:00
Raymond Hill
91d36749bb [mv3] Export using human-readable hostnames 2025-09-24 11:01:50 -04:00
Raymond Hill
4598ef3edc Import translation work from https://crowdin.com/project/ublock 2025-09-24 10:48:18 -04:00
Raymond Hill
8af80be5b2 [mv3] Add dashboard pane to manage custom filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/418
2025-09-24 10:42:18 -04:00
Raymond Hill
4fb4aa1b25 New revision for dev build 2025-09-22 19:10:56 -04:00
Raymond Hill
e2325f5e79 Update changelog 2025-09-22 19:10:34 -04:00
Raymond Hill
9aa91ba111 Improve trusted-click-element scriptlet
Related discussion/issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/2917
- https://github.com/uBlockOrigin/uAssets/discussions/30124

The "list of selectors" parameter is now a "list of steps". A step
can be:

- A selector, which tells the scriptlet to click a matching element. If
  no matching element is found, the scriptlet will wait for a matching
  element  to become available.
- An integer, which tells the scriptlet to wait n ms before processing
  the next step
- A directive, which is a string starting with `!` (not implemented yet)

If the last item in the list is an integer, this tells the scriplet to
override the built-in timeout value of 10s, such that the life time of
the scriptlet can now be extended beyond 10s.

Example:

  ..##+js(trusted-click-element, '1000, a, 500, b, c, 15000')

The scriptlet filter above will perform the following steps, in order:

- Prepare the scriptlet to timeout at 15s from now
- Wait 1000 ms
- Wait for element `a` to become available then click on it
- Wait 500 ms
- Wait for element `b` to become available then click on it
- Wait for element `c` to become available then click on it
- Abort if all the steps cannot be completed before 15s

The changes keep compatiblity with older syntax or with AdGuard
syntax.
2025-09-22 18:50:58 -04:00
Raymond Hill
705e6329eb Import translation work from https://crowdin.com/project/ublock 2025-09-22 12:46:13 -04:00
Raymond Hill
8de47f250d Improve google-ima shim
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/30134
2025-09-22 10:41:36 -04:00
Raymond Hill
5127e17573 Update submodules 2025-09-21 09:53:25 -04:00
Raymond Hill
511a59584d [mv3][safari] Internally disable strict-blocking in Safari
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/30118#issuecomment-3315925462
2025-09-21 09:43:21 -04:00
Raymond Hill
1209119206 Unreference obsolete npm scripts
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3805
2025-09-20 09:21:14 -04:00
Raymond Hill
87dddb7d78 Add back a uBO-specific version of "CERT.PL's Warning List"
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3793
2025-09-18 10:17:38 -04:00
Raymond Hill
836e04d110 [mv3][safari] Remove doc from removeParams rules
Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/476
- https://github.com/uBlockOrigin/uBOL-home/issues/409
2025-09-17 13:34:28 -04:00
Raymond Hill
b3b2142fb6 [mv3][safari] Exclude "AdGuard URL Tracking Protection"
Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/476
- https://github.com/uBlockOrigin/uBOL-home/issues/409
2025-09-16 09:15:12 -04:00
Raymond Hill
e9e1626f8e Update changelog 2025-09-15 09:34:21 -04:00
Raymond Hill
889c0eb208 Fix potential infinite loop when scanning for $ anchor
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3799

An infinite loop in the network filter parser was triggered when
the following conditions were fulfilled:

- There was a network option `$` anchor
- There were only whitespace character(s) preceding the anchor
- There was an invalid filter option following the anchor
2025-09-15 09:26:09 -04:00
Raymond Hill
cb767f4534 Remove obsolete files 2025-09-12 11:05:15 -04:00
Raymond Hill
edd26d27eb Remove obsolete files 2025-09-12 11:04:43 -04:00
Raymond Hill
9a5703fa0d Fix revision for next dev build 2025-09-12 10:52:56 -04:00
Raymond Hill
b7f4c1f5d7 Update submodules 2025-09-12 10:52:25 -04:00
Raymond Hill
3609ea66ed Make Firefox dev build auto-update 2025-09-12 09:24:50 -04:00
Raymond Hill
087bef3837 Update submodules 2025-09-11 09:52:57 -04:00
Raymond Hill
2943ef5112 [mv3] Don't use push() when large collections are possible
Otherwise this opens potential stack overflow issues.
2025-09-11 09:29:39 -04:00
Raymond Hill
e016a63f7b Lower maintenance burden: Drop assets that never result in feedback 2025-09-08 14:40:45 -04:00
Raymond Hill
126495d17a Update changelog 2025-09-08 14:20:21 -04:00
Raymond Hill
30e5e8c8ce Remove obsolete code 2025-09-08 14:09:55 -04:00
Raymond Hill
23056514cc New revision for dev build 2025-09-08 14:06:53 -04:00
Raymond Hill
e1028c299f Update changelog 2025-09-08 08:14:30 -04:00
Raymond Hill
8ce7a8d1e4 Update changelog 2025-09-08 08:13:35 -04:00
Raymond Hill
50cb780107 Fix version snafu
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3792
2025-09-08 08:11:20 -04:00
Raymond Hill
52dba4116e Allow generic exception for replace= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3791
2025-09-08 07:32:03 -04:00
Raymond Hill
5d88b72b47 Update README.md 2025-09-07 08:39:45 -04:00
Raymond Hill
f290d0a142 New revision for stable release 2025-09-06 12:26:03 -04:00
Raymond Hill
946a3d202c Update submodules 2025-09-06 10:23:09 -04:00
Raymond Hill
7eab358165 Fix makefile 2025-09-06 10:22:45 -04:00
Raymond Hill
0936b9b8b7 Import translation work from https://crowdin.com/project/ublock 2025-09-06 08:23:05 -04:00
Raymond Hill
abe144a79d Update submodules 2025-09-05 09:25:01 -04:00
Raymond Hill
80f7bd155a Make Firefox dev build auto-update 2025-09-05 09:17:31 -04:00
Raymond Hill
da9491c94e Update makefile 2025-09-04 09:51:02 -04:00
Raymond Hill
4fbcabbc66 [mv3] Move redirect/removeParams/modifyHeaders rules to static rulesets
Since permissions are now managed by the browsers, the browser will take
care whether to enforce those "usafe" rules according to the permissions
in effect on a given site.
2025-09-02 12:29:41 -04:00
Raymond Hill
8281eaba17 Update submodules 2025-09-02 10:19:49 -04:00
Raymond Hill
e86e1db87b New revision for release candidate 2025-09-02 10:03:51 -04:00
Raymond Hill
a0a996916f Update changelog 2025-09-02 10:03:28 -04:00
Raymond Hill
d2bce26e7d Improve prevent-fetch scriptlet
Add vararg `throttle, n` where `n` is the time to wait in ms before
returning a response from proxied `fetch()`.

As discussed with filter list maintainers.
2025-09-02 10:00:27 -04:00
Raymond Hill
8cdada4899 Update npm 2025-09-01 10:10:03 -04:00
Raymond Hill
7cdd78b595 Update submodules 2025-09-01 10:00:26 -04:00
Raymond Hill
07056c2de5 Update submodules 2025-08-31 11:09:15 -04:00
Raymond Hill
64858e9b9e Minor 2025-08-30 09:58:33 -04:00
Raymond Hill
17c6334cbd Import translation work from https://crowdin.com/project/ublock 2025-08-30 09:15:19 -04:00
Raymond Hill
d1a29d9899 [mv3] Ensure ui is visible even after failure 2025-08-29 11:19:24 -04:00
Raymond Hill
bc05f31cc2 [mv3] Merge AdGuard mobile filters with uBO's own mobile filters
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/20299#issuecomment-3228879091
2025-08-29 09:23:51 -04:00
Raymond Hill
57557ea116 New revision for release candidate 2025-08-28 11:19:33 -04:00
Raymond Hill
6f6724ce1a Update changelog 2025-08-28 11:17:51 -04:00
Raymond Hill
6327aae56c Add support to strict-block from ipaddress= option
As discussed with filter list maintainers.
2025-08-28 11:13:43 -04:00
Raymond Hill
31cd8b3983 Remove unused file 2025-08-25 17:01:20 -04:00
Raymond Hill
0d442f097f File moved to its own repo 2025-08-25 15:58:47 -04:00
Raymond Hill
353e1bacc1 Update submodules 2025-08-25 15:36:22 -04:00
Raymond Hill
aab425719c Move publish scripts in their own repo for easy reuse 2025-08-25 15:26:56 -04:00
Raymond Hill
30266e5107 Improve publish scripts 2025-08-25 15:10:36 -04:00
Raymond Hill
69fa0c2e09 [mv3] Fix regression in managing redirect rules
Regression cause by:
fad0af591f
2025-08-25 11:55:36 -04:00
Raymond Hill
f9ee5e2a64 Move to nodejs for publishing scripts 2025-08-24 17:26:04 -04:00
Raymond Hill
0e821284ab Update changelog 2025-08-23 13:05:43 -04:00
Raymond Hill
052c36aada [mv3] Fix placeholder references for regexSubstitution 2025-08-22 12:35:13 -04:00
Raymond Hill
cb62e38f50 [mv3] Improve built-in parser to convert filters to DNR rules
Ultimately and eventually, the built-in parser will be used to
convert filters to DNR rules at extension building time.
2025-08-22 08:14:52 -04:00
Raymond Hill
23d51b80df Make Firefox dev build auto-update 2025-08-21 11:08:23 -04:00
Raymond Hill
e8f6b7cd00 Update RELEASE.HEAD.md 2025-08-20 11:49:32 -04:00
Raymond Hill
c7e4ac48c3 New revision for dev build 2025-08-20 11:06:27 -04:00
Raymond Hill
9711039726 Update changelog 2025-08-20 11:06:04 -04:00
Raymond Hill
5d7e5ee3a0 Improve rendering with high-contrast theme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3385
2025-08-20 11:02:35 -04:00
Raymond Hill
bc4e829427 [mv3] Support custom filters using CSS pseudo-elements
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/448
2025-08-20 10:26:45 -04:00
Raymond Hill
807d1b6cdb Fix checkbox visual when using high contrast
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3385
2025-08-19 11:50:58 -04:00
Raymond Hill
da025fef26 Update README.md 2025-08-18 09:40:32 -04:00
Raymond Hill
69b2fdf396 Reverting change of toolbar icon 2025-08-18 09:38:49 -04:00
Raymond Hill
060442c636 Revert "Add Safari toolbar icon"
This reverts commit 3f73887e47.
2025-08-18 09:36:33 -04:00
Raymond Hill
4b33b7bd7a Make Firefox dev build auto-update 2025-08-18 09:15:31 -04:00
Raymond Hill
f5d3d776d5 Make Firefox dev build auto-update 2025-08-18 09:15:17 -04:00
Raymond Hill
4814992c54 Import translation work from https://crowdin.com/project/ublock 2025-08-17 10:27:46 -04:00
Raymond Hill
895033de02 New revision for dev build 2025-08-17 08:24:01 -04:00
Raymond Hill
72e6c89b74 Update changelog 2025-08-17 08:06:06 -04:00
Raymond Hill
9327e19233 Fix undue fetch from remote server at first install
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3761

Regression from:
69fce3aa6e
2025-08-17 08:01:51 -04:00
Raymond Hill
fad0af591f [mv3] Add support for regexSubstitution from uritransform
Related commit:
aaf35d9d71
2025-08-16 15:36:52 -04:00
Raymond Hill
b7b5d926f0 Update changelog 2025-08-16 15:35:27 -04:00
Raymond Hill
4194fdec4b [mv3] Minor code review 2025-08-16 15:34:06 -04:00
Raymond Hill
5957656a5b [mv3][safari] Workaround for urlFilter with path part ending with ^
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/434
2025-08-16 14:59:22 -04:00
Raymond Hill
4d2cfd1487 [mv3][safari] Do not inject CSS in embedded contexts
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/446

Relateed WebKit issue:
https://bugs.webkit.org/show_bug.cgi?id=262491
2025-08-16 12:51:17 -04:00
Raymond Hill
a3e2cd4396 New revision for dev build 2025-08-16 09:08:00 -04:00
Raymond Hill
60ab2ad59c Fix regression in static filtering parser
Related commit:
aaf35d9d71
2025-08-16 09:06:25 -04:00
Raymond Hill
e9273470c5 New revision for dev build 2025-08-15 16:03:29 -04:00
Raymond Hill
0ce643bfc5 Update changelog 2025-08-15 16:03:06 -04:00
Raymond Hill
aaf35d9d71 Improve compatibility of uritransform= with DNR syntax
The `uritransform=` option will now be converted to a proper DNR
rule when the following condition are fulfilled:

- The value of the `uritransform` option matches `//[replacement]/`,
i.e. the pattern to match is empty, and only the replacement part is
provided.

- The filter pattern is a regex.

Is such case, the DNR rule will be a `redirect` making use of the
`regexSubstitution` property.

In case the above conditions are not fulfilled, the filter will
be discarded as incompatible with DNR syntax (as was the case
before).

This is potentially a breaking change, in cases where a filter
assumed that the part to match was the start of the path part of
a URL.

A reminder that `uritransform` is an option which requires a
trusted source, otherwise it is rejected.
2025-08-15 15:55:33 -04:00
Raymond Hill
25d9964b1e [mv3] Improve internal error reporting in troubleshooting info 2025-08-15 08:39:35 -04:00
Raymond Hill
d54c4a7052 [mv3] Fix unremovable custom filters created using older versions
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/435
2025-08-14 14:56:26 -04:00
Raymond Hill
718b3cdb97 [mv3] Fix custom filter list being unscrollable
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/436
2025-08-14 08:58:57 -04:00
Raymond Hill
f3651bd866 Make Firefox dev build auto-update 2025-08-14 07:52:37 -04:00
Raymond Hill
07a1a51256 Make Firefox dev build auto-update 2025-08-14 07:52:23 -04:00
Raymond Hill
7d4e016297 [mv3] Use Safari-specific toolbar icon only for safari platform 2025-08-13 12:55:46 -04:00
Raymond Hill
5beca43c69 Merge branch 'uncw' 2025-08-13 12:46:50 -04:00
Raymond Hill
a6c9a9e9a4 GitHub Actions-related changes 2025-08-13 12:42:29 -04:00
Raymond Hill
9be4661294 New revision for dev build 2025-08-13 12:42:29 -04:00
Raymond Hill
17a363c2ff GitHub Actions-related changes 2025-08-13 12:42:29 -04:00
Raymond Hill
972ed1e520 Update changelog 2025-08-13 12:42:28 -04:00
Raymond Hill
22c07bd68b GitHub Actions-related changes 2025-08-13 10:57:32 -04:00
Raymond Hill
264acd5b10 New revision for dev build 2025-08-13 10:54:20 -04:00
Raymond Hill
5f14c816d0 GitHub Actions-related changes 2025-08-13 10:53:12 -04:00
Raymond Hill
e5fdfbb9f7 Update changelog 2025-08-13 10:48:17 -04:00
uncw
e6a8c87e0e Change Safari toolbar icon to an outlined version 2025-08-13 20:59:15 +08:00
uncw
3f73887e47 Add Safari toolbar icon 2025-08-12 23:46:22 +08:00
Raymond Hill
704f2dd734 [mv3] Code review implementation of custom "console"
Related commit:
28ea00fd11
2025-08-12 08:29:22 -04:00
Raymond Hill
18f9acd844 [mv3] Fix target URL when reporting from a strict-blocked page
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/29594#issuecomment-3176159770
2025-08-11 18:17:26 -04:00
Raymond Hill
28ea00fd11 [mv3] Share console error in troubleshooting information
This shoould help investigating issues, especially with mobile
devices, where the browser dev tools console is not available.
2025-08-11 17:53:59 -04:00
Raymond Hill
a1a5f3690f [mv3] Fix potentially unremovable custom filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/426
2025-08-10 12:44:42 -04:00
Raymond Hill
19a3de901c [mv3] Disable "strict blocking" by default in Safari
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/428#issuecomment-3172663563
2025-08-10 11:40:08 -04:00
Raymond Hill
07e9f805bb Allow usage of csp=/permissions= with resource type object
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3746
2025-08-10 09:22:17 -04:00
Raymond Hill
4d4826a029 Update README.md 2025-08-10 08:28:09 -04:00
Imre Eilertsen
b0ce6b6ac7 Attempted to add a GitHub Releases row to the "Install from" table (#3943)
* Attempted to add a GitHub Releases row to the "Install from" table

* Attempted to reflect the info.
2025-08-09 16:26:01 -04:00
Raymond Hill
faff035203 JSONPath: Add ability to select root node for appending/modifying
As discussed with filter list maintainers.

Examples of usage:

  $ => result is `null`
  $+={"modifyOrCreate": "..."}

These expressions were not working with previous version.
2025-08-09 13:56:02 -04:00
Raymond Hill
5629bf8a23 New revision for dev build 2025-08-09 11:14:36 -04:00
Raymond Hill
3ecad9a8c5 Update changelog 2025-08-09 11:13:51 -04:00
Raymond Hill
38ca6d41ff JSONPath: Add ability to substitute a pattern within a string value
As discussed with filter list maintainers.

Examples of JSON path expression to replace a pattern within a string
value:

  ..book.*.author=repl({"pattern": "Melville", "replacement": "Toto"})
  ..book.*.author=repl({"regex": "e", "replacement": "o"})
  ..book.*.author=repl({"regex": "e", "flags": "g", "replacement": "o"})

If the target value is not a string, no modification will occur.
2025-08-09 11:05:27 -04:00
Raymond Hill
cf70f2abbc [mv3] Add "EasyList -- Notifications"
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1mlj09l/
2025-08-09 08:59:28 -04:00
Raymond Hill
b9956a8d18 [mv3] Normalize request method names to lowercase in converter
Related issue:
https://github.com/uBlockOrigin/uBOL-home/discussions/153
2025-08-09 08:34:30 -04:00
Raymond Hill
c8da231453 [mv3] Make new spinner in "Filter lists" pane more noticeable 2025-08-08 12:30:09 -04:00
Raymond Hill
dfa47baddf [mv3] Remove spurious console message in content script
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/422
2025-08-08 11:50:35 -04:00
Raymond Hill
af6c247c0d [mv3] Import translation work from https://crowdin.com/project/ublock 2025-08-08 10:42:45 -04:00
Raymond Hill
93206e3241 [mv3] Propagate DNR API errors to "Filter lists" pane
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/317
2025-08-08 10:30:32 -04:00
Raymond Hill
5d0283d2ee Reduce/update npm dependencies 2025-08-08 09:03:52 -04:00
Raymond Hill
5dd0165359 [mv3] Fix link to privacy policy 2025-08-07 22:33:45 -04:00
Raymond Hill
e645fe7468 [mv3] Fix browser permissions scanning at launch
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/410
2025-08-07 12:44:27 -04:00
Raymond Hill
b6829698cc [mv3] Add spinner as visual feedback rulesets are being registered
Additionally, fixed a race condition where changes to rulesets would
not be ultimately registered when the changes were made during an
ongoing registration operation. This race condition would be
especially likely to occur on platforms where rulesets registration
take long.
2025-08-07 08:56:17 -04:00
Raymond Hill
31795fb6e6 [mv3] Remove obsolete code paths in picker tool 2025-08-06 13:28:30 -04:00
Raymond Hill
2d2de3a53b [mv3] Prevent scrolling taking over moving dialog in picker 2025-08-06 13:20:18 -04:00
Raymond Hill
1e0c64076f [mv3] Fix regression with highly generic cosmetic filters CSS files
Regression from:
56ba93700c

Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1mi8fd6/ublock_origin_lite_for_ios/n725s6l/
2025-08-05 13:25:14 -04:00
Raymond Hill
e390822930 Revert "Remove file moved to uBOL-home repo"
This reverts commit 028893fe86.
2025-08-04 15:20:47 -04:00
Raymond Hill
472e8b53cd [mv3] Set minimum browser version for Safari 2025-08-04 15:15:42 -04:00
Raymond Hill
028893fe86 Remove file moved to uBOL-home repo 2025-08-04 13:25:41 -04:00
Raymond Hill
bbfe7400ac [mv3] Support important option for removeparam option
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/29451#issuecomment-3150181993

When transposing a `removeparam` dilter to a DNR rule, the semantic of
the `important` option changes to "overrides ` allow` rules".
2025-08-04 10:09:39 -04:00
Raymond Hill
bb1d085c8c Import translation work from https://crowdin.com/project/ublock 2025-08-03 16:04:17 -04:00
Raymond Hill
32bf5ebde3 [mv3] Add support for procedural cosmetic filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/325
2025-08-03 15:50:22 -04:00
Raymond Hill
e713e133eb Remove "CERT.PL's Warning List" from stock lists
Far too large to be used as a default or stock list.
2025-08-03 08:06:44 -04:00
Raymond Hill
171ddd3e06 Fix incorrect test
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3736
2025-08-01 10:38:40 -04:00
Raymond Hill
14a9572c86 Remove "AdGuard Tracking Protection"from stock list
It's not needed and too likely to interfere negatively with uBO's
default lists. It was added a long, long time ago when EasyPrivacy
wasn't making use of uBO's own advanced syntax, which is no longer
an issue.
2025-07-31 16:37:10 -04:00
Raymond Hill
5911a8ea7a [mv3] Remove Safari-specific warning 2025-07-31 16:29:19 -04:00
Raymond Hill
02f90d58f4 [mv3] Use default file permissions on created temp file
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/397
2025-07-30 08:45:16 -04:00
Raymond Hill
4f273c4284 [mv3] Temporarily comment out empty list as error 2025-07-28 10:00:25 -04:00
Raymond Hill
581144eeb8 Import translation work from https://crowdin.com/project/ublock 2025-07-28 09:28:47 -04:00
Raymond Hill
a986b45433 [mv3] Fix gutter click on last line 2025-07-28 09:18:15 -04:00
Raymond Hill
7d9317bb17 Improve fingerprint2.js shim 2025-07-28 09:14:32 -04:00
Raymond Hill
abeb5d1567 Make Firefox dev build auto-update 2025-07-26 09:28:06 -04:00
Raymond Hill
beab99b54a Import translation work from https://crowdin.com/project/ublock 2025-07-25 10:44:17 -04:00
Raymond Hill
626b9c7f2d [mv3] Don't disable lists according to DNR rule count
Some lists may be composed of only static extended filters.
2025-07-23 14:04:58 -04:00
Raymond Hill
1476ae4262 Import translation work from https://crowdin.com/project/ublock 2025-07-23 11:37:18 -04:00
Raymond Hill
d88814bc12 Add filter list for experimental filters 2025-07-23 10:34:19 -04:00
Raymond Hill
348f151e36 Also report char segment size 2025-07-22 11:19:16 -04:00
Raymond Hill
a94b4e12a9 Update changelog 2025-07-20 10:58:02 -04:00
Raymond Hill
47cbb43a0e Make google-ima a valid injectable scriptlet
Related feedback:
https://www.reddit.com/r/uBlockOrigin/comments/1m4dbk1/ublock_being_detected_on_south_park_studios/
2025-07-20 10:53:56 -04:00
Raymond Hill
23155d81cd New revision for dev build 2025-07-20 10:30:43 -04:00
Raymond Hill
4baf61371c Update changelog 2025-07-20 10:30:24 -04:00
Raymond Hill
fef50e59f2 Improve abort-current-script scriptlet
Prevent webpages from tampering with `textContent`.

Borrow solution from:
c2d7378e4d/src/scriptlets/abort-current-inline-script.js (L98-L99)
2025-07-20 10:26:31 -04:00
Raymond Hill
fed7f4a0b8 [mv3] Merge all :style() filters with procedural filters 2025-07-19 13:15:43 -04:00
Raymond Hill
8ae7c1501b Import translation work from https://crowdin.com/project/ublock 2025-07-18 15:18:56 -04:00
Raymond Hill
d7686a815e [mv3] Remove hostname normalization regarding filtering mode
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/388#issuecomment-3075440422
2025-07-18 13:53:01 -04:00
Raymond Hill
e07e7bbd09 Fix potential exception in procedural operator :matches-attr
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3720
2025-07-18 10:23:11 -04:00
Raymond Hill
bb9e2c0fc7 Import translation work from https://crowdin.com/project/ublock 2025-07-17 10:30:22 -04:00
Raymond Hill
9f5893cd88 Make Firefox dev build auto-update 2025-07-17 08:07:44 -04:00
Raymond Hill
3e0462e619 New revision for dev build 2025-07-16 09:24:40 -04:00
Raymond Hill
3d155889e9 Update changelog 2025-07-16 09:24:17 -04:00
Raymond Hill
b7510eee61 Improve reporting of reason option in strict-blocked pages
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/1195#issuecomment-3072981070
2025-07-15 12:10:10 -04:00
Raymond Hill
1e955bebbe Make Firefox dev build auto-update 2025-07-15 11:28:42 -04:00
Raymond Hill
eb28988054 [mv3] Minor code review 2025-07-14 12:33:51 -04:00
Raymond Hill
2c91bfc872 [mv3] Make the slider continuous rather than granular 2025-07-14 12:12:36 -04:00
Raymond Hill
cc7e7894c7 [mv3] Fix compatibility layer code 2025-07-14 11:28:02 -04:00
Raymond Hill
e75e128a34 [mv3] Load procedural CSS code on demand 2025-07-13 17:16:04 -04:00
Raymond Hill
6bfa7245f3 [mv3] Normalize rulesets read from package
This ensures rulesets are properly rendered in DNR ruleset viewer
in Safari.
2025-07-12 11:16:29 -04:00
Raymond Hill
1a8238e03e [mv3] Adjust CSS for small display 2025-07-12 11:13:10 -04:00
Raymond Hill
255b143c80 Import translation work from https://crowdin.com/project/ublock 2025-07-11 08:49:58 -04:00
Raymond Hill
9a20412a4a Update changelog 2025-07-11 08:39:05 -04:00
Raymond Hill
5c57415d7a [mv3] Minor CSS change 2025-07-11 08:36:21 -04:00
Raymond Hill
d94107284b New revision for dev build 2025-07-11 08:35:53 -04:00
Raymond Hill
b0396029bd Improve prevent-innerHTML scriptlet
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/29148
2025-07-11 08:35:10 -04:00
Raymond Hill
2809b6cd18 Update changelog 2025-07-10 12:54:15 -04:00
Raymond Hill
689182f30b New version for stable release 2025-07-10 10:50:56 -04:00
Raymond Hill
f88ffcea04 [mv3] Slightly rework popup panel layout 2025-07-10 09:30:55 -04:00
Raymond Hill
887ae607dd [mv3] Fix usage of getMatchedRules() 2025-07-09 17:20:21 -04:00
Raymond Hill
d17afabffb Import translation work from https://crowdin.com/project/ublock 2025-07-09 11:17:18 -04:00
Raymond Hill
1bcb7520dd [mv3] Minor changes 2025-07-09 11:14:51 -04:00
Raymond Hill
6b7f929ec5 [mv3] Fix spurious filter conversion when pasting in editor 2025-07-08 09:47:37 -04:00
Raymond Hill
891b750de2 [mv3] Fine tune font size 2025-07-08 09:22:14 -04:00
Raymond Hill
d0e87d3521 [mv3] Mind long sentences in popup panel 2025-07-08 08:40:15 -04:00
Raymond Hill
28bc5905a8 Import translation work from https://crowdin.com/project/ublock 2025-07-08 07:55:56 -04:00
Raymond Hill
4dee9cd79c [mv3] Minor CSS change 2025-07-08 07:47:48 -04:00
Raymond Hill
1eec92419e [mv3] Mind admin-forbidden features in popup panel 2025-07-07 11:03:23 -04:00
Raymond Hill
a2d8429738 [mv3] Remove unused CSS declarations 2025-07-07 09:48:58 -04:00
Raymond Hill
a38aa48368 Import translation work from https://crowdin.com/project/ublock 2025-07-07 09:12:52 -04:00
Raymond Hill
f1551c56ea [mv3] Add ability to assign a shortcut to "Create a custom filter" 2025-07-06 19:06:19 -04:00
Raymond Hill
7dd6688ed3 [mv3] Minor CSS change 2025-07-06 18:47:38 -04:00
Raymond Hill
a393322f82 [mv3] Minor CSS change 2025-07-06 18:34:41 -04:00
Raymond Hill
ca222fa40e [mv3] Minor CSS change 2025-07-06 18:33:35 -04:00
Raymond Hill
624ad67da8 [mv3] Minor CSS change 2025-07-06 17:51:54 -04:00
Raymond Hill
3a4897db93 Import translation work from https://crowdin.com/project/ublock 2025-07-06 17:12:47 -04:00
Raymond Hill
ac159c5f08 Fix typo 2025-07-06 17:10:57 -04:00
Raymond Hill
45ab7feca6 Import translation work from https://crowdin.com/project/ublock 2025-07-06 17:04:28 -04:00
Raymond Hill
78305e11c9 Import translation work from https://crowdin.com/project/ublock 2025-07-06 16:59:43 -04:00
Raymond Hill
0b0294af4f [mv3] Add support for custom CSS-based cosmetic filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/325

This is a first version, with support only for custom filters which are
plain CSS selectors. Future versions will extend support to style-based
and procedural cosmetic filters.

Manually text-editing existing custom filters is currently not supported,
this will be added in a future version in the Develop pane. To remove
existing custom filters, the "Remove a custom filter" tool can be used.
2025-07-06 16:43:22 -04:00
Raymond Hill
cf13c4b4dc Make Firefox dev build auto-update 2025-07-05 11:06:00 -04:00
Raymond Hill
7c237e8217 New revision for dev build 2025-07-05 11:01:25 -04:00
Raymond Hill
b398bd8487 [regression] Normalize header names to lowercase
Related commit:
https://github.com/gorhill/uBlock/commit/408b538e75
2025-07-05 10:59:22 -04:00
Raymond Hill
76b72c9e65 Import translation work from https://crowdin.com/project/ublock 2025-07-03 09:46:52 -04:00
Raymond Hill
eec2045645 [mv3] Fix calculation of priority value when converting redirect filters 2025-07-03 09:22:09 -04:00
Raymond Hill
b5fae23329 Make Firefox dev build auto-update 2025-06-28 06:41:18 -04:00
Raymond Hill
f23518173e New revision for dev build 2025-06-28 06:21:31 -04:00
Raymond Hill
a25564559c Update changelog 2025-06-28 06:21:11 -04:00
Raymond Hill
e27bb85222 Import translation work from https://crowdin.com/project/ublock 2025-06-28 06:20:23 -04:00
Raymond Hill
66b68b4442 Reset important option flag at header evaluation time 2025-06-28 06:07:09 -04:00
Raymond Hill
9c08e902bd [mv3] Fix regression in syntax highlighting of dark theme 2025-06-24 20:44:14 -04:00
Raymond Hill
9bcfc8ff1c [mv3] Add access to troubleshooting info in About pane 2025-06-24 17:19:49 -04:00
Raymond Hill
27936f476e [mv3] Fix newline assistant in mode editor 2025-06-24 11:45:44 -04:00
Raymond Hill
3a473f8c48 Import translation work from https://crowdin.com/project/ublock 2025-06-24 10:56:43 -04:00
Raymond Hill
d9aba4acca [mv3] Use custom tokens for YAML document boundaries 2025-06-24 10:41:39 -04:00
Raymond Hill
8bcf533fc0 [mv3] Code review of uBO filter converter
Related commit:
e8fb0e1cc9
2025-06-22 17:06:35 -04:00
Raymond Hill
56ecd04816 Make Firefox dev build auto-update 2025-06-22 13:56:16 -04:00
Raymond Hill
e33bfc1f01 [mv3] Add support to exclude lists from specific platforms
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/358#issuecomment-2993687480
2025-06-22 12:07:06 -04:00
Raymond Hill
219c07609f New revision for dev build 2025-06-22 11:39:06 -04:00
Raymond Hill
0b6eea542f Update chengelog 2025-06-22 11:38:47 -04:00
Raymond Hill
253ef7ade3 Complete support for reporing strict-block messages
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1195
2025-06-22 11:28:54 -04:00
Raymond Hill
1b00490a4d Import translation work from https://crowdin.com/project/ublock 2025-06-22 11:28:39 -04:00
Raymond Hill
001bd5841f Import translation work from https://crowdin.com/project/ublock 2025-06-22 11:27:19 -04:00
Raymond Hill
e8fb0e1cc9 [mv3] Add ability to convert pasted filters to DNR rules
WHen a uBO static network filter is pasted into the "Custom DNR
rules" editor, it will be converted into a DNR rule whenever
possible. At the moment, no feedback is provided when the conversion
fails -- this will be improved in the future.
2025-06-22 09:44:32 -04:00
Raymond Hill
527b4a201f Fix broken reverse lookup of filter lists
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3684

Regression from:
8b696a691a
2025-06-22 08:05:34 -04:00
Raymond Hill
8d24b7130c Make Firefox dev build auto-update 2025-06-21 07:16:16 -04:00
Raymond Hill
69a2959028 New revision for dev build 2025-06-21 06:50:50 -04:00
Raymond Hill
d66d592ebb Update changelog 2025-06-21 06:50:30 -04:00
Raymond Hill
6e466cf945 Add [trusted-]edit-inbound-object scriptlets
As discussed with filter list maintainers.

@scriptlet edit-inbound-object.js
  @description
  Prune properties from an object passed as argument to a specific method.
  Properties can only be removed.
  @param propChain
  Property chain of the method to trap.
  @param argPos
  0-based position of the argument. Use negative integer for position relative
  to the end.
  @param jsonq
  A uBO-flavored JSONPath query.

@scriptlet trusted-edit-inbound-object.js
  @description
  Edit properties of an object passed as argument to a specific method.
  Properties can be assigned new values.
  @param propChain
  Property chain of the method to trap.
  @param argPos
  0-based position of the argument. Use negative integer for position relative
  to the end.
  @param jsonq
  A uBO-flavored JSONPath query.
2025-06-21 06:47:03 -04:00
Raymond Hill
754f61717a Import translation work from https://crowdin.com/project/ublock 2025-06-19 17:41:40 -04:00
Raymond Hill
d853f036c7 Import translation work from https://crowdin.com/project/ublock 2025-06-19 17:35:58 -04:00
Raymond Hill
1f5b4ccc53 Import translation work from https://crowdin.com/project/ublock 2025-06-18 12:40:48 -04:00
Raymond Hill
b73034523f Import translation work from https://crowdin.com/project/ublock 2025-06-17 12:12:14 -04:00
Raymond Hill
c1bd62ae24 [mv3] Start to implement better DNR rule assistant 2025-06-17 12:09:33 -04:00
Raymond Hill
5327502a32 [mv3] Fix content update in wrong editor mode 2025-06-16 18:17:50 -04:00
Raymond Hill
2f6fe675da Make Firefox dev build auto-update 2025-06-16 15:36:39 -04:00
Raymond Hill
7b3589b0d3 New revision for dev build 2025-06-16 15:23:34 -04:00
Raymond Hill
35750688bc Update changelog 2025-06-16 15:23:12 -04:00
Raymond Hill
0a8ea58bb7 Improve remove-cookie scriptlet
Related discussion:
afc6ff52ff (commitcomment-160172503)
2025-06-16 15:19:01 -04:00
Raymond Hill
33b92f91cb Import translation work from https://crowdin.com/project/ublock 2025-06-15 19:07:07 -04:00
Raymond Hill
f106a81052 Make Firefox dev build auto-update 2025-06-15 14:11:44 -04:00
Raymond Hill
f87d2955d5 New revision for dev build 2025-06-15 13:59:19 -04:00
Raymond Hill
59680e61f4 Update changelog 2025-06-15 13:58:48 -04:00
Raymond Hill
87e0434c90 Add json-edit-related scriptlets
edit-outbound-object-.js
 @description
 Prune properties from an object returned by a specific method.
 Properties can only be removed.
 @param jsonq
 A uBO-flavored JSONPath query.

trusted-edit-outbound-object.js
 @description
 Edit properties from an object returned by a specific method.
 Properties can be assigned new values.
 @param jsonq
 A uBO-flavored JSONPath query.

json-edit-xhr-request.js
 @description
 Edit the object sent as the body in a XHR instance.
 Properties can only be removed.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when xhr.open() is
 called.

trusted-json-edit-xhr-request.js
 @description
 Edit the object sent as the body in a XHR instance.
 Properties can be assigned new values.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when xhr.open() is
 called.

json-edit-fetch-request.js
 @description
 Edit the request body sent through the fetch API.
 Properties can only be removed.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when fetch() is
 called.

trusted-json-edit-fetch-request.js
 @description
 Edit the request body sent through the fetch API.
 Properties can be assigned new values.
 @param jsonq
 A uBO-flavored JSONPath query.
 @param [propsToMatch, value]
 An optional vararg detailing the arguments to match when fetch() is
 called.
2025-06-15 13:55:09 -04:00
Raymond Hill
3a2bb62519 Improve trusted-set-cookie scriptlet
Ability to use regex value for `, domain, value` vararg.

Related discussion:
afc6ff52ff (commitcomment-160035082)
2025-06-14 09:26:27 -04:00
Raymond Hill
28d2326808 [mv3] Better support for toggling line comments 2025-06-13 19:08:11 -04:00
Raymond Hill
786cf0c802 License stuff 2025-06-13 18:22:26 -04:00
Raymond Hill
9ee42b26c1 [mv3] Support toggling line comment using official CodeMirror command 2025-06-13 17:54:20 -04:00
Raymond Hill
88d090b20a Import translation work from https://crowdin.com/project/ublock 2025-06-13 12:53:44 -04:00
Raymond Hill
b50341089d [mv3] Expand "Develop" pane
Move "No filtering" section in "Settings" to "Develop" pane. It is
now possible to view/edit the list of hostnames for any of the
filtering mode. This takes care of these issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/270
- https://github.com/uBlockOrigin/uBOL-home/issues/297

Add ability to see all rulesets (read-only), to assist in investigating
filtering issues.
2025-06-13 12:46:05 -04:00
Raymond Hill
a12ed895dd Import translation work from https://crowdin.com/project/ublock 2025-06-13 12:37:25 -04:00
Raymond Hill
43a883396d [mv3] Fix regression in handling important option
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/368
2025-06-13 11:11:27 -04:00
Raymond Hill
ff8c527b99 [mv3] Revert trying to transpose requestDomains
This breaks uBOL -- unclear error message but disabling rulesets
eventually unbreak the extension, thus possibly a case of going
over the rule limit as a result of transposition.

The `requestDomains` issue will have to wait for the official
Safari fix.
2025-06-12 09:32:59 -04:00
Raymond Hill
7060be775c Import translation work from https://crowdin.com/project/ublock 2025-06-11 15:23:14 -04:00
Raymond Hill
e43de8c185 [mv3] Firefox doesn't yet support condition.responseHeaders 2025-06-11 09:40:52 -04:00
Raymond Hill
950f7920b3 [mv3] Update build script 2025-06-10 15:24:53 -04:00
Raymond Hill
9f3282d74f [mv3] Safari: expand rsach requestDomains entries into own rule
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/358
2025-06-10 15:18:47 -04:00
Raymond Hill
76d8b97869 [mv3] Collect/apply highly generic cosmetic exceptions across lists
Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/365
- https://github.com/uBlockOrigin/uAssets/issues/28770
- https://github.com/uBlockOrigin/uAssets/issues/28129
2025-06-10 15:03:14 -04:00
Raymond Hill
deb3247ea2 Update README.md 2025-06-10 09:37:01 -04:00
u-RraaLL
4803e6f69b Edge status update (#3940) 2025-06-07 06:39:46 -04:00
Raymond Hill
508138764d [mv3] Properly refresh "Developer mode" checkbox on changes 2025-06-06 08:45:19 -04:00
Raymond Hill
a960140c30 Import translation work from https://crowdin.com/project/ublock 2025-06-03 16:56:10 -04:00
Raymond Hill
b81076224c Minor 2025-06-03 16:45:16 -04:00
Imre Eilertsen
fd049c9e1f Added 4 language codes for Firefox. (#3939)
* Added 4 language codes for Firefox.

* Added 4 language codes for Firefox.

* Added Kabyle to Liste AR as well.

As opposed to just AdGuard Français.

* Added Kabyle to Liste AR as well.
2025-06-03 15:40:06 -04:00
Raymond Hill
26381a557a Minor 2025-06-03 15:38:53 -04:00
Raymond Hill
e96e380ad1 Use CodeMirror's MergeView to highlight differences between before/after
To make it easier to analyze the effect of a jsonpath.
2025-06-03 10:21:53 -04:00
Raymond Hill
b2c4242138 [mv3] Fix error reporting in registerInjectables() 2025-06-03 07:39:38 -04:00
Raymond Hill
1a9c63254c [mv3] Report custom DNR rule count in troubleshooting information
As discussed internally.

The custom DNR rule count will be reported only when it's not zero,
and the count is only for effective DNR rules, i.e. it will not be
reported if "Developer mode" is not enabled.
2025-06-03 06:05:56 -04:00
Raymond Hill
eb46f42419 Make Firefox dev build auto-update 2025-06-01 14:46:02 -04:00
Raymond Hill
0983e62437 [mv3] Fine tuning editor code 2025-06-01 14:34:57 -04:00
Raymond Hill
0dac2206c3 Import translation work from https://crowdin.com/project/ublock 2025-06-01 13:52:48 -04:00
Raymond Hill
5de5d8c4a7 New revision for dev build 2025-06-01 13:50:35 -04:00
Raymond Hill
30a271a7ff Update changelog 2025-06-01 13:50:00 -04:00
Raymond Hill
4affe343dd Force cache bypass reload when no-scripting switch is toggled
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3652
2025-06-01 13:48:23 -04:00
Raymond Hill
fad39c6ce5 [mv3] Add support for code-folding and use custom stream parser 2025-06-01 13:29:46 -04:00
Raymond Hill
837451c17a Import translation work from https://crowdin.com/project/ublock 2025-05-31 11:32:54 -04:00
Raymond Hill
670e8dc367 [mv3] Add smart spacebar/return auto completion 2025-05-31 09:42:53 -04:00
Raymond Hill
e1f2c6f88d [mv3] Code review 2025-05-30 18:15:25 -04:00
Raymond Hill
ffb3fef073 [mv3] Add smart backspace in DNR rules editor 2025-05-30 11:23:45 -04:00
Raymond Hill
aa1c813763 Update changelog 2025-05-30 11:20:08 -04:00
Raymond Hill
55d45a6fb1 Code review: safer to split on official line separator
Will still join lines using the detected line separator.
2025-05-30 11:19:12 -04:00
Raymond Hill
008fc488c1 Make Firefox dev build auto-update 2025-05-30 11:16:22 -04:00
Raymond Hill
bc32794a47 New revision for dev build 2025-05-30 11:10:39 -04:00
Raymond Hill
44f04e3d3b Update changelog 2025-05-30 11:10:19 -04:00
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
fbb96c7234 Import translation work from https://crowdin.com/project/ublock 2025-05-30 08:06:25 -04:00
Raymond Hill
3d5d8e8220 Remove obsolete "shortcut" token from link rel="icon"
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3634
2025-05-30 06:56:10 -04:00
Raymond Hill
16a42566ff Update jsonpath tool to show transformation 2025-05-29 18:09:19 -04:00
Raymond Hill
b69f809d91 Need this to distinguish FilterMessage instances 2025-05-29 15:19:03 -04:00
Raymond Hill
c142d9af67 [mv3] Fix dnr-parser for Safari compatibility 2025-05-29 14:33:30 -04:00
Raymond Hill
6221cecf57 [mv3] Fix Safari's compatiblity layer 2025-05-29 14:18:46 -04:00
Raymond Hill
03f06ab6a9 Make Firefox dev build auto-update 2025-05-29 13:31:30 -04:00
Raymond Hill
1824a2bccf New revision for dev build 2025-05-29 13:26:57 -04:00
Raymond Hill
90547cdbf3 Update changelog 2025-05-29 13:26:13 -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
eb3f5a44a9 Import translation work from https://crowdin.com/project/ublock 2025-05-29 10:13:32 -04:00
Raymond Hill
6647ae55a9 Import translation work from https://crowdin.com/project/ublock 2025-05-29 10:10:27 -04:00
Raymond Hill
f2c0633216 [mv3] Add missing translatable string 2025-05-29 10:09:02 -04:00
Raymond Hill
cac62c6dc0 Import translation work from https://crowdin.com/project/ublock 2025-05-29 10:05:13 -04:00
Raymond Hill
9339a75952 [mv3] Add support for custom DNR rules
This feature is hidden behind the "Developer mode" setting in
the dashboard. When "Developer mode" is enabled, a tab named
"Develop" will become available in the dashboard. This tab is
meant to contain tools for technical users.

At the moment, the "Develop" pane allows to create custom DNR
rules through a (CodeMirror-based) editor.

For the sake of convenience, the DNR rule must be entered in
YAML-like format. The format is not really full compliant YAML,
just YAML-like, and very strict in order to ensure the parser
stays simple enough.

Lines starting with `#` are comments and will be ignored by the
parser.

Any line which do not match the parser's expectation will be
marked as invalid, and the whole DNR rule containing such invalid
lines will be discarded.

There must not be empty lines inside a rule definition.

Each DNR rule must be separated with a `---` line, which is
known as a YAML document separator.

String values must not be quoted, otherwise the quotes will be
considered part of the value. There is one exception: `''` will
be parsed as "an empty string".

The editor will attempt to auto-complete known DNR keywords. That
feature will improve over time.

Though the parser will identify some errors, not all invalid DNR
rules are currently identified by the parser, and these will be
reported when the rules are registered through the DNR API. Better
identifying invalid DNR rules at edit time will improve over time.

The editor will report `regexFilter` values which are not
supported by the DNR engine on the current platform.

The editor reacts to instances of `regexFilter: ...` to report
whether a regex value is supported. This means you can test for
a regex value by using `# regexFilter: ...` so that you do not
have to create an actual DNR rules just for the sake of testing.

Custom DNR rules can be exported into a JSON file (a format
known by the DNR API as a "static ruleset").

JSON-based ruleset can be imported, the content will be converted
to YAML-like syntax.

The editor will attempt to convert to YAML pasted content which
can be JSON-parsed. It's possible to paste partially or wholly
JSON-based rulesets.

When disabling "Developer mode", all custom DNR rules will be
unregistered from the DNR API. The DNR rules content will be left
intact in such case. Existing DNR rules will be registered into
the DNR API when re-enabling "Developer mode".

Administrators can prevent "Developer mode" from being enabled
by adding `develop` token to `disabledFeatures` setting.

Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/323

The main motivation is to give list maintainers a tool to assist
with resolving filter issues. Custom DNR rules can assist in
crafting and validating filters meant to work with uBOL.

A secondary motivation is to provide technical users the ability
to further customize their content blocker.

More conveniences will be added over time, this is a first version.
2025-05-29 09:06:02 -04:00
Raymond Hill
4e2585545b [mv3] This is not needed for uBOL 2025-05-25 19:10:18 -04:00
Raymond Hill
686eefd6b0 [mv3] Remove CERT.PL's Warning List 2025-05-25 18:55:39 -04:00
Raymond Hill
e077d36c6e Import translation work from https://crowdin.com/project/ublock 2025-05-25 18:17:20 -04:00
Raymond Hill
93d8e639ce [mv3] Code review last commit
Related commit:
2076d42239
2025-05-23 09:49:07 -04:00
Raymond Hill
2076d42239 [mv3] Add to troubleshooting info whether webext API calls failed
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/issues/327#issuecomment-2904240310
2025-05-23 09:36:21 -04:00
Raymond Hill
13886f728d [mv3] Fix tag 2025-05-23 08:28:04 -04:00
Raymond Hill
ecc64ae125 [mv3] Give admins ability to prevent usage of zapper
Related issue:
https://github.com/uBlockOrigin/uBOL-home/pull/341
2025-05-22 16:53:11 -04:00
Raymond Hill
69d584a283 Make Firefox dev build auto-update 2025-05-22 15:06:34 -04:00
Raymond Hill
ca4430c0ba New revision for dev build 2025-05-22 14:52:59 -04:00
Raymond Hill
c5d1eb109e Update changelog 2025-05-22 14:51:19 -04:00
Raymond Hill
4eae23065e [mv3] Allow body element to vertically scroll
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/352
2025-05-22 13:19:02 -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
Raymond Hill
c44f043ed3 Counter CodeMirror's pointer-events: none on scrollbars
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3645
2025-05-22 08:39:29 -04:00
Raymond Hill
eee279be01 [mv3] Add codemirror-ubol as submodule 2025-05-21 08:01:21 -04:00
Raymond Hill
ee7af6f005 Make Firefox dev build auto-update 2025-05-20 12:26:37 -04:00
Raymond Hill
943a63d1e6 Update changelog 2025-05-20 12:17:08 -04:00
Raymond Hill
1b0f2ac14c New revision for dev build 2025-05-20 12:15:48 -04:00
Raymond Hill
0130fdf4a1 Fix element picker issue with explicit dark theme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3624
2025-05-20 12:14:33 -04:00
Raymond Hill
cdd46c5c7b Minor change 2025-05-20 11:59:32 -04:00
Raymond Hill
4888ec6d35 Add tool to evaluate uBO-flavored JSONpath expressions
Requires a local server in root of repo:
python3 -m http.server

Then load the following URL in the browser:
http://localhost:8000/tools/jsonpath-tool.html
2025-05-20 10:14:35 -04:00
Raymond Hill
7ee99e6875 [mv3] Add fallback fetch in case main one fails 2025-05-20 07:34:05 -04:00
Raymond Hill
a59daf5978 [mv3] Forgot to commit new CSS file 2025-05-19 19:02:41 -04:00
Raymond Hill
13b7f381b2 [mv3] Safari: warn to not open filter issues for stable Safari
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/28408

Stable Safari is known to not block certain network requests due to
the current state of the DNR engine in Safari. The warning is to
ensure volunteers are not burdened by issues originating from the
browser.

Eventually Safari's DNR implementation will catch up with the
specification, at which time the warning will be removed.
2025-05-19 16:55:27 -04:00
Raymond Hill
05f7a7b8c3 [mv3] Minor code review 2025-05-19 10:41:15 -04:00
Raymond Hill
be8b6238d3 [mv3] Add browser info in troubleshooting data 2025-05-19 10:39:31 -04:00
Raymond Hill
ed10973717 [mv3] Add "AdGuard -- Mobile Ads"
Maybe related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/351

The list is enabled by default on mobile devices.
2025-05-18 09:55:20 -04:00
Raymond Hill
4c6f8222af Import translation work from https://crowdin.com/project/ublock 2025-05-18 09:00:28 -04:00
Raymond Hill
4aa16e9409 [mv3] Add missing image 2025-05-18 08:57:48 -04:00
Raymond Hill
ce4a4fcd75 [mv3] Minor CSS change 2025-05-18 08:50:54 -04:00
Raymond Hill
6d2123b196 Update README.md 2025-05-17 08:10:49 -04:00
Raymond Hill
b2c9be14cf [mv3] Code review: matches is never empty 2025-05-16 10:30:20 -04:00
Raymond Hill
aa696d0669 Ignore lib directory when linting 2025-05-16 08:52:36 -04:00
Raymond Hill
4c99471a25 [mv3] Avoid passing empty arrays to scripting.registerContentScripts
Maybe related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/344
2025-05-15 11:20:52 -04:00
Raymond Hill
a551d1cc01 [mv3] Editor font size 2025-05-15 07:26:40 -04:00
Raymond Hill
907e33ef59 Update README.md 2025-05-14 17:33:10 -04:00
Raymond Hill
2322038e8f Update README.md 2025-05-14 17:32:20 -04:00
Raymond Hill
ae461f47d3 Update README.md 2025-05-14 17:31:49 -04:00
Raymond Hill
9491fcdb2e Update README.md 2025-05-14 17:31:26 -04:00
Raymond Hill
fd5da3fcd2 [mv3] Use CodeMirror editor for list of no-filtering websites
This is a first step to integrate CodeMirror6 into the project.

As a side effect, this should take care of:
https://github.com/uBlockOrigin/uBOL-home/issues/297

Though most likely the list of no-filtering websites will probably
move to its own pane as in uBO in some future.
2025-05-14 17:20:55 -04:00
Raymond Hill
d12e7817d2 [mv3] Add ability to reset zapper selection on mobile devices 2025-05-14 10:02:37 -04:00
Imre Eilertsen
7e239db9a8 Added AdGuard's 2 newest !#if tokens. (#3938) 2025-05-13 12:38:33 -04:00
Raymond Hill
ed3a0b8ab9 [mv3] Remove hard-coded line height 2025-05-13 10:52:42 -04:00
Raymond Hill
71244bc37b New revision for stable release 2025-05-13 09:18:38 -04:00
Raymond Hill
3e39e5beab [mv3] CSS fine tuning 2025-05-13 08:00:39 -04:00
Raymond Hill
84db4585f5 [mv3] Fix popup width for Firefox 2025-05-12 19:31:40 -04:00
Raymond Hill
9763a79c01 [mv3] Minor CSS adjustments 2025-05-12 18:00:14 -04:00
Raymond Hill
569dfea3cb [mv3] Have the slider button size dictates all other dimensions 2025-05-12 16:55:23 -04:00
Raymond Hill
82c6d5e8ff Make Firefox dev build auto-update 2025-05-12 08:40:38 -04:00
Raymond Hill
7c5c9beda6 Update changelog 2025-05-12 07:51:41 -04:00
Raymond Hill
c02c571b3e New revision for release candidate 2025-05-12 07:50:22 -04:00
Raymond Hill
8cd6212867 Use custom blank page for embedded iframe in dashboard
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631#issuecomment-2870424577
2025-05-12 07:48:42 -04:00
Raymond Hill
e3a3026cac Use custom blank page for embedded iframe in dashboard
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631#issuecomment-2870424577
2025-05-12 07:46:33 -04:00
Raymond Hill
a075442e1c Import translation work from https://crowdin.com/project/ublock 2025-05-11 10:37:24 -04:00
Raymond Hill
2e7d0a07e7 [mv3] Add TODO comment 2025-05-11 10:36:21 -04:00
Raymond Hill
3ff54b7f2a [mv3] Just force a reload when URL doesn't change
Most of the time the URL doesn't change and just forcing a reload
of the page is sufficient. When a document is strict-blocked, the
URL must be updated however.
2025-05-11 10:34:49 -04:00
Raymond Hill
63eeaae5e9 Make Firefox dev build auto-update 2025-05-11 10:31:14 -04:00
Raymond Hill
3508176fcc New revision for release candidate 2025-05-11 10:23:31 -04:00
Raymond Hill
60735f88f9 New revision for release candidate 2025-05-11 10:22:56 -04:00
Raymond Hill
5c029b3532 Use color-scheme meta tag as suggested
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631
2025-05-11 10:17:17 -04:00
Raymond Hill
3650117b4f Fix background color of navigation bar
Related commit:
b604524c2f
2025-05-11 09:41:34 -04:00
Raymond Hill
b604524c2f Explicitly set background color according to state of prefers-color-scheme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3631
2025-05-11 09:30:34 -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
a83be19987 [mv3] Remove equivalence between chromium and safari 2025-05-10 12:32:09 -04:00
Raymond Hill
8a7f1589ec [mv3] Expose setExtensionActionOptions in Safari compatibility layer
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/327#issuecomment-2864897864
2025-05-10 12:21:51 -04:00
Raymond Hill
1c98faf46c [mv3] Safari works; use 3-component version for uBOL
uBOL doesn't pass validation when using 4-component versioning,
so falling back to 3-component versioning for all platforms to
avoid special case.
2025-05-08 16:53:07 -04:00
Raymond Hill
df9cd6c9a2 Import translation work from https://crowdin.com/project/ublock 2025-05-08 10:09:03 -04:00
Raymond Hill
cc2760f4d6 [mv3] New approach to toggle toolbar icon not requiring extra permissions
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/198#issuecomment-2855135571

As a result, the permissions `tabs` and `webNavigation` have been removed.
2025-05-07 08:53:59 -04:00
Raymond Hill
0ee6e3044d [mv3] No need to retry sending messages with top-level listener 2025-05-07 07:47:28 -04:00
Raymond Hill
f40b989dc8 Fix makefile 2025-05-05 08:37:26 -04:00
Raymond Hill
58f5c53fbb [mv3] Fix strict-block exceptions caused duplicate rule ids
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/304
2025-05-05 08:04:21 -04:00
Raymond Hill
3cd04c3806 Fix list name; also change for uBOL 2025-05-04 06:42:42 -04:00
Raymond Hill
47f1a19e9e Change stock UKR list to AdGuard-maintained list 2025-05-04 06:37:31 -04:00
Raymond Hill
e384f2b612 [mv3] Build script changes 2025-05-02 14:45:06 -04:00
Raymond Hill
48146f8351 [mv3] Address various issues for Safari build 2025-05-02 14:33:33 -04:00
Raymond Hill
6a088a7477 Make Firefox dev build auto-update 2025-05-02 09:22:57 -04:00
Raymond Hill
a4ba51a790 Import translation work from https://crowdin.com/project/ublock 2025-05-02 09:05:53 -04:00
Raymond Hill
e94ba8afad Update changelog 2025-05-02 09:04:30 -04:00
Raymond Hill
03bea3aafc New revision for release candidate 2025-05-02 09:02:55 -04:00
Raymond Hill
3f59f94b60 Bring zapper look in line with uBO Lite's zapper 2025-05-02 08:56:30 -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
457dd7acdb [mv3] Remove "OpenPhish Domain Blocklist" as per "Terms of Use"
Excerpt from <https://openphish.com/terms.html>:

> Except as expressly permitted by OpenPhish in writing, you agree not
> to license, sell, rent, lease, transfer, assign, distribute, display,
> disclose, create derivative works or otherwise make all or any portion
> of the information obtained through the Services available to any
> third party.
2025-04-30 10:00:35 -04:00
Raymond Hill
1d1490523d [mv3] Fix incorrect DNR priority for redirect/important filters 2025-04-30 08:50:45 -04:00
Raymond Hill
9ac12647d1 Make Firefox dev build auto-update 2025-04-28 17:57:06 -04:00
Raymond Hill
2c4819ac74 New revision for dev build 2025-04-28 17:46:11 -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
526af62864 [mv3] Fix overzealous strict-blocking in Safari 2025-04-28 10:56:43 -04:00
Raymond Hill
e048790036 Make Firefox dev build auto-update 2025-04-27 11:06:27 -04:00
Raymond Hill
c2eee87029 Import translation work from https://crowdin.com/project/ublock 2025-04-27 10:55:12 -04:00
Raymond Hill
daa0025157 New revision for dev build 2025-04-27 10:52:18 -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
b4aea4ab27 [mv3] Avoid pointless messaging when no changes at beforeunload 2025-04-27 09:02:29 -04:00
Raymond Hill
6c84ae7aba [mv3] Support disabling all lists
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/943
2025-04-27 08:22:04 -04:00
Raymond Hill
5e64ace64d [mv3] Code review of safari-specific code 2025-04-26 10:11:33 -04:00
Raymond Hill
ef9709fb07 [mv3] Safari does not support resource type object
Need to filter out DNR rules with `object`, otherwise this causes
a failure when adding the rules dynamically.
2025-04-25 19:26:16 -04:00
Raymond Hill
a56e13156f [mv3] Add more managed policies
"showBlockedCount": Boolean, to enable/disable the badge count on the
toolbar icon.

"strictBlockMode": Boolean. to enable/disable strict-blocking.

Related issues/discussion:
- https://github.com/uBlockOrigin/uBOL-home/discussions/35#discussioncomment-12567804
- https://github.com/uBlockOrigin/uBOL-home/issues/334
2025-04-25 11:25:50 -04:00
Raymond Hill
e5efe64d20 [mv3] Code review 2025-04-25 08:06:19 -04:00
Raymond Hill
e029060889 [mv3] Use safer env variable names
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/issues/327#issuecomment-2823012715
2025-04-25 07:47:40 -04:00
anewuser
84ad64daea Update README.md (#3937) 2025-04-25 07:30:17 -04:00
Raymond Hill
ed66a8d157 [mv3] Code review 2025-04-24 19:47:29 -04:00
Raymond Hill
203b2235aa [mv3] Reflect no-filtering mode on the toolbar icon
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/198
2025-04-24 19:42:59 -04:00
Raymond Hill
83d62b9aca Make Firefox dev build auto-update 2025-04-24 13:44:06 -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
bd6263078f New revision for dev build 2025-04-23 09:40:26 -04:00
Raymond Hill
79a77f915a Update changelog 2025-04-23 09:40:00 -04:00
Raymond Hill
0243a141a7 Ignore start_page transition for popup-blocking purpose
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2227
2025-04-23 09:34:00 -04:00
Raymond Hill
b4eae1ef0b Make Firefox dev build auto-update 2025-04-22 09:56:04 -04:00
Raymond Hill
c86beb3a37 Update changelog 2025-04-22 09:40:21 -04:00
Raymond Hill
89ba371fbe New revision for dev build 2025-04-22 09:38:52 -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
9c523f0325 Make Firefox dev build auto-update 2025-04-21 15:51:02 -04:00
Raymond Hill
6cc63d825e New revision for dev build 2025-04-21 15:46:06 -04:00
Raymond Hill
2ee90bf22f Update changelog 2025-04-21 15:45:55 -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
b5642ba602 [mv3] Minor 2025-04-21 13:21:08 -04:00
Raymond Hill
d3f39c97d1 [mv3-safari] Fix broken zapper due to latest changes
Related commit:
22e848c9c2
2025-04-21 12:58:44 -04:00
Raymond Hill
d17da2b081 Import translation work from https://crowdin.com/project/ublock 2025-04-21 09:42:58 -04:00
Raymond Hill
1d53441456 [mv3] Simplify sendMessage
onMessage() is now a listener installed synchrnously when uBOL
executes, so no longer need to deal with failure to send messages.

Related commit:
ab458b492a
2025-04-21 08:13:16 -04:00
Raymond Hill
22e848c9c2 [mv3] Fix zapper
Regression from:
b5651417aa
2025-04-21 08:11:22 -04:00
Raymond Hill
34d6abca6d Revert "[mv3] Programmatically inject content scripts on version change"
This reverts commit d0e32a5f47.
2025-04-20 16:58:16 -04:00
Raymond Hill
d0e32a5f47 [mv3] Programmatically inject content scripts on version change
Related issue:
https://github.com/w3c/webextensions/issues/617
2025-04-20 16:44:08 -04:00
Raymond Hill
782fff35ea [mv3] Split code path for wakeup versus launch status
Additionally, leave more regex rooms for non-strictblock rules.
2025-04-20 12:17:57 -04:00
Raymond Hill
2bd09e6f84 [mv3] Code review of conversion to DNR ruleset
- Ensure no duplicates in domain collection fields
- Sort rules according to the number of entries in their
  domain collections
2025-04-20 12:14:29 -04:00
Raymond Hill
de7a406920 [mv3] Minor code review 2025-04-19 17:52:28 -04:00
Raymond Hill
39b505a52e [mv3] Fix safari build script 2025-04-19 14:39:00 -04:00
Raymond Hill
39913a8212 Fix Edge build script 2025-04-19 14:17:46 -04:00
Raymond Hill
8a14a8dc6b Import translation work from https://crowdin.com/project/ublock 2025-04-19 14:02:32 -04:00
Raymond Hill
fbe1ba018e [mv3] Remove unused file 2025-04-19 13:34:34 -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
8016e7733a [mv3] Move ruleset details into external config file 2025-04-19 08:37:29 -04:00
Raymond Hill
63ea23f334 [mv3] Minor change to build script 2025-04-18 07:57:21 -04:00
Raymond Hill
fd3a8720e9 Minor test to avoid code path 2025-04-16 16:14:58 -04:00
Raymond Hill
c299d39117 Import translation work from https://crowdin.com/project/ublock 2025-04-16 15:21:14 -04:00
Raymond Hill
a1689fb9d0 [mv3] Fix JSON, add description 2025-04-16 15:13:52 -04:00
Raymond Hill
b8adf5b027 [mv3] Add admin setting defaultFiltering
Setting name: "defaultFiltering"
Type: string
Valid values: "none", "basic", "optimal", "complete"

Additionally, fix default "basic" mode toggling back to "optimal"
upon extension restart when uBOL has broad host permissions. The
default mode will toggle automatically only when there is a change
in broad host permissions status.
2025-04-16 15:04:47 -04:00
Raymond Hill
3b34f9439a Import translation work from https://crowdin.com/project/ublock 2025-04-16 08:39:43 -04:00
Raymond Hill
ec19e352b1 [mv3] Mitigate issues when hitting regex-based rules limit
When there are too many regex-based rules, uBOL will start to drop
some strict-block rules to comply with the framework limit regarding
the maximum number of regex-based rules.

Related issues:
- https://github.com/uBlockOrigin/uBOL-home/issues/317
- https://github.com/w3c/webextensions/issues/744
2025-04-16 08:19:52 -04:00
Raymond Hill
e20e6addf0 [mv3] Mind excluded to= hostnames in strict-block rules 2025-04-16 08:18:26 -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
87007e62c0 [mv3] Ensure POL-3 list is separate from POL-0 list in uBOL 2025-04-14 09:07:46 -04:00
Raymond Hill
b5eea3ce3a [mv3] Fix Github Actions 2025-04-13 15:45:39 -04:00
Raymond Hill
e11335f5ad [mv3] Fix Github Actions 2025-04-13 15:37:07 -04:00
Raymond Hill
20f52daf9b Import translation work from https://crowdin.com/project/ublock 2025-04-13 15:23:08 -04:00
Raymond Hill
f15adcf2d5 [mv3] Ensure strict-blocking is enabled when gaining broad permissions 2025-04-13 10:24:23 -04:00
Raymond Hill
51db128dc2 [mv3] "Enable strict blocking" setting depends on broad host permissions 2025-04-13 10:13:18 -04:00
Raymond Hill
7c5c93f073 Import translation work from https://crowdin.com/project/ublock 2025-04-13 09:34:22 -04:00
Raymond Hill
dc3602985f [mv3] Update summary description 2025-04-13 09:19:25 -04:00
Raymond Hill
9bf05023c1 Import translation work from https://crowdin.com/project/ublock 2025-04-13 09:16:54 -04:00
Raymond Hill
50f87c21ea [mv3] Provide console feedback that work is ongoing when building 2025-04-13 09:04:13 -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
12c8bc6c5b Make Firefox dev build auto-update 2025-04-13 07:45:55 -04:00
Raymond Hill
a33e2e4115 New revision for dev build 2025-04-13 07:39:03 -04:00
Raymond Hill
5ed1b07034 Update changelog 2025-04-13 07:38:19 -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
c15dc9d8ff Fix scrollbars not following dark theme
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3604
2025-04-12 15:51: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
d1fc38c473 Make Firefox dev build auto-update 2025-04-12 11:01:06 -04:00
Raymond Hill
cc987cb072 Update changelog 2025-04-12 10:55:14 -04:00
Raymond Hill
b4a8dd0754 New revision for dev build 2025-04-12 10:54:00 -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
a06f09acda Group POL lists together 2025-04-12 09:40:46 -04:00
Raymond Hill
ad2add4676 Code review 2025-04-12 08:08:12 -04:00
Raymond Hill
af054f7980 Make Firefox dev build auto-update 2025-04-11 18:51:21 -04:00
Raymond Hill
1e783d62e0 New revision for dev build 2025-04-11 18:44:55 -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
90e3c352ec Make Firefox dev build auto-update 2025-04-11 10:11:13 -04:00
Raymond Hill
ad68834479 Update changelog 2025-04-11 10:01:31 -04:00
Raymond Hill
809d4f93c4 New revision for dev build 2025-04-11 09:58: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
3d2f70ac56 Add POL list for regional malware
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/890#discussioncomment-9632360
2025-04-11 09:06:28 -04:00
Raymond Hill
d1c57d3fa6 Remove stale extraneous POL-2 list
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/27935
2025-04-10 09:35:19 -04:00
Raymond Hill
70bdcfbae6 Make Firefox dev build auto-update
Mistakenly ran the update script from the safari-ubol branch.
2025-04-10 09:11:56 -04:00
Raymond Hill
ae336c3688 New revision for dev build 2025-04-10 07:37:01 -04:00
Raymond Hill
d0e303ca19 Fix regression in response header filtering
Related commit:
8b696a691a
2025-04-10 07:32:09 -04:00
Raymond Hill
981be2d5b2 Make Firefox dev build auto-update 2025-04-09 18:31:38 -04:00
Raymond Hill
2679aafc17 New revision for dev build 2025-04-09 18:25:20 -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
0fdcd44794 Import translation work from https://crowdin.com/project/ublock 2025-04-09 15:29:26 -04:00
Raymond Hill
01e36db23a Remove "permission-less" status at install time
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/326

uBOL now asks broad host permissions by default. Users can still
choose narrow host permissions by using their browser's controls
for this.

For instance in Chromium, those host permissions controls are found
in the "Site access" section in the detailed view of an extension.

One can set "Site access" to "On click" to revoke broad host
permissions, and grant host permissions to only specific site.

In such mode, uBOL will still block through the DNR API, but no
cosmetic or scriptlet filtering will occurs, as these requires
permission to "read and change data" on websites for which higher
filtering mode is desired.

Some browsers do not automatically grant broad host permissions
even when an extension asks for broad permissions at install time,
and going forward all browsers will likely adopt this approach, and
thus it no longer made sense for uBOL to default to no broad hosts
permissions at install time, especially given this leads to issues
with no solution -- issues solved with the new approach (e.g. like
the ability to deploy uBOL in Optimal mode by default).
2025-04-09 15:11:17 -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
c38101cd34 Make Firefox dev build auto-update 2025-04-08 15:51:30 -04:00
Raymond Hill
cdc63d03cf New revision for dev build 2025-04-08 15:43:13 -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
d8b29cf1a3 Make Firefox dev build auto-update 2025-04-08 12:31:03 -04:00
Raymond Hill
699bf42fdb Import trabslation work from https://crowdin.com/project/ublock 2025-04-08 11:59:36 -04:00
Raymond Hill
ee53980b68 New revision for dev build 2025-04-08 11:57:49 -04:00
Raymond Hill
b55247bbcb Update changelog 2025-04-08 11:57:20 -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
370107b9a6 Import translation work from https://crowdin.com/project/ublock 2025-04-06 16:33:00 -04:00
Raymond Hill
6b9968d804 Add logging information re. fetched assets 2025-04-03 12:11:57 -04:00
Raymond Hill
595f9fd469 [mv3] Loosen requirements to qualify for strict-blocking 2025-04-03 12:09:20 -04:00
Raymond Hill
ac28ab58c8 Make Firefox dev build auto-update 2025-04-03 12:06:36 -04:00
Raymond Hill
09ce8f05e2 Update changelog 2025-04-03 12:02:43 -04:00
Raymond Hill
5574404358 New revision for dev build 2025-04-03 12:01:02 -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
2501eae25f [mv3] Fine tune zapper's quit button
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3587
2025-03-31 17:43:51 -04:00
Raymond Hill
6ffffb7b2b [mv3] Force real origin in postMessage so that use_dynamic_url can be used
Call to postMessage was failing in the zapper when using `use_dynamic_url` in
manifest. Manually overwriting the per-session dynamic hostname with the real
extension id fixes this.
2025-03-31 16:30:17 -04:00
Raymond Hill
0c6cbb7fcb Merge in long overdue change re. UKR list in assets.json
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2692
2025-03-31 11:26:41 -04:00
Raymond Hill
58a92b91c1 Import translation work from https://crowdin.com/project/ublock 2025-03-30 17:21:18 -04:00
Raymond Hill
9351497f16 Make Firefox dev build auto-update 2025-03-30 17:06:18 -04:00
Raymond Hill
c15278522e New revision for dev build 2025-03-30 16:57:38 -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
cdb1afc3b2 Make Firefox dev build auto-update 2025-03-30 12:46:26 -04:00
Raymond Hill
f4b2d48873 Update changelog 2025-03-30 12:39:34 -04:00
Raymond Hill
86210368f5 New revision for dev build 2025-03-30 12:37:56 -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
935ce74d3a Make Firefox dev build auto-update 2025-03-29 10:05:48 -04:00
Raymond Hill
fbdc09a7aa New revision for dev build 2025-03-29 09:57:06 -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
862557fd63 Update changelog 2025-03-29 09:05:26 -04:00
Raymond Hill
5f9f7d050d Make Firefox dev build auto-update 2025-03-28 16:21:20 -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
1ce00e4fda Import translation work from https://crowdin.com/project/ublock 2025-03-27 22:51:48 -04:00
Raymond Hill
d7f01065a5 New revision for dev build 2025-03-27 22:47:58 -04:00
Raymond Hill
0a13683167 [mv3] Remove pointless promise 2025-03-27 22:47:25 -04:00
Raymond Hill
0e303060dd [mv3] Fix CSS for dark theme
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/discussions/291#discussioncomment-12403559
2025-03-27 09:11:47 -04:00
Raymond Hill
d5fd1de150 Use JSONPath-like syntax for new jsonl- scriptlets 2025-03-26 11:47:56 -04:00
Raymond Hill
5936451082 [mv3] Fix toggling of "no filtering" as default mode
A bad test prevented the "no filtering" by default mode to not take
effect immediately when activated while no site had yet been set to
"no filtering". It would however take effect as soon as a specific
site would be excluded from "no filtering".
2025-03-26 07:28:00 -04:00
Raymond Hill
d7ae3a185e [mv3] Test filters are trusted 2025-03-25 12:58:26 -04:00
Raymond Hill
760bd23c5e Minor 2025-03-25 12:29:46 -04:00
Raymond Hill
69ff3ca6fb Make Firefox dev build auto-update 2025-03-25 12:21:04 -04:00
Raymond Hill
231269808d New revision for dev build 2025-03-25 12:14:27 -04:00
Raymond Hill
419786feb7 Update changelog 2025-03-25 12:14:08 -04:00
Raymond Hill
68a256bdde Improve trusted-prevent-dom-bypass scriptlet 2025-03-25 12:12:00 -04:00
Raymond Hill
5e9737d38e [mv3] Allow copy/paste troubleshooting info 2025-03-25 08:32:42 -04:00
Raymond Hill
d0c028386a Import translation work from https://crowdin.com/project/ublock 2025-03-25 08:23:27 -04:00
Raymond Hill
e100f9e85c Import translation work from https://crowdin.com/project/ublock 2025-03-25 08:20:43 -04:00
Raymond Hill
620678fc17 Make Firefox dev build auto-update 2025-03-24 12:32:08 -04:00
Raymond Hill
3520c2fd9e New revision for dev build 2025-03-24 12:23:59 -04:00
Raymond Hill
d18311213d Improve jsonl-prune-... scriptlets 2025-03-24 12:16:10 -04:00
Raymond Hill
484ae68528 Import translation work from https://crowdin.com/project/ublock 2025-03-24 08:17:38 -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
07a4a6a35d Import translation work from https://crowdin.com/project/ublock 2025-03-23 16:37:57 -04:00
Raymond Hill
fbabd4eaac Make Firefox dev build auto-update 2025-03-22 16:15:48 -04:00
Raymond Hill
f09aeef6d9 Update changelog 2025-03-22 16:13:52 -04:00
Raymond Hill
8f78faf980 Import translation work from https://crowdin.com/project/ublock 2025-03-22 16:11:10 -04:00
Raymond Hill
7bded976a8 New revision for dev build 2025-03-22 16:06:50 -04:00
Raymond Hill
a07d01285c Update changelog 2025-03-22 16:06:37 -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
27e2d6a513 Import translation work from https://crowdin.com/project/ublock 2025-03-21 13:31:40 -04:00
Raymond Hill
7a2f4960d0 Import translation work from https://crowdin.com/project/ublock 2025-03-21 13:29:30 -04:00
Raymond Hill
ab458b492a [mv3] Bring back element zapper 2025-03-21 13:23:54 -04:00
Raymond Hill
0f2a374585 Make Firefox dev build auto-update 2025-03-20 12:20:46 -04:00
Raymond Hill
a88594599f Update changelog 2025-03-20 12:13:58 -04:00
Raymond Hill
2774dfe38f Update changelog 2025-03-20 12:11:05 -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
451e1c24a4 New revision for dev build 2025-03-20 12:05:37 -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
7dba69dc48 New revision for statble release 2025-03-20 07:37:44 -04:00
Raymond Hill
e7651f73f4 Make Firefox dev build auto-update 2025-03-20 07:36:34 -04:00
Raymond Hill
d8cda00cd3 Update changelog 2025-03-20 07:23:48 -04:00
Raymond Hill
b93871117c New revision for dev build 2025-03-20 07:22:50 -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
94f73015ed Make Firefox dev build auto-update 2025-03-19 12:51:26 -04:00
Raymond Hill
18349292a6 Improve logging ability in new prevent-innerHTML scriptlet 2025-03-19 12:43:36 -04:00
Raymond Hill
eda245a1a6 Update changelog 2025-03-19 12:37:52 -04:00
Raymond Hill
ebec5a1865 New revision for dev build 2025-03-19 12:36:21 -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
839e240ec1 New stable release version 2025-03-17 16:22:53 -04:00
Raymond Hill
dfe3d48fa3 Update changelog 2025-03-17 08:06:03 -04:00
Raymond Hill
d36ea89a02 Improve prevent-set[Timeout|Interval] scriptlets 2025-03-17 08:02:30 -04:00
Raymond Hill
0e8de98411 Make Firefox dev build auto-update 2025-03-16 06:01:17 -04:00
Raymond Hill
99cb84fab6 New revision for release candidate 2025-03-16 05:56:45 -04:00
Raymond Hill
2d559c43db Update changelog 2025-03-16 05:56:17 -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
fba662421d [mv3] Make it easier to add filters for testing purpose 2025-03-15 15:06:51 -04:00
Raymond Hill
c3187d85e8 [mv3] Avoid re-entrance when registering content scripts 2025-03-15 13:29:26 -04:00
Raymond Hill
4d12ac788c Make Firefox dev build auto-update 2025-03-15 08:06:22 -04:00
Raymond Hill
19cc3b127a New revision for release candidate 2025-03-15 07:53:37 -04:00
Raymond Hill
1e2a7072d8 Update changelog 2025-03-15 07:53:02 -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
b98a8d5c02 [mv3] Remove stray test filters 2025-03-14 12:29:01 -04:00
Raymond Hill
e84d3cd7a3 Make Firefox dev build auto-update 2025-03-14 11:06:11 -04:00
Raymond Hill
db7210a24a Import translation work from https://crowdin.com/project/ublock 2025-03-14 10:59:26 -04:00
Raymond Hill
69601b5c95 Update changelog 2025-03-14 10:52:27 -04:00
Raymond Hill
592a79341d New revision for release candidate 2025-03-14 10:51:23 -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
68962453ff [mv3] Eliminate false positives in new generic cosmetic exception code
Related commit:
a009623d97
2025-03-13 19:02:20 -04:00
Raymond Hill
4032ba01bf [mv3] Separate name from version in report
To make it easier to spot reports from forks of uBOL.
2025-03-13 13:27:21 -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
22fdf8fc1d Make Firefox dev build auto-update 2025-03-11 09:51:19 -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
9f55694c8a New revision for release candidate 2025-03-11 09:13:58 -04:00
Raymond Hill
1ea56a04cd [mv3] Explicit filtering modes in troubleshooting data 2025-03-10 11:44:15 -04:00
Raymond Hill
b9a5726672 Rebuild MV3 extension if mv3-data content changes 2025-03-10 09:24:26 -04:00
Raymond Hill
3f850db1a8 Fix makefile 2025-03-09 08:41:28 -04:00
Raymond Hill
bf9549115c Import translation work from https://crowdin.com/project/ublock 2025-03-08 17:22:46 -05:00
Raymond Hill
26d1283583 Fix mv3 build commands 2025-03-08 13:39:53 -05:00
Raymond Hill
94db43c4ad [mv3] Minor changes to account for Edge build 2025-03-08 11:31:31 -05:00
Raymond Hill
e102a5ee06 Use "make mv3-edge" to build Edge package 2025-03-08 10:43:59 -05:00
Raymond Hill
c569f663ee Add scripts to build for MV3 Edge 2025-03-08 10:07:33 -05:00
Raymond Hill
2b93a9128e Update changelog 2025-03-07 17:06:21 -05:00
Raymond Hill
d006fd06e7 [mv3] Add support for ancestor context syntax in scriptlets
Related commit:
a483f7955f
2025-03-07 17:04:02 -05:00
Raymond Hill
536f0fba25 [mv3] Add test suite list to available rulesets
Microsoft Edge for Android requires a "link to the core function
test cases for your Edge Android extension" to verify that the
extension function properly.
2025-03-06 17:39:15 -05:00
Raymond Hill
31d82c494b Fix typo in variable name 2025-03-06 14:15:02 -05:00
Raymond Hill
83df04a53d Make Firefox dev build auto-update 2025-03-06 10:31:21 -05:00
Raymond Hill
03fb6ee059 Import translation work from https://crowdin.com/project/ublock 2025-03-06 09:59:35 -05:00
Raymond Hill
90a99073a6 Update changelog 2025-03-06 09:54:38 -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
4a5c2723ff New revision for dev build 2025-03-06 09:44:50 -05:00
Raymond Hill
202165867a Update changelog 2025-03-06 09:44:32 -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
b29ac98094 [mv3] Inject surveyor in frames
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/290
2025-03-03 08:27:37 -05:00
Raymond Hill
8467e1b018 Re-wording 2025-03-02 12:27:45 -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
d7a103aa1c Make Firefox dev build auto-update 2025-03-01 15:00:44 -05:00
Raymond Hill
2505b9f760 Update changelog 2025-03-01 14:53:48 -05:00
Raymond Hill
0913d5d1b4 New revision for dev build 2025-03-01 14:51:48 -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
cff88d547f Import translation work from https://crowdin.com/project/ublock 2025-03-01 09:26:44 -05:00
Raymond Hill
ea8853cda3 Use onmessage/postMessage instead of BroadcastChannel in diff updater 2025-02-28 17:18:48 -05:00
Raymond Hill
95b99ef4ac New revision for dev build 2025-02-25 13:05:21 -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
7fb656b653 Make Firefox dev build auto-update 2025-02-24 13:05:32 -05:00
Raymond Hill
18a502c4e3 New revision for dev build 2025-02-24 12:50:56 -05:00
Raymond Hill
8237dfc4f7 Update changelog 2025-02-24 12:50:33 -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
8a6b12a319 [mv3] Inject scriptlets in their intended target world 2025-02-24 10:11:13 -05:00
Raymond Hill
e56ca0f612 Import translation from https://crowdin.com/project/ublock 2025-02-23 12:20:17 -05:00
Raymond Hill
02b78fb717 [mv3] Remove obsolete Firefox workaround code
Related commit:
2e745f9bfb
2025-02-22 11:07:58 -05:00
Raymond Hill
0013e04fd3 Import translation work from https://crowdin.com/project/ublock 2025-02-22 07:47:33 -05:00
Raymond Hill
6ca28a5b3f [mv3] Improve output og log.txt 2025-02-22 07:38:12 -05:00
Raymond Hill
1d2378e74e [mv3] Workaround for permissions dialog preventing proper mode change
This is a Chromium-specific issue.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/280
2025-02-21 08:23:27 -05:00
Raymond Hill
128083c203 Make Firefox dev build auto-update 2025-02-20 15:31:23 -05:00
Raymond Hill
ce724d5c47 Import translation work from https://crowdin.com/project/ublock 2025-02-20 15:19:57 -05:00
Raymond Hill
80a04efefe New revision for dev build 2025-02-20 15:16:11 -05:00
Raymond Hill
839d1c31b3 Update changelog 2025-02-20 15:15:51 -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
c778f339cd Update changelog 2025-02-20 09:02:25 -05:00
Raymond Hill
9f27b9fedd Import translation work from https://crowdin.com/project/ublock 2025-02-20 09:02:06 -05:00
Raymond Hill
4d0ecbae3d Import translation work from https://crowdin.com/project/ublock 2025-02-20 08:44:31 -05:00
Raymond Hill
344539d793 Comply with Mozilla's "User Consent and Control"
Make clear that the hostname of the page with issue is being sent
to GitHub's server when searching existing reports or creating a
new report.
2025-02-20 08:06:50 -05:00
Raymond Hill
516ff356e6 Make Firefox dev build auto-update 2025-02-19 14:31:28 -05:00
Raymond Hill
d2dbb098a2 Update changelog 2025-02-19 14:26:37 -05:00
Raymond Hill
807ed382e2 New revision for dev build 2025-02-19 14:03:03 -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
Raymond Hill
17c66030fe [mv3] Fix incorrect hostname matching in urlskip-related code
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/issues/278#issuecomment-2664971115
2025-02-19 08:41:22 -05:00
Raymond Hill
f12351688a Import translation work from https://crowdin.com/project/ublock 2025-02-19 07:51:43 -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
8629f07138 Fix "make lint" command; fix more lint errors 2025-01-19 09:35:51 -05:00
Raymond Hill
60ed584fc1 Import translation work from https://crowdin.com/project/ublock 2025-01-15 10:06:48 -05:00
Raymond Hill
2843aa1c90 [mv3] Inject highly generic cosmetic filters in all frames
Related issue:
https://github.com/uBlockOrigin/uAssets/issues/26839
2025-01-15 09:13:18 -05:00
Raymond Hill
efd1d7d171 Fix makefile 2025-01-11 10:53:36 -05:00
Raymond Hill
7cdf56f69a Make Firefox dev build auto-update 2025-01-10 11:16:10 -05:00
Raymond Hill
3685a18fe9 Fix workflow and makefile 2025-01-10 11:08:54 -05:00
Raymond Hill
149228c388 Fix workflow 2025-01-10 10:52:36 -05:00
Raymond Hill
b2c568b3d6 Fix workflow 2025-01-10 10:46:32 -05:00
Raymond Hill
2c64da4d03 New revision for dev build 2025-01-10 10:29:03 -05:00
Raymond Hill
d2ff26a49d Update changelog 2025-01-10 10:28:41 -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
e0c4bce931 Fix changelog 2025-01-07 13:58:10 -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
987f41c85d Make Firefox dev build auto-update 2025-01-04 21:05:46 -05:00
Raymond Hill
25030e6cb9 Update .gitignore 2025-01-04 20:41:28 -05:00
Raymond Hill
af8f11eb14 New revision for dev build 2025-01-04 20:39:38 -05:00
Raymond Hill
e192e40a81 Update CHANGELOG 2025-01-04 20:39:06 -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
Raymond Hill
7f78d19597 New stable release version 2025-01-01 08:22:32 -05:00
Raymond Hill
7c530198c8 Import translation work from https://crowdin.com/project/ublock 2025-01-01 08:20:45 -05:00
Raymond Hill
217d001d71 [mv3] Minor changes 2024-12-30 13:40:18 -05:00
Fanboynz
62178de756 Add granted and done cookie values (#3932) 2024-12-30 08:27:50 -05:00
Raymond Hill
c04d4f4187 [mv3] Fix build script 2024-12-29 17:06:26 -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
b8678d22ea Remove pointless instructionURL from AdGuard's lists
There is no special extra steps to be taken when enabling an
AdGuard lists, there is no point to have `instructionURL` for
these.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3502
2024-12-27 08:34:41 -05:00
Raymond Hill
b856a2767d Make Firefox dev build auto-update 2024-12-26 19:26:19 -05:00
Raymond Hill
e3757e32a5 New revision for release candidate 2024-12-26 19:19:06 -05:00
Raymond Hill
05c5f36921 Update changelog 2024-12-26 19:18:44 -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
4015e7f772 Make Firefox dev build auto-update 2024-12-26 18:50:45 -05:00
Raymond Hill
9032afef10 New revision for dev build 2024-12-26 18:46:24 -05:00
Raymond Hill
dd40dbdd96 Update changelog 2024-12-26 18:46:00 -05:00
Raymond Hill
19f22c438e Remove pointless instructionURL from AdGuard's lists
There is no special extra steps to be taken when enabling an
AdGuard lists, there is no point to have `instructionURL` for
these.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3502
2024-12-26 11:58:34 -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
3ae28423b9 Remove pointless instructionURL from AdGuard's lists
There is no special extra steps to be taken when enabling an
AdGuard lists, there is no point to have `instructionURL` for
these.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3502
2024-12-26 08:05:10 -05:00
Raymond Hill
dd5a79e6eb Make Firefox dev build auto-update 2024-12-25 14:30:48 -05:00
Raymond Hill
a4677f160f New revision for release candidate 2024-12-25 14:28:24 -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
f7fa3139af Need to name as per validator 2024-12-24 12:43:53 -05:00
Raymond Hill
3df22b1791 [mv3] Change extension id 2024-12-24 11:30:13 -05:00
Raymond Hill
14bed5679a Make Firefox dev build auto-update 2024-12-24 09:16:16 -05:00
Raymond Hill
d4194353f8 New revision for release candidate 2024-12-24 09:10:31 -05:00
Raymond Hill
23134c2e45 Update changelog 2024-12-24 09:10:04 -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
27a72b8eef [mv3] Hopefully this fixes Edge submission issue
Submission to Edge Addons store fails with:

----
The following checks failed:
Package acceptance validation error:
Manifest file reference 'urlhaus.full' does not exist in the zip archive.
(Note: File locations are case-sensitive)
Package acceptance validation error:
Manifest file reference 'openphish.domains' does not exist in the zip archive.
(Note: File locations are case-sensitive)
----

Guessing the use of period in ruleset file path is causing the
issue.
2024-12-23 09:57:57 -05:00
Raymond Hill
fd481a37bf Import translation work from https://crowdin.com/project/ublock 2024-12-22 10:36:47 -05:00
Raymond Hill
6c228a8bfd Make Firefox dev build auto-update 2024-12-21 11:46:44 -05:00
Raymond Hill
dd281d9fc5 New revision for dev build 2024-12-21 11:32:03 -05:00
Raymond Hill
43d157112d Update changelog 2024-12-21 11:31:33 -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
89e44131a0 [mv3] Enable OpenPhish ruleset by default
As discussed with filter list maintainers.
2024-12-21 08:57:12 -05:00
Raymond Hill
a17a8ac04b Import translation work from https://crowdin.com/project/ublock 2024-12-20 14:28:23 -05:00
Raymond Hill
c311315daa [mv3] Fix undue blocking of network requests for unfiltered sites
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/247

Use session rules with `TAB_ID_NONE` to properly exclude network
requests from service workers potentially used by trusted websites.
2024-12-20 13:55:48 -05:00
Raymond Hill
143cc0280a Make Firefox dev build auto-update 2024-12-20 10:26:16 -05:00
Raymond Hill
743a907692 New revision for dev build 2024-12-20 10:14:31 -05:00
Raymond Hill
5ddde5a36a Update changelog 2024-12-20 10:14:11 -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
9fbc23abfc Import translation work from https://crowdin.com/project/ublock 2024-12-15 15:38:40 -05:00
Raymond Hill
d47876c547 Use combined list for UKR
As per feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/2692#issuecomment-2543153158
2024-12-14 11:00:21 -05:00
Raymond Hill
9c75814525 Use code quotes for filters in logger export feature 2024-12-14 09:03:32 -05:00
Raymond Hill
c279cded17 [mv3] Minor code review 2024-12-14 09:01:23 -05:00
Raymond Hill
c2a4b72fee Import translation work from https://crowdin.com/project/ublock 2024-12-14 08:57:22 -05:00
Raymond Hill
5e0802fd67 Import translation work from https://crowdin.com/project/ublock 2024-12-14 08:53:15 -05:00
Raymond Hill
ac9e12e17c [mv3] Add "Malware protection, security" section in "Filter lists" pane
Additionally, add "Openphish Domain Blocklist" as stock list.
2024-12-14 08:45:17 -05:00
Raymond Hill
fbe203c101 Make Firefox dev build auto-update 2024-12-13 11:36:20 -05:00
Raymond Hill
73b85efae2 New revision for dev build 2024-12-13 11:31:31 -05:00
Raymond Hill
65f64a5809 Update changelog 2024-12-13 11:29:59 -05:00
Raymond Hill
0f373b7639 Use HOSTS version of "Malicious URL Blocklist"
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/256
2024-12-13 11:18:18 -05:00
Raymond Hill
439d608d03 Revert "Use HOSTS version of "Malicious URL Blocklist""
This reverts commit 54ebea31f7.
2024-12-13 11:15:36 -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
2b6d67b29a Import translation work from https://crowdin.com/project/ublock 2024-12-13 08:30:27 -05:00
Raymond Hill
b1936524f7 Import translation work from https://crowdin.com/project/ublock 2024-12-12 20:06:15 -05:00
Raymond Hill
54ebea31f7 Use HOSTS version of "Malicious URL Blocklist"
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/256
2024-12-12 20:00:08 -05:00
Raymond Hill
b7bacc0fc1 Fix bad filter in urlhaus
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/256
2024-12-12 19:47:48 -05:00
Raymond Hill
bdc67b1e7f Make Firefox dev build auto-update 2024-12-12 12:40:33 -05:00
Raymond Hill
d51a01f0f8 Add regional list for UKR
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2692
2024-12-12 12:34:04 -05:00
Raymond Hill
25a4433e2a New revision for dev build 2024-12-12 10:50:32 -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
42c23f10d4 Make Firefox dev build auto-update 2024-12-11 09:05:37 -05:00
Raymond Hill
d193ae7d2f New revision for dev build 2024-12-11 08:50:30 -05:00
Raymond Hill
2d400b5661 Update changelog 2024-12-11 08:49:44 -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
f14257d813 [mv3] Minor visual fix in dashboard's Welcome section 2024-12-10 10:22:38 -05:00
Raymond Hill
0e1800e68d [mv3] Fix using Optimal as default mode when hosts permission allows it
Related issue:
https://github.com/uBlockOrigin/uBOL-home/discussions/161
2024-12-10 10:16:35 -05:00
Raymond Hill
738f93da28 Import translation work from https://crowdin.com/project/ublock 2024-12-09 10:52:07 -05:00
Raymond Hill
09554384ef [mv3] Replace "30-day Phishing Domain List" with "Malicious URL Blocklist"
As per team feedback.
2024-12-09 10:48:24 -05:00
Raymond Hill
20a570ebe8 [mv3] Make strict-blocking checkbox dependent on filtering mode
Related feedback:
https://github.com/uBlockOrigin/uBOL-home/issues/214#issuecomment-2528072997
2024-12-09 09:42:46 -05:00
Raymond Hill
51ef43c0de Make Firefox dev build auto-update 2024-12-09 08:38:29 -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
fa87e6d830 New revision for dev build 2024-12-09 08:08: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
6c6ac6c7a7 Import translation work from https://crowdin.com/project/ublock 2024-12-08 16:58:23 -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
ec5a1b3ab6 Import translation work from https://crowdin.com/project/ublock 2024-12-06 17:21:30 -05:00
Raymond Hill
424fc81628 [mv3] Minor code review 2024-12-06 12:13:18 -05:00
Raymond Hill
4e7bdff8ed Make Firefox dev build auto-update 2024-12-06 12:11:15 -05:00
Raymond Hill
4ed97bb513 Update JSDoc documenation 2024-12-06 12:04:21 -05:00
Raymond Hill
0701422dcf New revision for dev build 2024-12-06 11:56:56 -05:00
Raymond Hill
0d0754a57b Update changelog 2024-12-06 11:56:33 -05:00
Raymond Hill
3417fe3d5d Improve trusted-replace-argument scriptlet
As discussed with filter list maintainers.
2024-12-06 11:53:42 -05:00
Raymond Hill
36db7f8327 Block media elements unconditionally when max size is set to 0
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1h7x9nj/
2024-12-06 10:15:42 -05:00
Raymond Hill
b3a51d0018 Import translation work from https://crowdin.com/project/ublock 2024-12-05 13:09:07 -05:00
Raymond Hill
38390bab9c [mv3] Add urlskip support for strict-blocked page + extra info
Add information about which ruleset caused a page to be strict-
blocked.

Whenever possible, add ability to URL-skip an incoming redirect
in a strict-blocked page.

Add new default list: "30-day Phishing Domain List"
2024-12-05 12:56:25 -05:00
Raymond Hill
fb82db34f7 Make Firefox dev build auto-update 2024-12-05 09:20:54 -05:00
Raymond Hill
fd2ddd3c01 Import translation work from https://crowdin.com/project/ublock 2024-12-05 09:12:28 -05:00
Raymond Hill
07484ceed1 Import translation work from https://crowdin.com/project/ublock 2024-12-05 09:10:46 -05:00
Raymond Hill
37f7181a52 New revision for dev build 2024-12-05 09:08:26 -05:00
Raymond Hill
a86e802afc Add advanced setting noScriptingCSP
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/2642#issuecomment-2520096503

Specify which CSP directive to inject when no-scripting switch is
toggled on. If this hidden setting is changed, uBO will not try
to spoof `noscript` elements.

For internal use at the moment, not to be documented.
2024-12-05 09:04:31 -05:00
Raymond Hill
f80143a8ee Make Firefox dev build auto-update 2024-12-04 19:50:40 -05:00
Raymond Hill
5eb44d01e5 Update changelog 2024-12-04 19:45:06 -05:00
Raymond Hill
1a0331b7c2 New revision for dev build 2024-12-04 19:44:23 -05:00
Raymond Hill
ea1b1abaee Import translation work from https://crowdin.com/project/ublock 2024-12-04 19:43:40 -05:00
Raymond Hill
48fed03128 Add "RU AdList: Counters" to stable release of uBO
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/229#issuecomment-2408527226
2024-12-04 16:55:18 -05:00
Raymond Hill
076e9fa73e Visually separate scriptlet parameters in active line
This makes it easier to see how parameters are parsed internally,
in order to make it easier to distinguish commas as separator and
literal commas meant to be part of a parameter.

Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/865#discussioncomment-11461980
2024-12-04 10:48:55 -05:00
Raymond Hill
784888471a Import translation work from https://crowdin.com/project/ublock 2024-12-03 16:53:50 -05:00
Raymond Hill
aa05cb32c6 [mv3] Implement strict blocking
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/214

This implements basic functionality for strict blocking, i.e. the
ability to block navigation to undesirable websites. This is a
first implementation, which converts only filters that are plain
hostnames.

Unlike with uBO, it is not possible to know from which ruleset a
blocking rule originates. Nonetheless, users will have to make a
choice as to whether navigation should proceed or not.

A setting has been added to the dashboard to wholly enable/disable
strict blocking. It is enabled by default.

Potential future improvements, pending investigation on feasability
in an MV3 framework:
- Extend coverage to explicit `document` filters
- Leverage and use `urlskip=` filters in the blocking page in order
  to proceed while bypassing unwanted redirects.
2024-12-03 16:41:34 -05:00
Raymond Hill
d7df6cda4a Import translation work from https://crowdin.com/project/ublock 2024-12-01 19:46:29 -05:00
Raymond Hill
556bea809e Make Firefox dev build auto-update 2024-11-29 11:01:23 -05:00
Raymond Hill
47bdec422a New revision for dev build 2024-11-29 10:55:07 -05:00
Raymond Hill
580f2dee06 Update changelog 2024-11-29 10:54:43 -05:00
Raymond Hill
b1a00145bd Mitigate potentially delayed execution of scriptlets in Firefox
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3452

Use blob-based injection only when direct injection fails because
of a page's CSP. This is a mitigation until a better approach is
devised.

Such future better approach to investigate:

- Use `MAIN` world injection supported by contentScript.register()
  since Firefox 128
- Investigate registering script to inject ahead of time thru
  some heuristic
2024-11-29 10:13:39 -05:00
Raymond Hill
d6867699c9 Make Firefox dev build auto-update 2024-11-28 12:01:12 -05:00
Raymond Hill
f04645ab9f New revision for dev build 2024-11-28 11:51:27 -05:00
Raymond Hill
58a5a23763 Update changelog 2024-11-28 11:51:05 -05:00
Raymond Hill
3b7fa79a68 Improve prevent-setTimeout/prevent-setInterval scriptlet
Add support for range for the `delay` paramater:

---

@param [delay]
A value to match against the delay. Can be a single value for exact match,
or a range:
- `min-max`: matches if delay >= min and delay <= max
- `min-`: matches if delay >= min
- `-max`: matches if delay <= max
No delay means to match any delay value.
Prepend with `!` to reverse the match condition.

---

As discussed with filter list maintainers.
2024-11-28 11:47:28 -05:00
Raymond Hill
703fdf673c [mv3] Fix mv3 build script 2024-11-27 17:55:18 -05:00
Raymond Hill
4d525f1a55 Move assets/resources into src/js/ 2024-11-27 16:47:11 -05:00
Raymond Hill
adced29b5b Improve trusted-replace-argument scriptlet
As discussed with filter list maintainers, added ability to
partially replace an argument using the `repl:` prefix. Updated
documentation:

---

@scriptlet trusted-replace-argument.js

@description
Replace an argument passed to a method. Requires a trusted source.

@param propChain
The property chain to the function which argument must be replaced when
called.

@param argposRaw
The zero-based position of the argument in the argument list. Use a negative
number for a position relative to the last argument.

@param argraw
The replacement value, validated using the same heuristic as with the
`set-constant.js` scriptlet.
If the replacement value matches `json:...`, the value will be the
json-parsed string after `json:`.
If the replacement value matches `repl:/.../.../`, the target argument will
be replaced according the regex-replacement directive following `repl:`

@param [, condition, pattern]
Optional. The replacement will occur only when pattern matches the target
argument.

---

Aditionally, more scriptlets moved into their own files.
2024-11-27 15:53:50 -05:00
Raymond Hill
e43cb6771a [mv3] Open options page in tab in Firefox 2024-11-25 12:31:50 -05:00
Raymond Hill
50ddedb992 Import translation work from https://crowdin.com/project/ublock 2024-11-24 10:24:08 -05:00
Raymond Hill
346b5ded7c [mv3] Add ability for admins to disable features
New managed setting:

"disabledFeatures": {
  "title": "User interface features to disable",
  "description": "A list of tokens, each of which correspond to a user interface feature to disable.",
  "type": "array",
  "items": { "type": "string" }
}

Supported tokens:
- `dashboard`: Prevent access to all dashboard settings
- `filteringMode`: Prevent changes to the default filtering mode,
  or the current filtering mode of any site

Related feedback:
https://github.com/uBlockOrigin/uBOL-home/discussions/35#discussioncomment-11326086
2024-11-23 13:17:13 -05:00
Raymond Hill
4979aa51f5 [mv3] Do not collect matched rules by default when side-loaded
Collecting matched rules when the extension is side-loaded is now
opt-in, by enabling "Developer mode" in the dashboard.

The reason is to allow the extension to behave same as the official
released version when side-loaded.

Specifically, as side-loaded extension, uBOL's service worker would
wake up due to matched-rule listener even though it would not wake
up the worker with same configuration in stable release.
2024-11-21 12:54:28 -05:00
Raymond Hill
b2d7bb72c7 [mv3] Write log.txt file to extension folder 2024-11-20 12:55:13 -05:00
Raymond Hill
6355a17187 [mv3] Fix flaw breaking scriptlets injection in optimal/basic mode
Not all matching scriptlets were injected on a given site in Optimal
or Complete mode when default mode was set to Basic or less.

A high profile manifestation of this bug was that Youtube ads were
not being blocked when using Optimal on Youtube while default mode
was Basic.
2024-11-20 09:04:52 -05:00
Raymond Hill
8ae33afb76 Make Firefox dev build auto-update 2024-11-20 08:15:59 -05:00
Raymond Hill
4a8efe1ed8 Replace all instances, not just the first one 2024-11-20 08:07:52 -05:00
Raymond Hill
11bbee93fe Ne wrevision for dev build 2024-11-20 08:01:50 -05:00
Raymond Hill
fbbd5765c8 Update changelog 2024-11-20 08:01:27 -05:00
Raymond Hill
bcc058eba7 Add -safebase64 directive in urlskip=
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2487392846
2024-11-20 07:53:52 -05:00
Raymond Hill
3aac2a7c97 Import translation work from https://crowdin.com/project/ublock 2024-11-19 13:44:25 -05:00
Raymond Hill
f3486275e9 [mv3] Fix force-reloading repeatedly when erroring at load time
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/234
2024-11-19 13:16:56 -05:00
Raymond Hill
2f2f383c1b Make Firefox dev build auto-update 2024-11-18 14:25:44 -05:00
Raymond Hill
9fb90ad14c New revision for dev build 2024-11-18 14:22:27 -05:00
Raymond Hill
dfc3c252d2 Update changelog 2024-11-18 14:22:02 -05:00
Raymond Hill
77ed83ff2f Improve urlskip= filter option
Automatically upgrade `http:` to `https:` in the resulting URL.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2480930555
2024-11-18 14:19:21 -05:00
Raymond Hill
114acacd2e [mv3] Batch changes thru dashboard UI to reduce worker's workload 2024-11-18 14:08:30 -05:00
Raymond Hill
f9ce06977d [mv3] Fix removeparam potentially causing invalid DNR rules 2024-11-18 14:05:19 -05:00
Raymond Hill
17e0a35650 Import translation work from https://crowdin.com/project/ublock 2024-11-18 10:25:46 -05:00
Raymond Hill
c95b08d760 Import translation work from https://crowdin.com/project/ublock 2024-11-18 10:24:08 -05:00
Raymond Hill
d7c6b41992 [mv3] Code review re. re-worked dashboard
Related commit:
ae4754415c

Fine-tuned visuals; fixed sublist quirks related to admin-selected
lists.
2024-11-18 10:16:01 -05:00
Raymond Hill
ae4754415c [mv3] Re-work dashboard: move list of rulesets in its own pane
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/229

Add "Filter lists" pane in dashboard

The DNR API now supports enabling 50 static rulesets put of a
maximum of 100 (instead of 10 out of 50 originally). Thus given
the potentially growing number of static rulesets, the available
stock rulesets has been moved to its own pane, with the following
improvements:
- Support sublists
- Support search

Aditionally, "RU AdList: Counter" has been added as a stock
ruleset.

Other changes:
- Do not re-evaluate regexes which failed validation
- Better reduce `removeparam` rules
2024-11-17 17:27:27 -05:00
Raymond Hill
b4a5b411b5 Add "RU AdList: Counters" to stock list
Shouldn't be enabled by default, to conform it's working as
intended.

Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/37#discussioncomment-9629942
2024-11-16 12:01:30 -05:00
Raymond Hill
51edb13a06 Minor code review 2024-11-16 09:54:19 -05:00
Raymond Hill
442331136c Make Firefox dev build auto-update 2024-11-16 09:50:51 -05:00
Raymond Hill
f8bd9a1007 New revision for dev build 2024-11-16 09:31:29 -05:00
Raymond Hill
edf4f52fe5 Update changelog 2024-11-16 09:31:02 -05:00
Raymond Hill
5f5e3d730f Improve spoof-css scriptlet
Added special properties to spoof output of getBoundingClientRect().
2024-11-16 09:26:09 -05:00
Raymond Hill
c8174d6032 Improve trusted-set-attr scriptlet
Related feedback:
11ca4a3923 (commitcomment-149148167)
2024-11-16 08:10:25 -05:00
Raymond Hill
947602d4fe [mv3] Slightly mitigate DNR flaw re. removeparam filters
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/140

This will allow more specific `removeparam` filters to override
generic ones. This doesn't fix the related issue but should help
more specific `removeparam` filters to be applied.

Related webextensions issue:
https://github.com/w3c/webextensions/issues/468
2024-11-15 10:01:29 -05:00
Raymond Hill
7fcd2a51be Make Firefox dev build auto-update 2024-11-14 10:51:21 -05:00
Raymond Hill
2e66d7bd55 Import translation work from https://crowdin.com/project/ublock 2024-11-14 10:40:55 -05:00
Raymond Hill
3066386d0e New revision for dev build 2024-11-14 10:35:21 -05:00
Raymond Hill
b709a56ce6 Update changelog 2024-11-14 10:35:01 -05:00
Raymond Hill
4c299bfca9 Better handle unexpected conditions when deserializing
For example, when deserialzing from corrupted storage.
2024-11-14 10:32:15 -05:00
Raymond Hill
ff5fc61753 Add support for EasyList { remove: true } cosmetic filter syntax
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3451
2024-11-14 10:24:50 -05:00
Raymond Hill
2e745f9bfb [mv3] Remove obsolete Firefox-only workaround in scriptlet template
Related bugzilla issue:
https://bugzilla.mozilla.org/show_bug.cgi?id=1736575

The issue was fixed months ago.

The removed code block is causing uBOL to be flagged as "including
remotely hosted code".

To be clear, the removed obsolete code block was not related to
executing remote code. The referenced code was in the file itself,
not remote, and this was a workaround for when Firefox was not
supporting injecting script in the `MAIN` world.

The issue was fixed months ago in Firefox, so there is no point for
the workaround.
2024-11-13 09:10:51 -05:00
Raymond Hill
d325dcd192 Make Firefox dev build auto-update 2024-11-11 15:45:32 -05:00
Raymond Hill
7ccb4c6314 New revision for dev build 2024-11-11 15:21:41 -05:00
Raymond Hill
52d21b8df9 Update changelog 2024-11-11 15:21:16 -05:00
Raymond Hill
335d947c10 Fix potential infinite async loop
Related issue:
https://bugzilla.mozilla.org/show_bug.cgi?id=1929326

As identified by @Rob--W:
https://bugzilla.mozilla.org/show_bug.cgi?id=1929326#c9

Truncated or otherwise corrupted asset content in extension storage
could lead to infinite async loop causing high CPU usage in uBO and
its workers.

Likely related to the issue of the asset content returned as
`undefined`:
652f178787/src/js/cachestorage.js (L98)
2024-11-11 15:17:19 -05:00
Raymond Hill
15dae359f7 [mv3] Add support to add/remove rulesets through policies
Related discussion:
https://github.com/uBlockOrigin/uBOL-home/discussions/35#discussioncomment-11157444

New policy setting: `rulesets`
Type: array
Type of array items: string

Each item in the list is a list id (as seen in `rulesets/ruleset-details.json`),
prefixed with either `+` to enable the ruleset, or `-` to disable the ruleset.

Users will not be able to enable or disable rulesets present in the `rulesets`
policy. Disabled rulesets will not appear in the dashboard.

Use `-*` to remove all non-default rulesets, except for those added
using `+[ruleset_id]`.

Additionally, some work has been done to properly handle policy changes in
a non-blocking and deferred manner, as I observed that it often takes long
for calls to `storage.manage.get` to resolve. This potentailly takes care
of the following issue:
https://github.com/uBlockOrigin/uBOL-home/issues/174
2024-11-11 13:20:54 -05:00
Raymond Hill
74921a0f27 Make Firefox dev build auto-update 2024-11-08 12:26:24 -05:00
Raymond Hill
74d8be96d2 Fix more workflow warnings; fix steps order 2024-11-08 12:17:27 -05:00
Raymond Hill
689ffbe7d3 Address workflow warnings 2024-11-08 12:07:30 -05:00
Raymond Hill
dc81a39a99 New revision for dev build 2024-11-08 11:26:13 -05:00
Raymond Hill
93e2d7f143 Update changelog 2024-11-08 11:25:56 -05:00
Raymond Hill
e5a088738d Keep moving related scriptlets into separate files 2024-11-08 11:22:31 -05:00
Raymond Hill
ce4908b341 Improve prevent-xhr scriptlet 2024-11-08 08:48:07 -05:00
Raymond Hill
41616df866 Improve trusted-suppress-native-method scriptlet
Add `debug` as disposition option: if the `how` parameter is `debug`,
the scriptlet will trigger a `debugger` statement and the target
method won't be suppressed. Useful to find out how the method is
being called by page code. To be used for investigation purpose only.
2024-11-08 08:32:19 -05:00
Raymond Hill
fd60f54a5f Make Firefox dev build auto-update 2024-11-07 12:15:43 -05:00
Raymond Hill
34eed9abef Update changelog 2024-11-07 12:09:41 -05:00
Raymond Hill
e854c4752b New revision for dev build 2024-11-07 11:59:57 -05:00
Sander Lepik
f90ccb7c62 Move Estonian list away from .php extension (#3926) 2024-11-07 10:27:26 -05:00
Raymond Hill
e613282698 Improve set-cookie scriptlet
Allow negative integer as valid value.

Related issue:
https://github.com/gorhill/uBlock/pull/3927

Additionally, move cookie-related scriptlets/helpers into its own
source code file.
2024-11-07 10:23:34 -05:00
Raymond Hill
652f178787 New revision for stable release 2024-11-05 09:27:11 -05:00
Raymond Hill
e164250fea Comment 2024-11-05 09:26:23 -05:00
Raymond Hill
54ed02e302 Import translation work from https://crowdin.com/project/ublock 2024-11-05 09:25:01 -05:00
Raymond Hill
12817eee57 Squashed commit of the following:
commit a4d319437a
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 21:01:06 2024 +0300

    Delete .gitmodules

commit 57b7d98148
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:47:50 2024 +0300

    Delete dist/mv3/log.txt

commit c936a72bb3
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:47:16 2024 +0300

    Update dist/README.md

commit b5aaec47b3
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:46:53 2024 +0300

    Update release head

commit be2da15508
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:46:37 2024 +0300

    Update links in readme

commit 3019dfc37a
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:46:16 2024 +0300

    Update contributing guide

commit 3b9333dbd8
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:45:53 2024 +0300

    Update CI

commit 2831a0d0fd
Author: daylight <starcrush@monemail.com>
Date:   Fri Nov 1 17:45:31 2024 +0300

    Update config
Revert "Update CI"

This reverts commit 3b9333dbd8.
2024-11-04 10:12:25 -05:00
daylight
a4d319437a Delete .gitmodules 2024-11-01 16:33:23 -04:00
daylight
57b7d98148 Delete dist/mv3/log.txt 2024-11-01 16:33:23 -04:00
daylight
c936a72bb3 Update dist/README.md 2024-11-01 16:33:23 -04:00
daylight
b5aaec47b3 Update release head 2024-11-01 16:33:23 -04:00
daylight
be2da15508 Update links in readme 2024-11-01 16:33:23 -04:00
daylight
3019dfc37a Update contributing guide 2024-11-01 16:33:22 -04:00
daylight
3b9333dbd8 Update CI 2024-11-01 16:33:22 -04:00
daylight
2831a0d0fd Update config 2024-11-01 16:33:22 -04:00
Raymond Hill
121ac712f7 Make Firefox dev build auto-update 2024-11-01 11:41:35 -04:00
Raymond Hill
67310b0fb6 New revision for stable release candidate 2024-11-01 11:36:43 -04:00
Raymond Hill
331a82775f Update changelog 2024-11-01 11:36:08 -04:00
Raymond Hill
8884f259c1 Improve prevent-refresh scriptlet
Related discussion:
https://github.com/uBlockOrigin/uAssets/issues/25859#issuecomment-2449623891
2024-11-01 11:33:34 -04:00
Raymond Hill
eab0fd4e57 Make Firefox dev build auto-update 2024-10-31 12:11:01 -04:00
Raymond Hill
d401527e83 Import translation work from https://crowdin.com/project/ublock 2024-10-31 11:28:06 -04:00
Raymond Hill
d70c602575 New revision for stable release candidate 2024-10-31 11:25:18 -04:00
Raymond Hill
34771d02d1 Fine tune visuals in document-blocked page
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2449415643
2024-10-31 11:18:42 -04:00
Raymond Hill
fd3624f541 Make Firefox dev build auto-update 2024-10-30 19:16:41 -04:00
Raymond Hill
eb37cd870d New revision for stable release candidate 2024-10-30 19:07:24 -04:00
Raymond Hill
a5d7e68ebe Update changelog 2024-10-30 19:06:57 -04:00
Raymond Hill
f645e8f0d2 Improve googlesyndication_adsbygoogle.js scriptlet
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/321#discussioncomment-11000356
2024-10-30 09:12:58 -04:00
Raymond Hill
a793d693b5 Make Firefox dev build auto-update 2024-10-28 14:26:05 -04:00
Raymond Hill
1264284a3c New revision for stable release candidate 2024-10-28 14:17:07 -04:00
Raymond Hill
c07db7553d Fix urlskip= with -blocked directive for blocked requests
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2441470631
2024-10-28 14:13:50 -04:00
Raymond Hill
ac4506091e Import translation work from https://crowdin.com/project/ublock 2024-10-28 12:04:34 -04:00
Raymond Hill
672f2f3769 Make Firefox dev build auto-update 2024-10-27 15:06:13 -04:00
Raymond Hill
0face5e362 New revision for stable release candidate 2024-10-27 14:54:03 -04:00
Raymond Hill
c90eab5e10 Update changelog 2024-10-27 14:53:33 -04:00
Raymond Hill
60a1dea0f6 Import translation work from https://crowdin.com/project/ublock 2024-10-27 14:49:14 -04:00
Raymond Hill
9b3e94b23f Import translation work from https://crowdin.com/project/ 2024-10-27 14:46:25 -04:00
Raymond Hill
20b54185fa Offer ability to skip redirects in strict-blocked page
Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2439639215

If a strict-blocked page matches a `urlskip=` filter, the page
will show the user the destination URL as a result of applying the
`urlskip` filter should they choose to proceed with the
navigation.
2024-10-27 14:24:08 -04:00
Raymond Hill
6aa9391c8d Make Firefox dev build auto-update 2024-10-26 14:31:33 -04:00
Raymond Hill
87716cf781 New revision for stable release candidate 2024-10-26 14:04:55 -04:00
Raymond Hill
4cb92102c7 Update changelog 2024-10-26 14:03:58 -04:00
Raymond Hill
d04dc4c767 Add -blocked directive to urlskip= option
Potentially breaking change:

`urlskip=` option will no longer apply by default to blocked network
requests, only network requests which are not blocked can be skipped
through a `urlskip=` filter.

The new `urlskip=` directive `-blocked` can be used to explicitly
allow a `urlskip=` filter to also apply to blocked network requests.

Example: given the filter `||example.com^`, the filter:

  ||example.com/path/to/tracker$urlskip=?url

Will not prevent strict-blocking when navigating to:

  https://example.com/path/to/tracker?url=https://example.org/

However, the filter:

  ||example.com/path/to/tracker$urlskip=-blocked ?url

Will cause the strict-blocking to be ignored and allow navigation
to proceed to the URL extracted as a result of applying the `urlskip=`
filter:

  https://example.org/

Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2439627386
2024-10-26 12:56:52 -04:00
Raymond Hill
50785ea38b Make Firefox dev build auto-update 2024-10-25 19:31:28 -04:00
Raymond Hill
d49062db08 New revision for dev build 2024-10-25 19:25:57 -04:00
Raymond Hill
033314ed34 Update changelog 2024-10-25 19:25:44 -04:00
Raymond Hill
11ca4a3923 Add trusted-set-attr scriptlet
@trustedScriptlet trusted-set-attr

@description
Sets the specified attribute on the specified elements. This scriptlet runs
once when the page loads then afterward on DOM mutations.

Reference: https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#-%EF%B8%8F-trusted-set-attr

@param selector
A CSS selector for the elements to target.

@param attr
The name of the attribute to modify.

@param value
The new value of the attribute. Since the scriptlet requires a trusted
source, the value can be anything.

=====

Additionally, start to move scriptlets into their own source files
for easier maintenance and code review.
2024-10-25 19:12:08 -04:00
Raymond Hill
0851015d7d Make Firefox dev build auto-update 2024-10-22 20:11:11 -04:00
Raymond Hill
c9ebe07d39 New revision for dev build 2024-10-22 19:57:45 -04:00
Raymond Hill
76041bdc64 Update changelog 2024-10-22 19:57:11 -04:00
Raymond Hill
2621c908c3 Remove 64:ff9b: as private network block
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3426
2024-10-22 19:49:29 -04:00
Nadav Mermer
2782b16ecf Allow rulesets enabled in manifest.json to stay enabled when finding language defaults 2024-10-20 18:10:23 +03:00
Raymond Hill
b3408a46d1 Fix spurious error message re. bootstrap() not being present
Need `?.` before parenthesis for optional chaining to apply on
method call.

Related commit:
https://github.com/gorhill/uBlock/commit/5133991f7e
2024-10-19 12:09:48 -04:00
Raymond Hill
d4f15ca635 [mv3] Fix regression in extended filtering with some lists
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/236

Regression from:
https://github.com/gorhill/uBlock/commit/58bfe4c846

Cosmetic- and scriptlet injection-based filters broke with filter
lists using AdGuard's `[$domain=/.../]` syntax.

Potentially affected filter lists:
- AdGuard Chinese
- AdGuard Turkish
2024-10-19 10:41:58 -04:00
Raymond Hill
12435d96cc Make Firefox dev build auto-update 2024-10-17 13:05:37 -04:00
Raymond Hill
d5e662a50f New revision for dev build 2024-10-17 12:45:04 -04:00
Raymond Hill
0425bdfd35 Import translation work from https://crowdin.com/project/ublock 2024-10-17 12:44:02 -04:00
Raymond Hill
27f3612fdf [mv3] Set Optimal as default if extension broad permission at install time
This is to prepare uBOL to be ready to set Optimal mode as default
if ever Chromium-based browsers support a way to pre-grant broad host
permissions in a policy.

Related issue:
https://github.com/uBlockOrigin/uBOL-home/discussions/232
https://github.com/uBlockOrigin/uBOL-home/discussions/135
2024-10-17 12:37:21 -04:00
Raymond Hill
89c353640e [mv3] Add EST-0 list 2024-10-17 12:27:49 -04:00
Raymond Hill
4291c874d9 Fix regression in prevent-xhr scriptlet
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3418
2024-10-17 12:11:50 -04:00
Raymond Hill
98db549bb7 Make Firefox dev build auto-update 2024-10-16 08:56:20 -04:00
Raymond Hill
e6b7f06ab4 New revision for dev build 2024-10-16 08:29:52 -04:00
Raymond Hill
e9c0ad59dd Update changelog 2024-10-16 08:29:25 -04:00
Raymond Hill
32f27c5131 Ensure urlskip= redirects only to https: 2024-10-16 08:25:56 -04:00
Raymond Hill
94ca27acd1 Make Firefox dev build auto-update 2024-10-12 09:25:59 -04:00
Raymond Hill
6df1ea8cd6 New revision for dev build 2024-10-12 08:56:20 -04:00
Raymond Hill
3e7a79ebef Update changelog 2024-10-12 08:55:54 -04:00
Raymond Hill
ce9fc5dc14 Add support to urlskip= media resources
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2406777654
2024-10-12 08:52:05 -04:00
Raymond Hill
2c60bb3b07 [mv3] Issue labels cannot be set client-side 2024-10-11 16:41:13 -04:00
Raymond Hill
44bcb5fd99 Make Firefox dev build auto-update 2024-10-11 09:15:40 -04:00
Raymond Hill
f5a7053acb New revision for dev build 2024-10-11 09:07:12 -04:00
Raymond Hill
d0ae3c3e77 Update changelog 2024-10-11 09:06:49 -04:00
Raymond Hill
b8959dcca9 Comment 2024-10-11 09:04:23 -04:00
Raymond Hill
caba9cdefa Use uBO's default listset 2024-10-11 09:03:30 -04:00
Raymond Hill
01eebffc1f Add -uricomponent to urlskip= option
To unescape URI-encoded characters.

Related discussion:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2406479971
2024-10-11 08:56:50 -04:00
Fanboynz
4d982d9972 Add forbidden/forever values (#3925) 2024-10-11 08:26:37 -04:00
Raymond Hill
e5d16a1883 Typo 2024-10-10 11:35:58 -04:00
Raymond Hill
3cee922e68 Make Firefox dev build auto-update 2024-10-10 11:35:40 -04:00
Raymond Hill
9e3c978d55 Minor edit to comment 2024-10-10 11:31:57 -04:00
Raymond Hill
2e1dac5950 New revision for dev build 2024-10-10 11:22:44 -04:00
Raymond Hill
0c462e3ca1 Update changelog 2024-10-10 11:22:23 -04:00
Raymond Hill
c86ed5287b Add regex extraction transformation step to urlskip= option
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2403795984

The first capture group of the regex will be used as the result of the
transformation. Example:

||podtrac.com/pts/redirect.mp3/$urlskip=/podtrac\.com\/pts\/redirect\.mp3\/(.*?\.mp3\b)/ +https

If the regex is invalid, or if it fails to extract a first capture
group, no redirection will occur.
2024-10-10 11:11:07 -04:00
Raymond Hill
913f20f0a8 Make Firefox dev build auto-update 2024-10-08 19:56:23 -04:00
Raymond Hill
a72def1cbf New revision for dev build 2024-10-08 19:50:34 -04:00
Raymond Hill
987e198016 Update changelog 2024-10-08 19:50:14 -04:00
Raymond Hill
85877b12ed Improve prevent-window-open scriptlet
Support triggering a `debugger` statement when `window.open()` is
called.

Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25510#issuecomment-2400067735
2024-10-08 19:47:35 -04:00
Raymond Hill
58bfe4c846 Add support to parse Adguard's [$domain=/.../] regex-based modifier
The modifier will be converted to one that is compatible with uBO, i.e.:

    [$domain=/^trgoals\d+\.xyz$/]##+js(set-constant, isShow, true)

Will parsed as equivalent of:

    /^trgoals\d+\.xyz$/##+js(set-constant, isShow, true)

Related issue:
https://github.com/AdguardTeam/FiltersCompiler/issues/204

Reference:
https://adguard.com/kb/general/ad-filtering/create-own-filters/#non-basic-domain-modifier
2024-10-08 19:19:08 -04:00
Raymond Hill
ec3852b745 Re-word: it's timing per request, not per call to SNFE.match()
A single request can require multiple calls to the static network
filtering engine (SNFE). The reported timing is the result of
going through *all* the required calls to SNFE. In effect, a
single call to SNFE.match() is a fraction of the reported timing.
2024-10-07 15:06:12 -04:00
Raymond Hill
a80c749096 Make Firefox dev build auto-update 2024-10-07 12:05:41 -04:00
Raymond Hill
f825a65f8e New revision for dev build 2024-10-07 12:00:21 -04:00
Raymond Hill
4aae1bdf47 Minor code review 2024-10-07 11:56:22 -04:00
Raymond Hill
daa62c3081 Update README for npm package 2024-10-07 08:56:34 -04:00
Raymond Hill
9a286495a5 New npm version 2024-10-07 08:49:09 -04:00
Raymond Hill
34508a1c2d Add demo.js to npm build
To help people to get quickly started with using the package.
2024-10-07 08:47:45 -04:00
Raymond Hill
26c0aa357e New npm version 2024-10-07 07:38:41 -04:00
Raymond Hill
013e6db6ef Fix typo 2024-10-06 17:05:44 -04:00
Raymond Hill
acf7f39a60 New revision for npm package 2024-10-06 17:04:08 -04:00
Raymond Hill
86aeae75df Further fix npm documentation, minor code review 2024-10-06 17:03:18 -04:00
Raymond Hill
9233e6b7c6 Fix npm documentation
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3402
2024-10-06 16:29:42 -04:00
Raymond Hill
ccbf957f55 Make Firefox dev build auto-update 2024-10-06 15:06:21 -04:00
Raymond Hill
1f32bbc322 New revision for dev build 2024-10-06 14:57:07 -04:00
Raymond Hill
cc60dfa4c5 Update changelog 2024-10-06 14:56:47 -04:00
Raymond Hill
c746633693 Validate result type of XPath expressions
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3403

To ensure XPath expressions not meant to return a nodeset are
discarded at compile time.
2024-10-06 14:27:55 -04:00
Raymond Hill
447476ab9b New npm package version 2024-10-06 14:27:46 -04:00
Raymond Hill
a12bf9405e Make Firefox dev build auto-update 2024-10-06 12:40:51 -04:00
Raymond Hill
e0eb59c5d4 New revision for dev build 2024-10-06 12:34:58 -04:00
Raymond Hill
5700424716 Update changelog 2024-10-06 12:34:26 -04:00
Raymond Hill
818cb2d801 Fix npm test suite
Related commits:
- https://github.com/gorhill/uBlock/commit/02cba63331
- https://github.com/gorhill/uBlock/commit/41693407b2
2024-10-06 11:15:08 -04:00
Raymond Hill
160d7f3c33 Improve trusted-override-element-method scriptlet
Support `debug` as valid `disposition` value: to trigger a `debugger`
statement, but only if uBO's logger is opened.

Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25510#issuecomment-2395446342
2024-10-06 11:07:42 -04:00
Raymond Hill
1f45902a61 Make Firefox dev build auto-update 2024-10-05 16:21:29 -04:00
Raymond Hill
4775c9cb45 New revision for dev build 2024-10-05 16:10:03 -04:00
Raymond Hill
4c1b1d4cdb Update changelog 2024-10-05 16:09:41 -04:00
Raymond Hill
64b2086ba4 Add ability to lookup parameter name in urlskip=
Relate case:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2395121619

Newly supported step: `&i`, meant to lookup a parameter's name at
position `i` (1-based). The parameter name will be used as the
URL (whereas `?` is meant to lookup a parameter's value).
2024-10-05 14:59:43 -04:00
Raymond Hill
02cba63331 Partially revert 4169340 2024-10-05 14:51:38 -04:00
Raymond Hill
5f2ee6caf8 Make Firefox dev build auto-update 2024-10-05 14:00:44 -04:00
Raymond Hill
73404e5988 New revision for dev build 2024-10-05 13:30:49 -04:00
Raymond Hill
5145747ac7 Update chengelog 2024-10-05 13:30:18 -04:00
Raymond Hill
6d2b3375f8 Mind that BroadcastChannel contructor can throw in Firefox
BroadcastChannel constructor throws in Firefox when Enhanced
Tracking Protection is set to "strict".

This behavior could cause scriptlet injection to wholly break
when uBO's logger was opened, as BroadcastChannel() is used
by scriptlets to report information to the logger.

This commit ensures that exceptions from BroadcastChannel
constructor are properly handled.

The scriptlets will fall back to report at the console should
they be unable to report to the logger through BroadcastChannel.
2024-10-05 12:42:30 -04:00
Raymond Hill
41693407b2 Fix npm test suite
Ensure serialization returns copy of data rather than live
references to data. This allows to immediately deserialize() the
result of serialize().

Also, adjust code to modified behavior of filterQuery().
2024-10-05 11:32:59 -04:00
Raymond Hill
3b53d8e5b7 Update changelog 2024-10-05 08:43:14 -04:00
Raymond Hill
95b0ce5e3a Add trusted-override-element-method scriptlet
@description
Override the behavior of a method on matching elements.

@param methodPath
The method which calls must be intercepted.

@param [selector]
A CSS selector which the target element must match. If not specified,
the override will occur for all elements.

@param [disposition]
How the override should be handled. If not specified, the overridden call
will be equivalent to an empty function. If set to `throw`, an exception
will be thrown. Any other value will be validated and returned as a
supported safe constant.

@example
..##+js(trusted-override-element-method, HTMLAnchorElement.prototype.click, a[target="_blank"][style])
2024-10-05 08:35:43 -04:00
Raymond Hill
a0a33eb9b9 Code review for new trusted-prevent-dom-bypass scriptlet
Related commit:
https://github.com/gorhill/uBlock/commit/1abc864742
2024-10-05 07:41:44 -04:00
Raymond Hill
05ba71aef0 Make Firefox dev build auto-update 2024-10-04 13:30:54 -04:00
Raymond Hill
d24ffe6bb8 Import translation work from https://crowdin.com/project/ublock 2024-10-04 12:30:37 -04:00
Raymond Hill
fccda96bd7 New revision for dev build 2024-10-04 12:28:25 -04:00
Raymond Hill
5e2f94bebc New revision for dev build 2024-10-04 12:27:57 -04:00
Raymond Hill
1abc864742 Add trusted-prevent-dom-bypass scriptlet
@description
Prevent the bypassing of uBO scriptlets through anonymous embedded context.

To ensure that a target method in the embedded context is using the
corresponding parent context's method (which is assumed to be
properly patched), or to replace the embedded context with that of the
parent context.

Root issue:
https://issues.chromium.org/issues/40202434

@param methodPath
The method which calls must be intercepted. The arguments
of the intercepted calls are assumed to be HTMLElement, anything else will
be ignored.

@param selector (optional)
A plain CSS selector which will be used in a `document.querySelector()`
call, to validate that the returned element must be processed by the
scriptlet. If no selector is provided, all elements will be processed.

@param targetMethod (optional)
The method in the embedded context which should be delegated to the
parent context. If no method is specified, the embedded context becomes
the parent one, i.e. all  properties of the embedded context will be that
of the parent context.
2024-10-04 12:24:35 -04:00
Raymond Hill
5133991f7e Fix spurious error in content script
No guarantee vAPI.bootstrap will still be present when callback
executes.
2024-10-04 08:57:10 -04:00
Ilya (Marshal)
9f4123a4e2 Fix AdGuard Knowledge Base URLs 2024-10-04 11:27:24 +02:00
Raymond Hill
8196b99e9d Make Firefox dev build auto-update 2024-10-03 13:51:14 -04:00
Raymond Hill
89a1fd5b0e New revision for dev build 2024-10-03 13:42:24 -04:00
Raymond Hill
f3bc426a57 Update changelog 2024-10-03 13:42:03 -04:00
Raymond Hill
fe49ced2ac Imrpove prevent-xhr scriptlet; add trusted-prevent-xhr scriptlet
Add support for synchronous `send()` calls.

`trusted-prevent-xhr` is essentially the same as `prevent-xhr` except
that if the `directive` argument is not a known token, it will be
used as is as the response text of the xhr request, whereas `prevent-xhr`
returns an empty string when the directive is unknown.
2024-10-03 13:31:52 -04:00
Raymond Hill
bcb31db176 Update changelog 2024-10-02 15:11:26 -04:00
Raymond Hill
b25d2153af Make Firefox dev build auto-update 2024-10-02 15:05:42 -04:00
Raymond Hill
ce8cc4793c Update changelog 2024-10-02 14:58:39 -04:00
Raymond Hill
99593f82f4 New revision for dev build 2024-10-02 14:58:31 -04:00
Raymond Hill
4305bfbdb1 Skip dns resolution when requests are proxied through http
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3396

Reference:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy/ProxyInfo#type_2
2024-10-02 14:51:26 -04:00
Raymond Hill
73ce4e6bcf Blocking large media elements also prevents autoplay, regardless of size
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3394

When the "No large media elements" per-site switch is toggled on,
it will also act to prevent autoplay of video/audio media, regardless
of their size. This also works for xhr-based media streaming.

If blocking by size is not desirable while blocking autoplay is
desired, one can toggle on "No large media elements" switch while
setting "Block media elements larger than ..." to a very high value.
2024-10-02 13:39:36 -04:00
Raymond Hill
0b02c7ccb6 Import translation work from https://crowdin.com/project/ublock 2024-10-01 12:27:56 -04:00
Raymond Hill
6cac645830 Do not discard !#else block for unknown preprocessor tokens
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3393
2024-09-30 10:16:48 -04:00
Raymond Hill
3d6984aeaf Import translation work from https://crowdin.com/project/ublock 2024-09-29 17:06:51 -04:00
Raymond Hill
63cf3dc959 Make Firefox dev build auto-update 2024-09-29 12:50:55 -04:00
Raymond Hill
c6baa2fb51 Import translation work from https://crowdin.com/project/ublock 2024-09-29 11:15:04 -04:00
Raymond Hill
7a9481b5a5 New revision for dev build 2024-09-29 10:57:12 -04:00
Raymond Hill
a2f81f19ff Update changelog 2024-09-29 10:56:54 -04:00
Raymond Hill
e81e70937f Add ability to decode base64 in urlskip=
Related case:
https://github.com/uBlockOrigin/uAssets/issues/25467

New step: `-base64`
Purpose: to decode base64-encoded output of previous step
2024-09-29 10:51:56 -04:00
Raymond Hill
7f117e8d21 Import translation work from https://crowdin.com/project/ublock 2024-09-28 14:14:26 -04:00
Raymond Hill
99191d1363 Import translation work from https://crowdin.com/project/ublock 2024-09-28 14:12:13 -04:00
Raymond Hill
560def639f [mv3] Add a _chat_ icon in popup panel to report filter issues
Just the same as with uBO, but for uBOL.
2024-09-28 14:08:42 -04:00
Raymond Hill
dcb86e3667 Update README.md 2024-09-27 11:04:42 -04:00
Raymond Hill
5425ac2375 Make Firefox dev build auto-update 2024-09-26 13:40:44 -04:00
Raymond Hill
7b585a733a New revision for dev build 2024-09-26 13:32:50 -04:00
Raymond Hill
82ab15f856 Update changelog 2024-09-26 13:32:24 -04:00
Raymond Hill
aec0bd39e3 Fix images not properly downloading on click
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/1670#issuecomment-2372048056

The issue affected images supporting `srcset` attribute without
the presence of `src` attribute. This commit takes add fallback
onto `srcset` attribute when the `src` attribute is not present.
2024-09-26 13:27:06 -04:00
Raymond Hill
03df1a40d8 New version for stable release 2024-09-26 10:13:24 -04:00
Raymond Hill
ff57f01026 Code review of fix re "internal error"
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/199
2024-09-22 12:14:52 -04:00
Raymond Hill
687475ebf2 Make Firefox dev build auto-update 2024-09-22 12:01:33 -04:00
Raymond Hill
854c1ee4cc New revision for release candidate 2024-09-22 11:53:54 -04:00
Raymond Hill
4c5a9353b0 Import translation work from https://crowdin.com/project/ublock 2024-09-22 11:50:20 -04:00
Raymond Hill
bd6d9c3296 Fix benchmark quirk related to new ipaddress option 2024-09-22 11:16:57 -04:00
Raymond Hill
e7c783cefa Code review for new DNS cache code
Prevent discarding DNS cache entries looked up during a passive
read. Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3376#discussioncomment-10711948

Add advanced setting `dnsCacheTTL` to control the TLL (in
seconds) of DNS cache entries. Default to 600 (10 minutes).
2024-09-22 10:02:45 -04:00
Raymond Hill
1c97ca10fc Minor code review
Use class fields to declare/initialize instance and static
properties.
2024-09-21 12:41:57 -04:00
Raymond Hill
f84b3e4ce9 Revert "Minor code review"
This reverts commit 76e035989f.
2024-09-20 17:52:31 -04:00
Raymond Hill
76e035989f Minor code review 2024-09-20 11:40:03 -04:00
Raymond Hill
37da838255 Make Firefox dev build auto-update 2024-09-20 09:26:10 -04:00
Raymond Hill
63f0a2b912 New revision for release candidate 2024-09-20 09:17:10 -04:00
Raymond Hill
055973cc3f Import translation work from https://crowdin.com/project/ublock 2024-09-20 09:16:32 -04:00
Raymond Hill
59487b189c Add +https directive to urlskip= option
When present, the `+https` directive will force the protocol of the
resulting URL to be `https:`.

Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206#issuecomment-2363392357
2024-09-20 08:15:31 -04:00
Raymond Hill
4f181b0bc5 Support matching against list of IP addresses
Related commit:
6acf97bf51
2024-09-20 07:20:55 -04:00
Raymond Hill
55ab6d6875 Make Firefox dev build auto-update 2024-09-19 09:06:24 -04:00
Raymond Hill
1139085ca5 Update changelog 2024-09-19 08:56:36 -04:00
Raymond Hill
760b2ffce6 Add advanced setting dnsResolveEnabled
Default to `true`.

Set to `false` to wholly disable calls to `dns.resolve()` (Firefox-
only). Disabling calls to `dns.resolve()` will prevent cname-uncloaking
and will limit ability to enforce `ipaddress` filter option.
2024-09-19 08:43:54 -04:00
Raymond Hill
b01a418073 Add filtering output expressionsreplace/urlskip to logger
Additioanlly, removed `uritransform` as it is currently barely used,
if at all.
2024-09-19 08:08:49 -04:00
Raymond Hill
4ccc0d0fda Minimize memory allocation in scriptlet helper proxy-apply-fn
Probably beneficial in cases of proxied method called in a tight
loop.

Additionally, added `throwFunc` as valid constant in script helper
`validate-constant.fn`. Does what the name implies.
2024-09-19 07:49:54 -04:00
Raymond Hill
e98fdeb0a5 Mind urlskip= in built-in benchmark 2024-09-18 12:24:04 -04:00
Raymond Hill
7843a21428 Make Firefox dev build auto-update 2024-09-18 11:56:22 -04:00
Raymond Hill
60039ab133 New revision for release candidate 2024-09-18 11:37:06 -04:00
Raymond Hill
b06c5337ec Update changelog 2024-09-18 11:36:39 -04:00
Raymond Hill
0a6dc47a72 Fix contextual menu quirks
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3382
2024-09-18 11:33:31 -04:00
Raymond Hill
b3ffba7238 Fine tune indent rules 2024-09-18 11:32:16 -04:00
Raymond Hill
11c3a16036 Fix exception thrown in spoof-css in Firefox
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25358#issuecomment-2358278979
2024-09-18 10:34:18 -04:00
Raymond Hill
62d74d4f1d Add trailing wildcard syntax to ipaddress= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3381
2024-09-18 09:56:46 -04:00
Raymond Hill
f0f859c685 Make Firefox dev build auto-update 2024-09-17 18:16:11 -04:00
Raymond Hill
4094f43daf New revision for release candidate 2024-09-17 18:10:32 -04:00
Raymond Hill
fe3846b72f Oops meant to be 5s, not 300s... 2024-09-17 18:10:09 -04:00
Raymond Hill
11f43d4a3d Make Firefox dev build auto-update 2024-09-17 18:00:42 -04:00
Raymond Hill
3238fe48db Import translation work from https://crowdin.com/project/ublock 2024-09-17 17:48:45 -04:00
Raymond Hill
2375ca3ca0 Update changelog 2024-09-17 17:36:12 -04:00
Raymond Hill
00d4262c0d New revision for release candidate 2024-09-17 17:35:22 -04:00
Raymond Hill
e8f6f3ddff Throttle down repeated scriptlet logging information
Related feedback
https://github.com/uBlockOrigin/uBlock-issues/issues/3378#issuecomment-2356422784
2024-09-17 17:33:06 -04:00
Raymond Hill
acffae6a21 Make Firefox dev build auto-update 2024-09-17 10:36:08 -04:00
Raymond Hill
58c13bacb7 new revision for release candidate 2024-09-17 10:28:54 -04:00
Raymond Hill
6a042f152b Ignore browser-provided 0.0.0.0 ip address when DNS is proxied
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3379
2024-09-17 10:26:40 -04:00
Raymond Hill
d238baa374 Make Firefox dev build auto-update 2024-09-17 09:35:36 -04:00
Raymond Hill
7fb626850e New revision for release candidate 2024-09-17 09:28:31 -04:00
Raymond Hill
9155a89c08 Update changelog 2024-09-17 09:28:02 -04:00
Raymond Hill
547fae4842 Improve scriptlet helper proxy-apply
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3378
2024-09-17 09:09:19 -04:00
Raymond Hill
ef1e134460 Import translation work from https://crowdin.com/project/ublock 2024-09-15 13:27:32 -04:00
Raymond Hill
b62aabda85 Import translation work from https://crowdin.com/project/ublock 2024-09-15 13:25:58 -04:00
Raymond Hill
e18a3707c7 Add an entry in _Report_ page for badware/phishing category
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3151

Entry:
"Add an entry in the reporting tool for badware issues"
2024-09-15 13:20:47 -04:00
Raymond Hill
a9d8e96675 Update changelog 2024-09-15 10:38:52 -04:00
Raymond Hill
5fda425059 Make Firefox dev build auto-update 2024-09-15 09:51:42 -04:00
Raymond Hill
096b4d9e81 New revision for dev build 2024-09-15 09:46:06 -04:00
Raymond Hill
b79fe942e1 Update changelog 2024-09-15 09:45:33 -04:00
Raymond Hill
266ec4894b New static network filter option urlskip=
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3206

The main purpose is to bypass URLs designed to track whether a user
visited a specific URL, typically used in click-tracking links.

The `urlskip=` option ...

- ... is valid only when used in a trusted filter list
- ... is enforced only on top documents
- ... is enforced on both blocked and non-blocked documents
- ... is a modifier, i.e. it cannot be used along with other
      modifier options in a single filter

The syntax is `urlskip=[steps]`, where steps is a space-separated
list of extraction directives detailing what action to perform on
the current URL.

The only supported directive in this first commit is `?name`,
which purpose is to extract the value of a named URL parameter
and use the result as the new URL. Example:

  ||example.com/path/to/tracker$urlskip=?url

The above filter will cause navigation to

  https://example.com/path/to/tracker?url=https://example.org/

to automatically bypass navigation to `example.com` and navigate
directly to

  https://example.org/

It is possible to recursively extract URL parameters by using
more than one directive, example:

  ||example.com/path/to/tracker$urlskip=?url ?to

More extraction capabilities may be added in the future.
2024-09-15 09:17:19 -04:00
Raymond Hill
4b285c0593 Dynamically load DNR conversion module on-demand
DNR conversion module is a dev tool, no point loading it by
default. This was done this way because in a distant past uBO
had to be compatible with browsers not supporting dynamically
loaded modules.

Currently all supported browser versions support dynamically
loaded modules.
2024-09-14 12:13:47 -04:00
Raymond Hill
c265e849e0 Fetch and cache cname of collated hostnames in page store
Related feedback:
https://github.com/uBlockOrigin/uBlock-issues/discussions/3376
2024-09-14 11:50:10 -04:00
Raymond Hill
f936dfa648 Fix potential failure to unregister scriptlet
In Firefox-specific contentScripts API used to register
scriptlets. This could potentially occurs when there are
registrations pending during a reload of filter lists.
2024-09-14 09:32:37 -04:00
Raymond Hill
41d49921c8 Minor code review 2024-09-14 09:20:54 -04:00
Raymond Hill
f9ab4b7504 Make Firefox dev build auto-update 2024-09-14 00:15:41 -04:00
Raymond Hill
42700a6f76 New revision for dev build 2024-09-14 00:12:00 -04:00
Raymond Hill
5e6f78a902 Fix regression re. mp4 filter option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3375
2024-09-14 00:10:34 -04:00
Raymond Hill
93042eced4 Use dummy dns API when it's not present 2024-09-13 11:20:37 -04:00
Raymond Hill
d1db02b04c Make Firefox dev build auto-update 2024-09-13 10:11:27 -04:00
Raymond Hill
63e5611877 New revision for dev build 2024-09-13 10:04:13 -04:00
Raymond Hill
73ee3ffe92 Code review of DNS-related code
Related commit:
6acf97bf51
2024-09-13 10:00:41 -04:00
Raymond Hill
8fadfb2c5e Import translation work from https://crowdin.com/project/ublock 2024-09-12 15:40:24 -04:00
Raymond Hill
671b0c540c Make Firefox dev build auto-update 2024-09-12 12:06:26 -04:00
Raymond Hill
9b967eccc8 New revision for dev build 2024-09-12 11:42:03 -04:00
Raymond Hill
71f07b18ae Update changelog 2024-09-12 11:41:26 -04:00
Raymond Hill
6acf97bf51 Rewrite cname uncloaking code to account for new ipaddress= option
This commit makes the DNS resolution code better suited for both
filtering on cname and ip address. The change allows early availability
of ip address so that `ipaddress=` option can be matched at
onBeforeRequest time.

As a result, it is now possible to block root document using
`ipaddress=` option -- so long as an ip address can be extracted
before first onBeforeRequest() call.

Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/2792

Caveat
------

the ip address used is the first one among the list of ip
addresses returned by dns.resolve() method. There is no way for uBO
to know which exact ip address will be used by the browser when
sending the request, so this is at most a best guess. The exact IP
address used by the browser is available at onHeadersReceived time,
and uBO will also filter according to this value, but by then the
network request has already been sent to the remote server.

Possibly a future improvement would make available the whole list
of ip addresses to the filtering engine, but even then it's impossible
to know with certainty which ip address will ultimately be used by the
browser -- it is entirely possible that the ip address used by the
browser might not be in the list received through dns.resolve().
2024-09-12 11:19:57 -04:00
Raymond Hill
44b6519db1 Make Firefox dev build auto-update 2024-09-11 10:41:19 -04:00
Raymond Hill
0e2f04eb2b New revision for dev build 2024-09-11 10:21:50 -04:00
Raymond Hill
099b9852cd Code review for ipaddress= filter option
If an IP address can be extracted from the hostname portion of
a URL, the IP address matching will be performed at onBeforeRequest()
time.

Regardless, IP address matching will subsequently always be performed
at onHeadersReceived() time as the request details at that point
contain a reliable IP address value on supported platforms (Firefox-
only as of now).

The `cap_ipaddress` now evaluates to `true` in Chromium-based
browsers. Even though these browsers are unable to provide reliable
IP address value at onHeadersReceived() time, they can still
perform IP address matching for IP address extracted from hostname
portion of a URL.
2024-09-11 09:56:44 -04:00
Raymond Hill
c19497db33 Update changelog 2024-09-10 15:13:28 -04:00
Raymond Hill
d5f14ffa32 Avoid using dns.resolve() for proxied DNS resolution
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1743
2024-09-10 14:58:40 -04:00
Raymond Hill
09ccfc8cfb Make Firefox dev build auto-update 2024-09-10 12:11:03 -04:00
Raymond Hill
0ae02788b2 New revision for dev build 2024-09-10 11:56:13 -04:00
Raymond Hill
185580d23f Update changelog 2024-09-10 11:55:53 -04:00
Raymond Hill
401d2e8ea9 [mv3] Mind unsupported header=/ipaddress options in DNR API
Properly report unsupported `header=` and `ipaddress=` option in
log file.

`header=` support may become possible soon with Chromium 128
introducing blocking according to response headers content.
2024-09-10 11:50:09 -04:00
Raymond Hill
030d7334e4 Add support for lan/loopback values to ipaddress= option
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/1070
2024-09-10 11:11:11 -04:00
Raymond Hill
839857dd4b Make Firefox dev build auto-update 2024-09-09 11:15:41 -04:00
Raymond Hill
faf1b15f8d New revision for dev build 2024-09-09 10:55:57 -04:00
Raymond Hill
52dee35325 Properly reflect whether ipaddress= is supported 2024-09-09 10:54:47 -04:00
Raymond Hill
41c96690a5 Make Firefox dev build auto-update 2024-09-09 10:06:34 -04:00
Raymond Hill
7732df1dbd New revision for dev build 2024-09-09 09:51:45 -04:00
Raymond Hill
2cb2ee8446 Update changelog 2024-09-09 09:51:24 -04:00
Raymond Hill
c6dedd253f New static network filter option ipaddress=
The purpose is to block according to the ip address of a network
request. In the current implementation, the filter option can only
be enforced at onHeadersReceived time.

The new filter option cannot be enforced in Chromium-based browsers
since the ip address of network requests is available only at
onResponseStarted time, which is not blocking.

The value assigned to `ipaddress` can either be a plain string which
must match exactly a given ip address, or a regex which will be
matched against the ip address.

The `ipaddress` option can only be enforced when the extension
framework does provide a valid ip address in a onHeadersReceived
listener. For instance, cached resources do not have a valid ip
address and thus can't be a match to `ipaddress` option.

Example:

  *$script,ipaddress=93.184.215.14
2024-09-09 09:35:23 -04:00
Raymond Hill
20115697e5 Add ability to quote static network option values
For the sake of convenience for filter list maintainers, this commit
add ability to quote static network option values, so as to avoid the
need to escape commas when parser ambiguity arises.

The quotes can be `"`, `'`, or backticks.

Example, the following filter requires escaping commas:

  example.com$xhr,replace=/"loremIpsum.*?([A-Z]"\}|"\}{2\,4})\}\]\,//,1p

Can be now rewritten with no need to escape when using quotes:

  example.com$xhr,replace='/"loremIpsum.*?([A-Z]"\}|"\}{2,4})\}\],//',1p
2024-09-08 10:01:13 -04:00
Raymond Hill
1b464f75cc Fix spurious browser error at the console 2024-09-07 16:47:43 -04:00
Raymond Hill
bec5d53ce0 [mv3] Attempt at mitigation for when "internal error" occurs
Related issue:
https://github.com/uBlockOrigin/uBOL-home/issues/199
2024-09-06 09:31:17 -04:00
Raymond Hill
08e5bffc76 Make Firefox dev build auto-update 2024-09-05 15:01:24 -04:00
Raymond Hill
8981d3e7fe New revision for dev build 2024-09-05 14:52:19 -04:00
Raymond Hill
901b4ad061 Import changes from https://github.com/gorhill/uBlock/pull/3924 2024-09-05 14:51:47 -04:00
Imre Eilertsen
8631b955bf Maintenance for the Serbo-Croatian Filters section (#3924)
* Maintenance for the Serbo-Croatian Filters section

* Implemented the request to move to contentURLs

I sure I hope I understood the request correctly, or things would get slightly awkward for me.
2024-09-05 14:49:32 -04:00
Raymond Hill
60a009c530 Further improve prevent-fetch scriptlet 2024-09-05 11:17:36 -04:00
Raymond Hill
1dc09b6217 Make Firefox dev build auto-update 2024-09-04 11:56:02 -04:00
Raymond Hill
ae9acbf521 New revision for dev build 2024-09-04 11:37:35 -04:00
Raymond Hill
f4a75ccd80 Update changelog 2024-09-04 11:37:14 -04:00
Raymond Hill
e8202af11d Improve prevent-fetch scriptlet
- Add support for negated matches
- Log caller's arguments when verbose logging is enabled
2024-09-04 11:32:26 -04:00
Raymond Hill
89f02098fd Apply CSP/PP injections to object resources
Related feedback:
https://old.reddit.com/r/uBlockOrigin/comments/1f84tc5/
2024-09-04 11:28:45 -04:00
Raymond Hill
22fb9c4d63 Make Firefox dev build auto-update 2024-09-03 12:01:04 -04:00
Raymond Hill
08ed4b4ed8 New revision for dev build 2024-09-03 11:19:13 -04:00
Raymond Hill
6e426aeac3 Update changelog 2024-09-03 11:18:52 -04:00
Raymond Hill
c8307f58a3 Improve xml-prune scriptlet
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25164#issuecomment-2326358453
2024-09-03 11:15:16 -04:00
Raymond Hill
91125d29cf Add support for application/dash+xml in replace= option
Related feedback:
https://github.com/uBlockOrigin/uAssets/issues/25164#issuecomment-2326358453
2024-09-03 10:14:15 -04:00
Raymond Hill
856dc419b5 Make Firefox dev build auto-update 2024-09-02 19:55:53 -04:00
Raymond Hill
4310732b98 New revision for dev build 2024-09-02 19:49:49 -04:00
Raymond Hill
969d3cb40b Update changelog 2024-09-02 19:49:31 -04:00
Raymond Hill
b7ed3b45ed Add ability to directly evaluate static network filtering engine
Related issue:
https://github.com/uBlockOrigin/uBlock-issues/issues/3362

There used to be a way to test URL against the network filtering engine,
but this was removed in a distant past during refactoring.

The ability has been brought back through uBO's own developer tools,
accessible through the _More_ button in the _Support_ pane in the
dashboard.

To query the static network filtering engine, enter the following
in the text editor:

snfe?url-to-test [type] [url-of-context]

`snfe?` is a prompt indicating the intent to query the static network
filtering engine.

At a minimum there must be a URL to test.

Optionally the type of the resource to match, default to `xhr` if
none specified. Also optionally, the context from within which the
request is made. Example:

Enter:
snfe?https://www.google-analytics.com/analytics.js

Result:
url: https://www.google-analytics.com/analytics.js
blocked: ||google-analytics.com^

Enter:
snfe?https://www.google-analytics.com/analytics.js script

Result:
url: https://www.google-analytics.com/analytics.js
type: script
blocked: ||google-analytics.com^
modified: ||google-analytics.com/analytics.js$script,redirect-rule=google-analytics_analytics.js:5

Enter:
snfe?https://example.com/

Result:
url: https://example.com/
not blocked

Enter:
snfe?https://example.com/ ping

Result:
url: https://example.com/
type: ping
blocked: *$ping,3p
2024-09-02 19:32:56 -04:00
Raymond Hill
eef99e9db6 Make Firefox dev build auto-update 2024-08-31 13:11:29 -04:00
Raymond Hill
73e0cc7163 New revision for dev build 2024-08-31 12:48:12 -04:00
Raymond Hill
17183f7de5 Update changelog 2024-08-31 12:47:38 -04:00
Raymond Hill
f552f655cb Fix prevent-window-open for when logger is open
Related discussion:
https://github.com/uBlockOrigin/uBlock-discussions/discussions/906
2024-08-31 12:36:20 -04:00
Raymond Hill
66cf6f0a14 Make Firefox dev build auto-update 2024-08-30 10:56:51 -04:00
525 changed files with 49636 additions and 21346 deletions

View File

@@ -1,28 +0,0 @@
env:
browser: true
es2022: true
extends: eslint:recommended
parserOptions:
sourceType: module
rules:
eqeqeq:
- warn
- always
indent:
- error
- 4
- ignoredNodes:
- Program > IfStatement > BlockStatement
- Program > ExpressionStatement > CallExpression > ArrowFunctionExpression > BlockStatement
- Program > ExpressionStatement > CallExpression > FunctionExpression > BlockStatement
- CallExpression > MemberExpression
- ArrayExpression > *
- ObjectExpression > *
no-control-regex: off
no-empty: off
sort-imports: warn
strict: warn
globals:
browser: readonly
chrome: readonly
vAPI: readonly

View File

@@ -10,5 +10,5 @@ contact_links:
url: https://github.com/uBlockOrigin/uAssets/issues
about: Report issues with filter lists or broken website functionality in the uAssets issue tracker.
- name: uBO Lite (uBOL) Issues
url: https://github.com/uBlockOrigin/uBOL-issues/issues
url: https://github.com/uBlockOrigin/uBOL-home/issues
about: Report issues specific to the Manifest Version 3 (MV3) variant in the uBOL issue tracker.

7
.github/workflows/RELEASE.HEAD.md vendored Normal file
View File

@@ -0,0 +1,7 @@
[Commits to Master Since This Release](https://github.com/gorhill/uBlock/compare/%version%...master)
#### How to Install the Developer Build:
- **Firefox**: Signing pending <!-- Download the build from [uBlock0_%version%.firefox.signed.xpi](https://github.com/gorhill/uBlock/releases/download/%version%/uBlock0_%version%.firefox.signed.xpi). -->
uBO works best on Gecko-based browsers, check out [why](https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox).
- **Chromium**: Install directly from the [Chrome Web Store](https://chromewebstore.google.com/detail/ublock-origin-development/cgbcahbpdhpcegmbfconppldiemgcoii).

View File

@@ -7,9 +7,6 @@ on:
permissions:
contents: read
# I used the following project as template to get started:
# https://github.com/dessant/search-by-image/blob/master/.github/workflows/ci.yml
jobs:
build:
permissions:
@@ -25,66 +22,29 @@ jobs:
- name: Clone uAssets
run: |
tools/pull-assets.sh
# https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
- name: Get release information
id: release_info
run: |
echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_ENV
- name: Build MV2 packages
run: |
tools/make-chromium.sh ${{ env.VERSION }}
tools/make-firefox.sh ${{ env.VERSION }}
- name: Assemble release notes
run: |
> release.body.txt
grep -m1 -B10000 -- "----------" CHANGELOG.md >> release.body.txt
sed -e 's/%version%/${{ steps.release_info.outputs.VERSION }}/g' RELEASE.HEAD.md >> release.body.txt
sed -e 's/%version%/${{ env.VERSION }}/g' .github/workflows/RELEASE.HEAD.md >> release.body.txt
- name: Create GitHub release
id: create_release
uses: actions/create-release@v1
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag_name: ${{ steps.release_info.outputs.VERSION }}
release_name: ${{ steps.release_info.outputs.VERSION }}
tag_name: ${{ env.VERSION }}
name: ${{ env.VERSION }}
draft: true
prerelease: true
body_path: release.body.txt
- name: Build MV2 packages
run: |
tools/make-chromium.sh ${{ steps.release_info.outputs.VERSION }}
tools/make-firefox.sh ${{ steps.release_info.outputs.VERSION }}
tools/make-thunderbird.sh ${{ steps.release_info.outputs.VERSION }}
tools/make-npm.sh ${{ steps.release_info.outputs.VERSION }}
- name: Upload Chromium package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.chromium.zip
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.chromium.zip
asset_content_type: application/octet-stream
- name: Upload Firefox package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.firefox.xpi
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.firefox.xpi
asset_content_type: application/octet-stream
- name: Upload Thunderbird package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.thunderbird.xpi
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.thunderbird.xpi
asset_content_type: application/octet-stream
- name: Upload NodeJS package
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/build/uBlock0_${{ steps.release_info.outputs.VERSION }}.npm.tgz
asset_name: uBlock0_${{ steps.release_info.outputs.VERSION }}.npm.tgz
asset_content_type: application/octet-stream
files: |
dist/build/uBlock0_${{ env.VERSION }}.chromium.zip
dist/build/uBlock0_${{ env.VERSION }}.firefox.xpi

2
.gitignore vendored
View File

@@ -1,5 +1,7 @@
*.bak
*.pem
__pycache__/
node_modules/
/dist/build/
/tmp/
.DS_Store

6
.gitmodules vendored
View File

@@ -0,0 +1,6 @@
[submodule "platform/mv3/extension/lib/codemirror/codemirror-ubol"]
path = platform/mv3/extension/lib/codemirror/codemirror-ubol
url = https://github.com/gorhill/codemirror-ubol.git
[submodule "publish-extension"]
path = publish-extension
url = https://github.com/gorhill/publish-extension.git

View File

@@ -1,22 +0,0 @@
{
"browser": true,
"devel": true,
"eqeqeq": true,
"esversion": 11,
"globals": {
"chrome": false, // global variable in Chromium, Chrome, Opera
"globalThis": false,
"self": false,
"vAPI": false,
"URLSearchParams": false,
"WebAssembly": false
},
"laxbreak": true,
"newcap": false,
"nonew": false,
"strict": "global",
"sub": true,
"undef": true,
"unused": true,
"validthis": true
}

View File

@@ -1,4 +1,225 @@
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/a43d1d8c42)
- [Fix `editInboundObjectFn` utility scriptlet](https://github.com/gorhill/uBlock/commit/d376adaae8)
- [Improve `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/52bc354bce)
- [Add ability to test against regex in JSONPath expressions](https://github.com/gorhill/uBlock/commit/f36d2b8496)
- [Improve `proxy-apply` utility scriptlet](https://github.com/gorhill/uBlock/commit/dd4f764920)
- [Fix `removeparam` for multiple query parameters with same name](https://github.com/gorhill/uBlock/commit/3e5ea3b03f)
- [Improve `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/9aa91ba111)
- [Improve `google-ima` shim](https://github.com/gorhill/uBlock/commit/8de47f250d)
- [Add back a uBO-specific version of "CERT.PL's Warning List"](https://github.com/gorhill/uBlock/commit/87dddb7d78)
----------
# 1.66.4
- [Fix potential infinite loop when scanning for `$` anchor](https://github.com/gorhill/uBlock/commit/889c0eb208)
- [Allow generic exception for `replace=` option](https://github.com/gorhill/uBlock/commit/52dba4116e)
----------
# 1.66.2
- [Fix version snafu](https://github.com/gorhill/uBlock/commit/50cb780107)
----------
# 1.66.0
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/d2bce26e7d)
- [Add support to strict-block from `ipaddress=` option](https://github.com/gorhill/uBlock/commit/6327aae56c)
- [Improve rendering with high-contrast theme](https://github.com/gorhill/uBlock/commit/5d7e5ee3a0) (fix suggested by @emv33)
- [Fix undue fetch from remote server at first install](https://github.com/gorhill/uBlock/commit/9327e19233)
- [Improve compatibility of `uritransform=` with DNR syntax](https://github.com/gorhill/uBlock/commit/aaf35d9d71)
- [Allow usage of `csp=`/`permissions=` with resource type object](https://github.com/gorhill/uBlock/commit/07e9f805bb)
- [JSONPath: Add ability to select root node for appending/modifying](https://github.com/gorhill/uBlock/commit/faff035203)
- [JSONPath: Add ability to substitute a pattern within a string value](https://github.com/gorhill/uBlock/commit/38ca6d41ff)
- [Remove "CERT.PL's Warning List" from stock lists](https://github.com/gorhill/uBlock/commit/e713e133eb)
- [Fix incorrect CNAME-related test in advanced settings](https://github.com/gorhill/uBlock/commit/171ddd3e06)
- [Remove "AdGuard Tracking Protection"from stock list](https://github.com/gorhill/uBlock/commit/14a9572c86)
- [Add filter list for experimental filters](https://github.com/gorhill/uBlock/commit/d88814bc12)
- [Improve `fingerprint2.js` shim](https://github.com/gorhill/uBlock/commit/7d9317bb17)
- [Make `google-ima` a valid injectable scriptlet](https://github.com/gorhill/uBlock/commit/47cbb43a0e)
- [Improve `abort-current-script` scriptlet](https://github.com/gorhill/uBlock/commit/fef50e59f2)
- [Fix potential exception in procedural operator `:matches-attr`](https://github.com/gorhill/uBlock/commit/e07e7bbd09)
- [Improve reporting of `reason` option in strict-blocked pages](https://github.com/gorhill/uBlock/commit/b7510eee61)
- [Improve `prevent-innerHTML` scriptlet](https://github.com/gorhill/uBlock/commit/b0396029bd)
----------
# 1.65.0
## Fixes / changes
- [Reset `important` option flag at `header` evaluation time](https://github.com/gorhill/uBlock/commit/66b68b4442)
- [Fix broken reverse lookup of filter lists](https://github.com/gorhill/uBlock/commit/527b4a201f)
- [Add `[trusted-]edit-inbound-object` scriptlets](https://github.com/gorhill/uBlock/commit/6e466cf945)
- [Improve `remove-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/0a8ea58bb7)
- [Add `json-edit`-related scriptlets](https://github.com/gorhill/uBlock/commit/87e0434c90)
- [Improve `trusted-set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/3a2bb62519)
- [Force cache bypass reload when no-scripting switch is toggled](https://github.com/gorhill/uBlock/commit/4affe343dd)
- [Improve `jsonl[...]` suite of scriptlets](https://github.com/gorhill/uBlock/commit/ed9999efd6)
- [Add support for network filter option `message`](https://github.com/gorhill/uBlock/commit/d8298bb067)
- [Complete support for reporing strict-block messages](https://github.com/gorhill/uBlock/commit/253ef7ade3)
- [Make `header=` syntax compatible with DNR rules](https://github.com/gorhill/uBlock/commit/408b538e75)
- [Counter CodeMirror's `pointer-events: none` on scrollbars](https://github.com/gorhill/uBlock/commit/c44f043ed3)
- [Fix element picker issue with explicit dark theme](https://github.com/gorhill/uBlock/commit/0130fdf4a1)
----------
# 1.64.0
## Fixes / changes
- [Use custom blank page for embedded iframe in dashboard](https://github.com/gorhill/uBlock/commit/8cd6212867)
- [Use `color-scheme` `meta` tag, as suggested](https://github.com/gorhill/uBlock/commit/5c029b3532)
- [Bring zapper look in line with uBO Lite's zapper](https://github.com/gorhill/uBlock/commit/3f59f94b60)
- [Ignore `start_page` transition for popup-blocking purpose](https://github.com/gorhill/uBlock/commit/0243a141a7)
- [Exclude `chrome:` as valid openers for popup candidates](https://github.com/gorhill/uBlock/commit/59f4aca010)
- [Fetch diff patches from "reliable" servers only](https://github.com/gorhill/uBlock/commit/8b964a8c54)
- [Add `trusted-create-html` scriptlet](https://github.com/gorhill/uBlock/commit/20dd606504)
- [Mind potential race condition when dynamically registering scriptlets](https://github.com/gorhill/uBlock/commit/15e832da8a)
- [Fix undue unchecking of setting in "My filters"](https://github.com/gorhill/uBlock/commit/2bb6999e3f)
- [Add path support as target option in static extended filtering](https://github.com/gorhill/uBlock/commit/8b696a691a)
- [Add `trusted-prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/4ce26b63ff)
- [Code viewer shouldn't be maximizable](https://github.com/gorhill/uBlock/commit/97e740bd2c)
- [Add `json-edit` suite of scriptlets; extend `replace=` option](https://github.com/gorhill/uBlock/commit/b18daa53aa)
- [Improve `trusted-prevent-dom-bypass` scriptlet](https://github.com/gorhill/uBlock/commit/68a256bdde)
- [Add `jsonl-prune-xhr-response`/`jsonl-prune-fetch-response` scriptlets](https://github.com/gorhill/uBlock/commit/95a3be9d56)
- [Improve `[json-prune|trusted-replace]-fetch-response` scriptlets](https://github.com/gorhill/uBlock/commit/88fa550a96)
----------
# 1.63.2
## Fixes / changes
- [Fix TypedArray overflow](https://github.com/gorhill/uBlock/commit/76b80baaea)
- [Add prevent-innerHTML scriptlet](https://github.com/gorhill/uBlock/commit/fe744816f1)
----------
# 1.63.0
## Fixes / changes
- [Improve `prevent-set[Timeout|Interval]` scriptlets](https://github.com/gorhill/uBlock/commit/d36ea89a02)
- [Add quit button to element zapper mode](https://github.com/gorhill/uBlock/commit/4aebdbb0a9)
- [Improve `trusted-override-element-method` scriptlet](https://github.com/gorhill/uBlock/commit/9e946ce0c3)
- [Disable obsolete cache-control workaround for Firefox](https://github.com/gorhill/uBlock/commit/34cea70924)
- [Improve `overlay-buster` scriptlet](https://github.com/gorhill/uBlock/commit/fc231998b9)
- [Add ability to inject scriptlets according to origin of ancestor contexts](https://github.com/gorhill/uBlock/commit/a483f7955f)
- [Fix range parser in prevent-setTimeout scriptlet](https://github.com/gorhill/uBlock/commit/e636c32f2a)
- [Add filter option synonyms for `strict1p`/`strict3p`](https://github.com/gorhill/uBlock/commit/34df044808)
- [Increase URL buffer size to 8192 (from 2048)](https://github.com/gorhill/uBlock/commit/36404543e4)
- [Use onmessage/postMessage instead of BroadcastChannel in diff updater](https://github.com/gorhill/uBlock/commit/ea8853cda3)
- [Improve `disable-newtab-links` scriptlet](https://github.com/gorhill/uBlock/commit/d41989e62a)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/9c26a07b53)
- [Fix reverse lookup of `##^responseheader(...)` filters](https://github.com/gorhill/uBlock/commit/5921e50e03)
- [Improve `evaldata-prune` scriptlet](https://github.com/gorhill/uBlock/commit/9bb1a2baaf)
- [Comply with Mozilla's "User Consent and Control"](https://github.com/gorhill/uBlock/commit/344539d793)
- [Improve `noeval-if` scriptlet](https://github.com/gorhill/uBlock/commit/0df7faffac)
- [Add "closed","next", "mandatory", "agree/disagree" values to `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/35a47d674b) (by @ryanbr)
- [Add `decline` value to `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/4b12247da1)
- [Improve `abort-on-stack-trace` scriptlet](https://github.com/gorhill/uBlock/commit/b617926c1c)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/551c6bc6eb)
----------
# 1.62.0
## Fixes / changes
- [Fix deserialization of ArrayBuffer shared by multiple TypedArrays](https://github.com/gorhill/uBlock/commit/c92a518218)
- [Improve `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/cb6c11ab6f)
- [Improve `urlskip=` filter option](https://github.com/gorhill/uBlock/commit/a7aa755f18)
- [Improve `parse-properties-to-match` scriptlet helper](https://github.com/gorhill/uBlock/commit/7494eaf621)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/9bf8d53ebe)
- [Improve quote usage in filter options and scriptlets](https://github.com/gorhill/uBlock/commit/8ba71f09d7)
- [Improve `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/7ed3470844)
- [Improve `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/3417fe3d5d)
- [Block media elements unconditionally when max size is set to 0](https://github.com/gorhill/uBlock/commit/36db7f8327)
- Regression from <https://github.com/gorhill/uBlock/commit/73ce4e6bcf>
- [Visually separate scriptlet parameters in active line](https://github.com/gorhill/uBlock/commit/076e9fa73e)
- [Mitigate potentially delayed execution of scriptlets in Firefox](https://github.com/gorhill/uBlock/commit/b1a00145bd)
- [Improve `prevent-setTimeout`/`prevent-setInterval` scriptlets](https://github.com/gorhill/uBlock/commit/3b7fa79a68)
- [Improve `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/adced29b5b)
- [Add `-safebase64` directive to `urlskip=` option](https://github.com/gorhill/uBlock/commit/bcc058eba7)
- [Improve `urlskip=` filter option](https://github.com/gorhill/uBlock/commit/77ed83ff2f)
- [Improve `spoof-css` scriptlet](https://github.com/gorhill/uBlock/commit/5f5e3d730f)
- [Improve `trusted-set-attr` scriptlet](https://github.com/gorhill/uBlock/commit/c8174d6032)
- [Add support for EasyList `{ remove: true }` cosmetic filter syntax](https://github.com/gorhill/uBlock/commit/ff5fc61753)
- [Keep moving related scriptlets into separate files](https://github.com/gorhill/uBlock/commit/e5a088738d)
- [Improve `prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/ce4908b341)
- [Improve `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/41616df866)
- [Improve `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/e613282698)
----------
# 1.61.2
## Fixes / changes
- [Better handle unexpected conditions when deserializing](https://github.com/gorhill/uBlock/commit/4c299bfca9)
- [Fix potential infinite async loop](https://github.com/gorhill/uBlock/commit/335d947c10) (issue found by @Rob--W)
----------
# 1.61.0
## Fixes / changes
- [Improve `prevent-refresh` scriptlet](https://github.com/gorhill/uBlock/commit/8884f259c1)
- [Improve `googlesyndication_adsbygoogle.js` scriptlet](https://github.com/gorhill/uBlock/commit/f645e8f0d2)
- [Offer ability to skip redirects in strict-blocked page](https://github.com/gorhill/uBlock/commit/20b54185fa)
- [Add `-blocked` directive to `urlskip=` option](https://github.com/gorhill/uBlock/commit/d04dc4c767)
- [Add `trusted-set-attr` scriptlet](https://github.com/gorhill/uBlock/commit/11ca4a3923)
- [Remove `64:ff9b:` as private network block](https://github.com/gorhill/uBlock/commit/2621c908c3)
- [Ensure `urlskip=` redirects only to `https:`](https://github.com/gorhill/uBlock/commit/32f27c5131)
- [Add support to `urlskip=` media resources](https://github.com/gorhill/uBlock/commit/ce9fc5dc14)
- [Add `-uricomponent` to `urlskip=` option](https://github.com/gorhill/uBlock/commit/01eebffc1f)
- [Add `forbidden`/`forever` as safe cookie values](https://github.com/gorhill/uBlock/commit/4d982d9972) (by @ryanbr)
- [Add regex extraction transformation step to `urlskip=` option](https://github.com/gorhill/uBlock/commit/c86ed5287b)
- [Improve `prevent-window-open` scriptlet](https://github.com/gorhill/uBlock/commit/85877b12ed)
- [Add support to parse Adguard's `[$domain=/.../]` regex-based modifier](https://github.com/gorhill/uBlock/commit/58bfe4c846)
- [Validate result type of XPath expressions](https://github.com/gorhill/uBlock/commit/c746633693)
- [Fix npm test suite](https://github.com/gorhill/uBlock/commit/818cb2d801)
- [Add ability to lookup parameter name in `urlskip=`](https://github.com/gorhill/uBlock/commit/64b2086ba4)
- [Mind that BroadcastChannel contructor can throw in Firefox](https://github.com/gorhill/uBlock/commit/6d2b3375f8)
- [Add `trusted-override-element-method` scriptlet](https://github.com/gorhill/uBlock/commit/95b0ce5e3a)
- [Add `trusted-prevent-dom-bypass` scriptlet](https://github.com/gorhill/uBlock/commit/1abc864742)
- [Improve `prevent-xhr` scriptlet; add `trusted-prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/fe49ced2ac)
- [Skip dns resolution when requests are proxied through http](https://github.com/gorhill/uBlock/commit/4305bfbdb1)
- [Blocking large media elements also prevents autoplay, regardless of size](https://github.com/gorhill/uBlock/commit/73ce4e6bcf)
- [Do not discard `!#else` block for unknown preprocessor tokens](https://github.com/gorhill/uBlock/commit/6cac645830)
- [Add ability to decode base64 in `urlskip=`](https://github.com/gorhill/uBlock/commit/e81e70937f)
- [Fix images not properly downloading on click](https://github.com/gorhill/uBlock/commit/aec0bd39e3)
----------
# 1.60.0
## Fixes / changes
- [Add advanced setting `dnsResolveEnabled`](https://github.com/gorhill/uBlock/commit/760b2ffce6)
- [Fix contextual menu quirks](https://github.com/gorhill/uBlock/commit/0a6dc47a72)
- [Fix exception thrown in `spoof-css` in Firefox](https://github.com/gorhill/uBlock/commit/11c3a16036)
- [Throttle down repeated scriptlet logging information](https://github.com/gorhill/uBlock/commit/e8f6f3ddff)
- [Improve scriptlet helper `proxy-apply`](https://github.com/gorhill/uBlock/commit/547fae4842)
- [Add an entry in _Report_ page for badware/phishing category](https://github.com/gorhill/uBlock/commit/e18a3707c7)
- [New static network filter option `urlskip=`](https://github.com/gorhill/uBlock/commit/266ec4894b)
- [Rewrite cname uncloaking code to account for new `ipaddress=` option](https://github.com/gorhill/uBlock/commit/6acf97bf51)
- [Avoid using dns.resolve() for proxied DNS resolution](https://github.com/gorhill/uBlock/commit/d5f14ffa32)
- [Add support for `lan`/`loopback` values to `ipaddress=` option](https://github.com/gorhill/uBlock/commit/030d7334e4)
- [New static network filter option `ipaddress=`](https://github.com/gorhill/uBlock/commit/c6dedd253f)
- [Add ability to quote static network option values](https://github.com/gorhill/uBlock/commit/20115697e5)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/e8202af11d)
- [Apply CSP/PP injections to `object` resources](https://github.com/gorhill/uBlock/commit/89f02098fd)
- [Improve `xml-prune` scriptlet](https://github.com/gorhill/uBlock/commit/c8307f58a3)
- [Add support for `application/dash+xml` in `replace=` option](https://github.com/gorhill/uBlock/commit/91125d29cf)
- [Add ability to directly evaluate static network filtering engine](https://github.com/gorhill/uBlock/commit/b7ed3b45ed)
- [Fix `prevent-window-open` for when logger is open](https://github.com/gorhill/uBlock/commit/f552f655cb)
- [Improve `prevent-window-open` scriptlet](https://github.com/gorhill/uBlock/commit/7f11d6216e)
- [Improve `validate-constant` scriptlet helper](https://github.com/gorhill/uBlock/commit/ae5dc6299e)
- [Improve `trusted-replace-outbound-text` scriptlet](https://github.com/gorhill/uBlock/commit/0dcb985601)
- [Improve `prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/3a249f395c)
- [Add noop resources for redirect purpose](https://github.com/gorhill/uBlock/commit/59a9a43a83)

View File

@@ -1,31 +1,31 @@
# Contributions
Refer to the following sections to direct you to the appropriate destination. Thank you in advance for your help.
Please refer to the sections below to find the appropriate destination for your contributions. Thank you for your support!
---
### Translations
Help translate uBO via [Crowdin](https://crowdin.com/project/ublock).
You can help translate uBO via [Crowdin](https://crowdin.com/project/ublock).
---
### Reporting Issues
The issue tracker in this repository is deprecated. Use the links below to guide you to where you need to report your issue.
The issue tracker in this repository is deprecated. Use the links below to report your issues.
#### Support Forum
For support, questions, or help, visit [/r/uBlockOrigin](https://www.reddit.com/r/uBlockOrigin/).
For support, questions, or assistance, please visit [/r/uBlockOrigin](https://www.reddit.com/r/uBlockOrigin/).
#### Filter List Issues
Report issues with filter lists or broken website functionality in the [uAssets issue tracker](https://github.com/uBlockOrigin/uAssets/issues).
Report issues related to filter lists or broken website functionality in the [uAssets issue tracker](https://github.com/uBlockOrigin/uAssets/issues).
#### uBlock Origin (uBO) Issues
Report issues with uBO in the [uBO issue tracker](https://github.com/uBlockOrigin/uBlock-issues/issues).
For issues specifically about uBO, please use the [uBO issue tracker](https://github.com/uBlockOrigin/uBlock-issues/issues).
#### uBO Lite (uBOL) Issues
Report issues specific to the Manifest Version 3 (MV3) variant in the [uBOL issue tracker](https://github.com/uBlockOrigin/uBOL-issues/issues).
For issues related to the Manifest Version 3 (MV3) variant, report them in the [uBOL issue tracker](https://github.com/uBlockOrigin/uBOL-home/issues).

136
Makefile
View File

@@ -1,12 +1,25 @@
# https://stackoverflow.com/a/6273809
run_options := $(filter-out $@,$(MAKECMDGOALS))
.PHONY: all clean cleanassets test lint chromium opera firefox npm dig mv3 mv3-quick \
compare maxcost medcost mincost modifiers record wasm
.PHONY: all clean cleanassets test lint chromium opera firefox npm dig \
mv3-chromium mv3-firefox mv3-edge mv3-safari ubol-codemirror \
compare maxcost medcost mincost modifiers record wasm \
publish-chromium publish-edge publish-firefox \
publish-dev-chromium publish-dev-firefox \
upload-firefox upload-dev-firefox
sources := $(wildcard assets/* assets/*/* dist/version src/* src/*/* src/*/*/* src/*/*/*/*)
platform := $(wildcard platform/* platform/*/* platform/*/*/* platform/*/*/*/* platform/*/*/*/*/*)
sources := ./dist/version $(shell find ./assets -type f) $(shell find ./src -type f)
platform := $(wildcard platform/*/*)
assets := dist/build/uAssets
mv3-sources := \
$(shell find ./src -type f) \
$(wildcard platform/mv3/*) \
$(shell find ./platform/mv3/extension -name codemirror-ubol -prune -o -type f) \
platform/mv3/extension/lib/codemirror/codemirror-ubol/dist/cm6.bundle.ubol.min.js
mv3-data := $(shell find ./dist/build/mv3-data -type f)
mv3-edge-deps := $(wildcard platform/mv3/edge/*)
mv3-safari-deps := $(wildcard platform/mv3/safari/*)
all: chromium firefox npm
@@ -31,20 +44,16 @@ firefox: dist/build/uBlock0.firefox
dist/build/uBlock0.npm: tools/make-nodejs.sh $(sources) $(platform) $(assets)
tools/make-npm.sh
# Build the Node.js package.
npm: dist/build/uBlock0.npm
lint: npm
cd dist/build/uBlock0.npm && npm run lint
# Dev tools
node_modules:
npm install
test: npm
cd dist/build/uBlock0.npm && npm run test
init: node_modules
test-full-battery: npm
cd dist/build/uBlock0.npm && npm run test-full-battery
check-leaks: npm
cd dist/build/uBlock0.npm && npm run check-leaks
lint: init
npm run lint
dist/build/uBlock0.dig: tools/make-nodejs.sh $(sources) $(platform) $(assets)
tools/make-dig.sh
@@ -55,27 +64,112 @@ dig: dist/build/uBlock0.dig
dig-snfe: dig
cd dist/build/uBlock0.dig && npm run snfe $(run_options)
mv3-chromium: tools/make-mv3.sh $(sources) $(platform)
dist/build/mv3-data:
mkdir -p dist/build/mv3-data
ubol-codemirror:
$(MAKE) -sC platform/mv3/extension/lib/codemirror/codemirror-ubol/ ubol.bundle
dist/build/uBOLite.chromium: tools/make-mv3.sh $(mv3-sources) $(platform) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh chromium
mv3-firefox: tools/make-mv3.sh $(sources) $(platform)
mv3-chromium: ubol-codemirror dist/build/uBOLite.chromium
dist/build/uBOLite.firefox: tools/make-mv3.sh $(mv3-sources) $(platform) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh firefox
mv3-quick: tools/make-mv3.sh $(sources) $(platform)
tools/make-mv3.sh quick
mv3-firefox: ubol-codemirror dist/build/uBOLite.firefox
mv3-full: tools/make-mv3.sh $(sources) $(platform)
tools/make-mv3.sh full
dist/build/uBOLite.edge: tools/make-mv3.sh $(mv3-sources) $(mv3-edge-deps) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh edge
mv3-edge: ubol-codemirror dist/build/uBOLite.edge
dist/build/uBOLite.safari: tools/make-mv3.sh $(mv3-sources) $(mv3-safari-deps) $(mv3-data) dist/build/mv3-data
tools/make-mv3.sh safari
mv3-safari: ubol-codemirror dist/build/uBOLite.safari
dist/build/uAssets:
tools/pull-assets.sh
clean:
rm -rf dist/build tmp/node_modules
rm -rf dist/build tmp/node_modules node_modules
cleanassets:
rm -rf dist/build/mv3-data dist/build/uAssets
# Usage: make publish-publish version=?
publish-chromium:
node publish-extension/publish-chromium.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=chromium \
storeid=cjpalhdlnbpafiamejdnhcphjbkeiagm
# Usage: make publish-edge version=?
publish-edge:
node publish-extension/publish-edge.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=chromium \
datebasedmajor=1 \
storeid=odfafepnkmbhccpbejgmiehpchacaeak \
productid=$(shell secret-tool lookup token ubo_edge_id)
# Usage: make publish-firefox version=?
publish-firefox:
node publish-extension/publish-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=listed
# Usage: make publish-dev-chromium version=?
publish-dev-chromium:
node publish-extension/publish-chromium.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=chromium \
storeid=cgbcahbpdhpcegmbfconppldiemgcoii
# Usage: make publish-dev-firefox version=?
publish-dev-firefox:
node publish-extension/publish-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=unlisted \
updatepath=./dist/firefox/updates.json
# Usage: make upload-firefox version=?
upload-firefox:
node publish-extension/upload-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=listed
# Usage: make upload-dev-firefox version=?
upload-dev-firefox:
node publish-extension/upload-firefox.js \
ghowner=gorhill \
ghrepo=uBlock \
ghtag=$(version) \
ghasset=firefox \
storeid=uBlock0@raymondhill.net \
channel=unlisted \
updatepath=./dist/firefox/updates.json
# Not real targets, just convenient for auto-completion at shell prompt
compare:
@echo

View File

@@ -15,25 +15,15 @@
</sub>
uBlock Origin (uBO)
</h1>
<p align="center">
<sub><a href="https://github.com/gorhill/uBlock/wiki/uBlock-Origin-is-completely-unrelated-to-the-web-site-ublock.org"><b>BEWARE!</b> uBO is (and has always been) COMPLETELY UNRELATED to the website <code>ublock.org</code></a>.</sub>
</p>
***
<p align="center">
<a href="https://addons.mozilla.org/addon/ublock-origin/"><img src="https://user-images.githubusercontent.com/585534/107280546-7b9b2a00-6a26-11eb-8f9f-f95932f4bfec.png" alt="Get uBlock Origin for Firefox"></a>
<a href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak"><img src="https://user-images.githubusercontent.com/585534/107280673-a5ece780-6a26-11eb-9cc7-9fa9f9f81180.png" alt="Get uBlock Origin for Microsoft Edge"></a>
<a href="https://addons.opera.com/extensions/details/ublock/"><img src="https://user-images.githubusercontent.com/585534/107280692-ac7b5f00-6a26-11eb-85c7-088926504452.png" alt="Get uBlock Origin for Opera"></a>
<a href="https://addons.thunderbird.net/thunderbird/addon/ublock-origin/"><img src="https://user-images.githubusercontent.com/124740436/235314672-73243149-3683-4407-a2d5-ad0f2b08bc17.png" alt="Get uBlock Origin for Thunderbird"></a>
</p>
***
<p align="center">
<a href="https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm"><img src="https://user-images.githubusercontent.com/585534/107280622-91a8ea80-6a26-11eb-8d07-77c548b28665.png" alt="Get uBlock Origin for Chromium"></a><br>
<sub><a href="https://github.com/uBlockOrigin/uBlock-issues/wiki/About-Google-Chrome's-%22This-extension-may-soon-no-longer-be-supported%22"><b>IMPORTANT</b>: About Google Chrome's "This extension may soon no longer be supported"</a></sub>
</p>
| Browser | Install from ... | Status |
| :-------: | ---------------- | ------ |
| <img src="https://github.com/user-attachments/assets/b0136512-56a5-4856-8c50-4971c957a24f" alt="Get uBlock Origin for Firefox"> | <a href="https://addons.mozilla.org/addon/ublock-origin/">Firefox Add-ons</a> | [uBO works best on Firefox](https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox) |
| <img src="https://github.com/user-attachments/assets/3a7569f8-688b-4eb1-a643-8d0fe173aefe" alt="Get uBlock Origin for Microsoft Edge"> | <a href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak">Edge Add-ons</a> |
| <img src="https://github.com/user-attachments/assets/938f080c-fe64-4e48-8b89-4bfceabb56e6" alt="Get uBlock Origin for Opera"> | <a href="https://addons.opera.com/extensions/details/ublock/">Opera Add-ons</a> |
| <img src="https://github.com/user-attachments/assets/5463ef88-873b-4516-8514-5277664cfde7" alt="Get uBlock Origin for Chromium"> | <a href="https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm">Chrome Web Store</a> | <a href="https://github.com/uBlockOrigin/uBlock-issues/wiki/About-Google-Chrome's-%22This-extension-may-soon-no-longer-be-supported%22">About Google Chrome's "This extension may soon no longer be supported"</a><br>End of support on Chrome 139 |
| <img src="https://github.com/user-attachments/assets/2e9037c4-836d-44c1-a716-ba96e89daaff" alt="Get uBlock Origin for Thunderbird"> | <a href="https://addons.thunderbird.net/thunderbird/addon/ublock-origin/">Thunderbird Add-ons</a> | [No longer updated and stuck at 1.49.2.](https://github.com/uBlockOrigin/uBlock-issues/issues/2928) Later versions require "GitHub - Releases". |
| <img src="https://upload.wikimedia.org/wikipedia/commons/c/c2/GitHub_Invertocat_Logo.svg" height="50" alt="Get uBlock Origin through GitHub"> | <a href="https://github.com/gorhill/uBlock/releases">GitHub - Releases</a> | Stable and development versions on Firefox, Chromium MV2, and Thunderbird. Must be placed manually into web browsers; the Chromium and Thunderbird versions usually won't auto-update.
***
@@ -105,7 +95,7 @@ In Thunderbird, uBlock Origin does not affect emails, just feeds.
[Chrome Web Store][Chrome]
[Microsoft Edge Add-ons][Edge] (Published by: [Nicole Rolls][Nicole Rolls])
[Microsoft Edge Add-ons][Edge] (Published by [Nicole Rolls][Nicole Rolls] until version 1.62. Ownership transfer at version 1.64.)
[Opera Add-ons][Opera]
@@ -148,16 +138,16 @@ If you ever want to contribute something, think about the people working hard to
[Peter Lowe's Blocklist]: https://pgl.yoyo.org/adservers/
[Malicious Blocklist]: https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist
[Performance]: https://www.debugbear.com/blog/chrome-extension-performance-2021#how-do-ad-blockers-and-privacy-tools-affect-browser-performance
[Performance]: https://www.debugbear.com/blog/chrome-extensions-website-performance#the-impact-of-ad-blocking-on-website-performance
[EasyPrivacy]: https://easylist.to/#easyprivacy
[Thunderbird]: https://addons.thunderbird.net/thunderbird/addon/ublock-origin/
[Chrome Dev]: https://chrome.google.com/webstore/detail/ublock-origin-development/cgbcahbpdhpcegmbfconppldiemgcoii
[Chrome Dev]: https://chromewebstore.google.com/detail/ublock-origin-development/cgbcahbpdhpcegmbfconppldiemgcoii
[EasyList]: https://easylist.to/#easylist
[Mozilla]: https://addons.mozilla.org/addon/ublock-origin/
[Crowdin]: https://crowdin.com/project/ublock
[Chrome]: https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
[Chrome]: https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
[Reddit]: https://www.reddit.com/r/uBlockOrigin/
[Theft]: https://twitter.com/LeaVerou/status/518154828166725632
[Theft]: https://x.com/LeaVerou/status/518154828166725632
[Opera]: https://addons.opera.com/extensions/details/ublock/
[Edge]: https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak
[NPM]: https://www.npmjs.com/package/@gorhill/ubo-core
@@ -167,7 +157,6 @@ If you ever want to contribute something, think about the people working hard to
[Nicole Rolls]: https://github.com/nicole-ashley
<!---------------------------------[ Internal ]-------------------------------->
[Manual Installation]: https://github.com/gorhill/uBlock/tree/master/dist#install
@@ -184,7 +173,6 @@ If you ever want to contribute something, think about the people working hard to
[Beta]: https://github.com/gorhill/uBlock/blob/master/dist/README.md#for-beta-version
[Wiki]: https://github.com/gorhill/uBlock/wiki
<!----------------------------------[ Badges ]--------------------------------->
[Badge Localization]: https://d322cqt584bo4o.cloudfront.net/ublock/localized.svg
@@ -195,4 +183,3 @@ If you ever want to contribute something, think about the people working hard to
[Badge Edge]: https://img.shields.io/badge/dynamic/json?label=Edge&color=brightgreen&query=%24.averageRating&suffix=%2F%35&url=https%3A%2F%2Fmicrosoftedge.microsoft.com%2Faddons%2Fgetproductdetailsbycrxid%2Fodfafepnkmbhccpbejgmiehpchacaeak
[Badge Issues]: https://img.shields.io/github/issues/uBlockOrigin/uBlock-issues
[Badge NPM]: https://img.shields.io/npm/v/@gorhill/ubo-core

View File

@@ -1,10 +0,0 @@
[Commits to master since this release](https://github.com/gorhill/uBlock/compare/%version%...master)
To install the developer build:
- **Firefox**: Click [uBlock0_%version%.firefox.signed.xpi](https://github.com/gorhill/uBlock/releases/download/%version%/uBlock0_%version%.firefox.signed.xpi)
- [uBO works best on Firefox](https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox).
- **Chromium**: Install from the Chrome Web Store (CWS): <https://chrome.google.com/webstore/detail/ublock-origin-dev-build/cgbcahbpdhpcegmbfconppldiemgcoii>.
- **Thunderbird**: Download [uBlock0_%version%.thunderbird.xpi](https://github.com/gorhill/uBlock/releases/download/%version%/uBlock0_%version%.thunderbird.xpi), then drag-n-drop it into Thunderbird's _Add-ons Manager_ pane (Thunderbird 91+ required)
- **Node.js**: Import from [npm](https://www.npmjs.com/package/@gorhill/ubo-core), or download and unzip [uBlock0_%version%.npm.tgz](https://github.com/gorhill/uBlock/releases/download/%version%/uBlock0_%version%.npm.tgz).

View File

@@ -52,6 +52,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/filters.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/filters.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-badware": {
@@ -71,6 +75,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets",
"instructionURL": "https://github.com/gorhill/uBlock/wiki/Badware-risks"
},
@@ -91,6 +99,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/privacy.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-unbreak": {
@@ -109,6 +121,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/unbreak.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/unbreak.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-quick-fixes": {
@@ -127,6 +143,28 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-experimental": {
"content": "filters",
"group": "default",
"off": true,
"title": "uBlock filters Experimental",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/experimental.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/experimental.min.txt",
"https://ublockorigin.pages.dev/filters/experimental.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/experimental.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/experimental.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-generic": {
@@ -136,8 +174,7 @@
"title": "AdGuard Ads",
"tags": "ads",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile": {
"content": "filters",
@@ -147,8 +184,7 @@
"tags": "ads mobile",
"ua": "mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist": {
"content": "filters",
@@ -165,6 +201,10 @@
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
"adguard-spyware-url": {
@@ -174,17 +214,7 @@
"title": "AdGuard URL Tracking Protection",
"tags": "privacy",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/17.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-spyware": {
"content": "filters",
"group": "privacy",
"off": true,
"title": "AdGuard Tracking Protection",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/3.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"block-lan": {
"content": "filters",
@@ -216,6 +246,10 @@
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easyprivacy.txt",
"https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
"urlhaus-1": {
@@ -255,8 +289,7 @@
"title": "AdGuard Cookie Notices",
"tags": "annoyances cookies",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/18.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"ublock-cookies-adguard": {
"content": "filters",
@@ -324,8 +357,7 @@
"title": "AdGuard Social Widgets",
"tags": "annoyances social",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"fanboy-social": {
"content": "filters",
@@ -367,8 +399,7 @@
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
@@ -378,8 +409,7 @@
"title": "AdGuard Mobile App Banners",
"tags": "annoyances mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-other-annoyances": {
"content": "filters",
@@ -389,8 +419,7 @@
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-widgets": {
"content": "filters",
@@ -400,8 +429,7 @@
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist-annoyances": {
"content": "filters",
@@ -488,6 +516,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"dpollock-0": {
@@ -530,7 +562,7 @@
"off": true,
"title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR",
"tags": "ads arabic اَلْعَرَبِيَّةُ‎",
"lang": "ar",
"lang": "ar kab",
"contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=98"
},
@@ -584,8 +616,8 @@
"title": "🇪🇪ee: Eesti saitidele kohandatud filter",
"tags": "ads estonian",
"lang": "et",
"contentURL": "https://adblock.ee/list.php",
"supportURL": "https://adblock.ee/"
"contentURL": "https://adblock.ee/list.txt",
"supportURL": "https://adblock.ee"
},
"FIN-0": {
"content": "filters",
@@ -603,7 +635,7 @@
"off": true,
"title": "🇫🇷fr 🇨🇦ca: AdGuard Français",
"tags": "ads french",
"lang": "ar br ff fr lb oc son",
"lang": "ar br ff fr kab lb oc son",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/16.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
@@ -622,9 +654,13 @@
"group": "regions",
"off": true,
"title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters",
"tags": "ads croatian serbian",
"lang": "hr sr",
"contentURL": "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"tags": "ads croatian serbian bosnian",
"lang": "bs hr sr",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/SerboCroatianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/SerboCroatianList.txt"
],
"supportURL": "https://github.com/DandelionSprout/adfilt#readme"
},
"HUN-0": {
@@ -653,7 +689,7 @@
"off": true,
"title": "🇮🇳in 🇱🇰lk 🇳🇵np: IndianList",
"tags": "ads assamese bengali gujarati hindi kannada malayalam marathi nepali punjabi sinhala tamil telugu",
"lang": "as bn gu hi kn ml mr ne pa si ta te",
"lang": "as bn gu hi kn ml mr ne pa sat si ta te",
"contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt",
"supportURL": "https://github.com/mediumkreation/IndianList"
},
@@ -700,7 +736,7 @@
"off": true,
"title": "🇮🇹it: EasyList Italy",
"tags": "ads italian",
"lang": "it lij",
"lang": "fur it lij sc",
"contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=96"
},
@@ -712,8 +748,7 @@
"tags": "ads japanese 日本語",
"lang": "ja",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"KOR-1": {
"content": "filters",
@@ -768,7 +803,7 @@
"lang": "af fy nl",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt",
"cdnURLs": null,
"supportURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"NOR-0": {
"content": "filters",
@@ -778,9 +813,7 @@
"tags": "ads norwegian danish icelandic",
"lang": "nb nn no da is",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt"
],
"cdnURLs": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/NorwegianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/NorwegianList.txt"
],
@@ -793,21 +826,20 @@
"off": true,
"title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin",
"tags": "ads polish polski",
"lang": "szl pl",
"lang": "szl pl _",
"contentURL": "https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-adblock-filters/adblock.txt",
"supportURL": "https://github.com/MajkiIT/polish-ads-filter/issues",
"instructionURL": "https://github.com/MajkiIT/polish-ads-filter#polish-filters-for-adblock-ublock-origin--adguard"
"supportURL": "https://github.com/MajkiIT/polish-ads-filter"
},
"POL-2": {
"POL-3": {
"content": "filters",
"group": "regions",
"parent": "🇵🇱pl: Oficjalne Polskie Filtry",
"off": true,
"title": "🇵🇱pl: Oficjalne polskie filtry przeciwko alertom o Adblocku",
"tags": "ads polish polski",
"title": "🇵🇱pl: CERT.PL's Warning List",
"tags": "malware polish polski",
"lang": "szl pl",
"contentURL": "https://raw.githubusercontent.com/olegwukr/polish-privacy-filters/master/anti-adblock.txt",
"supportURL": "https://github.com/olegwukr/polish-privacy-filters/issues"
"contentURL": "https://hole.cert.pl/domains/v2/domains_ublock.txt",
"supportURL": "https://cert.pl/lista-ostrzezen/"
},
"ROU-1": {
"content": "filters",
@@ -824,10 +856,11 @@
"RUS-0": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek",
"lang": "be kk tt ru uk uz",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek uk",
"lang": "be kk tt ru uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/RuAdList-uBO.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/dimisa-RUAdList/RUAdListCDN@main/lists/ruadlist.ubo.min.txt",
@@ -837,6 +870,22 @@
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
},
"RUS-1": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList: Counters",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek be kk tt ru uk uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/cntblock.txt",
"https://cdn.statically.io/gh/easylist/ruadlist/master/cntblock.txt",
"https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
},
"spa-0": {
"content": "filters",
"group": "regions",
@@ -855,8 +904,7 @@
"tags": "ads aragonese basque catalan spanish español galician guarani portuguese português",
"lang": "an ast ca cak es eu gl gn trs pt quz",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/9.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"SVN-0": {
"content": "filters",
@@ -900,8 +948,17 @@
"tags": "ads turkish türkçe",
"lang": "tr",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/13.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"UKR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇺🇦ua: AdGuard Ukrainian",
"tags": "ads ukraine україна",
"lang": "uk",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/23.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"VIE-1": {
"content": "filters",

View File

@@ -52,6 +52,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/filters.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/filters.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-badware": {
@@ -71,6 +75,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badware.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets",
"instructionURL": "https://github.com/gorhill/uBlock/wiki/Badware-risks"
},
@@ -91,6 +99,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/privacy.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-unbreak": {
@@ -109,6 +121,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/unbreak.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/unbreak.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-quick-fixes": {
@@ -127,6 +143,28 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/quick-fixes.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"ublock-experimental": {
"content": "filters",
"group": "default",
"off": true,
"title": "uBlock filters Experimental",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/experimental.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/experimental.min.txt",
"https://ublockorigin.pages.dev/filters/experimental.min.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/experimental.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/experimental.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-generic": {
@@ -136,8 +174,7 @@
"title": "AdGuard Ads",
"tags": "ads",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile": {
"content": "filters",
@@ -147,8 +184,7 @@
"tags": "ads mobile",
"ua": "mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist": {
"content": "filters",
@@ -165,6 +201,10 @@
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
"adguard-spyware-url": {
@@ -174,17 +214,7 @@
"title": "AdGuard URL Tracking Protection",
"tags": "privacy",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/17.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
},
"adguard-spyware": {
"content": "filters",
"group": "privacy",
"off": true,
"title": "AdGuard Tracking Protection",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/3.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"block-lan": {
"content": "filters",
@@ -216,6 +246,10 @@
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easyprivacy.txt",
"https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://easylist.to/"
},
"urlhaus-1": {
@@ -255,8 +289,7 @@
"title": "AdGuard Cookie Notices",
"tags": "annoyances cookies",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/18.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"ublock-cookies-adguard": {
"content": "filters",
@@ -324,8 +357,7 @@
"title": "AdGuard Social Widgets",
"tags": "annoyances social",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"fanboy-social": {
"content": "filters",
@@ -367,8 +399,7 @@
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
@@ -378,8 +409,7 @@
"title": "AdGuard Mobile App Banners",
"tags": "annoyances mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-other-annoyances": {
"content": "filters",
@@ -389,8 +419,7 @@
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-widgets": {
"content": "filters",
@@ -400,8 +429,7 @@
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist-annoyances": {
"content": "filters",
@@ -488,6 +516,10 @@
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances.min.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances.min.txt"
],
"patchURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/",
"https://ublockorigin.pages.dev/filters/"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"dpollock-0": {
@@ -530,7 +562,7 @@
"off": true,
"title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR",
"tags": "ads arabic اَلْعَرَبِيَّةُ‎",
"lang": "ar",
"lang": "ar kab",
"contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=98"
},
@@ -584,8 +616,8 @@
"title": "🇪🇪ee: Eesti saitidele kohandatud filter",
"tags": "ads estonian",
"lang": "et",
"contentURL": "https://adblock.ee/list.php",
"supportURL": "https://adblock.ee/"
"contentURL": "https://adblock.ee/list.txt",
"supportURL": "https://adblock.ee"
},
"FIN-0": {
"content": "filters",
@@ -603,7 +635,7 @@
"off": true,
"title": "🇫🇷fr 🇨🇦ca: AdGuard Français",
"tags": "ads french",
"lang": "ar br ff fr lb oc son",
"lang": "ar br ff fr kab lb oc son",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/16.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
@@ -622,9 +654,13 @@
"group": "regions",
"off": true,
"title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters",
"tags": "ads croatian serbian",
"lang": "hr sr",
"contentURL": "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"tags": "ads croatian serbian bosnian",
"lang": "bs hr sr",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/SerboCroatianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/SerboCroatianList.txt"
],
"supportURL": "https://github.com/DandelionSprout/adfilt#readme"
},
"HUN-0": {
@@ -653,7 +689,7 @@
"off": true,
"title": "🇮🇳in 🇱🇰lk 🇳🇵np: IndianList",
"tags": "ads assamese bengali gujarati hindi kannada malayalam marathi nepali punjabi sinhala tamil telugu",
"lang": "as bn gu hi kn ml mr ne pa si ta te",
"lang": "as bn gu hi kn ml mr ne pa sat si ta te",
"contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt",
"supportURL": "https://github.com/mediumkreation/IndianList"
},
@@ -700,7 +736,7 @@
"off": true,
"title": "🇮🇹it: EasyList Italy",
"tags": "ads italian",
"lang": "it lij",
"lang": "fur it lij sc",
"contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=96"
},
@@ -712,8 +748,7 @@
"tags": "ads japanese 日本語",
"lang": "ja",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"KOR-1": {
"content": "filters",
@@ -768,7 +803,7 @@
"lang": "af fy nl",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt",
"cdnURLs": null,
"supportURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"NOR-0": {
"content": "filters",
@@ -778,9 +813,7 @@
"tags": "ads norwegian danish icelandic",
"lang": "nb nn no da is",
"contentURL": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt"
],
"cdnURLs": [
"https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt",
"https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/NorwegianList.txt",
"https://cdn.statically.io/gl/DandelionSprout/adfilt/master/NorwegianList.txt"
],
@@ -793,21 +826,20 @@
"off": true,
"title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin",
"tags": "ads polish polski",
"lang": "szl pl",
"lang": "szl pl _",
"contentURL": "https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-adblock-filters/adblock.txt",
"supportURL": "https://github.com/MajkiIT/polish-ads-filter/issues",
"instructionURL": "https://github.com/MajkiIT/polish-ads-filter#polish-filters-for-adblock-ublock-origin--adguard"
"supportURL": "https://github.com/MajkiIT/polish-ads-filter"
},
"POL-2": {
"POL-3": {
"content": "filters",
"group": "regions",
"parent": "🇵🇱pl: Oficjalne Polskie Filtry",
"off": true,
"title": "🇵🇱pl: Oficjalne polskie filtry przeciwko alertom o Adblocku",
"tags": "ads polish polski",
"title": "🇵🇱pl: CERT.PL's Warning List",
"tags": "malware polish polski",
"lang": "szl pl",
"contentURL": "https://raw.githubusercontent.com/olegwukr/polish-privacy-filters/master/anti-adblock.txt",
"supportURL": "https://github.com/olegwukr/polish-privacy-filters/issues"
"contentURL": "https://hole.cert.pl/domains/v2/domains_ublock.txt",
"supportURL": "https://cert.pl/lista-ostrzezen/"
},
"ROU-1": {
"content": "filters",
@@ -824,10 +856,11 @@
"RUS-0": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek",
"lang": "be kk tt ru uk uz",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek uk",
"lang": "be kk tt ru uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/RuAdList-uBO.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/dimisa-RUAdList/RUAdListCDN@main/lists/ruadlist.ubo.min.txt",
@@ -837,6 +870,22 @@
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
},
"RUS-1": {
"content": "filters",
"group": "regions",
"parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList",
"off": true,
"title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList: Counters",
"tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek be kk tt ru uk uz",
"contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/cntblock.txt",
"https://cdn.statically.io/gh/easylist/ruadlist/master/cntblock.txt",
"https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=102",
"instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512"
},
"spa-0": {
"content": "filters",
"group": "regions",
@@ -855,8 +904,7 @@
"tags": "ads aragonese basque catalan spanish español galician guarani portuguese português",
"lang": "an ast ca cak es eu gl gn trs pt quz",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/9.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"SVN-0": {
"content": "filters",
@@ -900,8 +948,17 @@
"tags": "ads turkish türkçe",
"lang": "tr",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/13.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters",
"instructionURL": "https://kb.adguard.com/en/general/adguard-ad-filters"
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"UKR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇺🇦ua: AdGuard Ukrainian",
"tags": "ads ukraine україна",
"lang": "uk",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/23.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"VIE-1": {
"content": "filters",

File diff suppressed because it is too large Load Diff

140
dist/README.md vendored
View File

@@ -1,81 +1,103 @@
## INSTALL
# INSTALL
### Chromium
## Chromium
- Download and unzip `ublock0.chromium.zip` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
- Rename the unzipped directory to `ublock`
- When you later update manually, replace the **content** of the `ublock` folder with the **content** of the latest zipped version.
- This will ensure that all the extension settings will be preserved
- As long as the extension loads **from same folder path from which it was originally installed**, all your settings will be preserved.
- Go to chromium/chrome *Extensions*.
- Click to check *Developer mode*.
- Click *Load unpacked extension...*.
- In the file selector dialog:
- Select the directory `ublock` which was created above.
- Click *Open*.
1. Download and unzip `ublock0.chromium.zip` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
2. Rename the unzipped directory to `ublock`.
- When you update manually, replace the **content** of the `ublock` folder with the **content** of the latest zipped version. This ensures all extension settings are preserved.
- As long as the extension loads from the same folder path as it was originally installed, your settings will be kept.
3. Open Chromium/Chrome and go to *Extensions*.
4. Click to enable *Developer mode*.
5. Click *Load unpacked extension...*.
6. In the file selector dialog:
- Select the `ublock` directory you created.
- Click *Open*.
The extension will now be available in your chromium/chromium-based browser.
The extension will now be available in your Chromium/Chromium-based browser.
Remember that you have to update manually also. For some users, updating manually is actually an advantage because:
- You can update when **you** want
- If ever a new version sucks, you can easily just re-install the previous one
**Note:** You must update manually. For some users, manual updates are beneficial because:
- You can update when **you** want.
- If a new version is unsatisfactory, you can easily reinstall the previous one.
### Firefox
## Firefox
Compatible with Firefox 52 and beyond.
Compatible with Firefox 52 and beyond.
#### For stable release version
### For Stable Release Version
This works only if you set `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
This method only works if you set `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
- Download `ublock0.firefox.xpi` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
- Right-click and choose _"Save As..."_.
- Drag and drop the previously downloaded `ublock0.firefox.xpi` into Firefox
1. Download `ublock0.firefox.xpi` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
- Right-click and choose _"Save As..."_.
2. Drag and drop the downloaded `ublock0.firefox.xpi` into Firefox.
#### For beta version
### For Beta Version
- Click on `ublock0.firefox.signed.xpi` ([latest release desirable](https://github.com/gorhill/uBlock/releases)).
#### Location of uBO settings
### Location of uBO Settings
On Linux, the settings are saved in a JSON file located at `~/.mozilla/firefox/[profile name]/browser-extension-data/uBlock0@raymondhill.net/storage.js`.
On Linux, the settings are saved in a JSON file located at:
```
~/.mozilla/firefox/[profile name]/browser-extension-data/uBlock0@raymondhill.net/storage.js
```
When you uninstall the extension, Firefox deletes this file, and all your settings will be lost.
When you uninstall the extension, Firefox deletes that file, so all your settings are lost when you uninstall.
### Firefox Legacy
### Firefox legacy
Compatible with Firefox 24-56, [Pale Moon](https://www.palemoon.org/), and [SeaMonkey](https://www.seamonkey-project.org/).
Compatible with Firefox 24-56, [Pale Moon](https://www.palemoon.org/) and [SeaMonkey](http://www.seamonkey-project.org/).
1. Download `ublock0.firefox-legacy.xpi` ([latest release desirable](https://github.com/gorhill/uBlock-for-firefox-legacy/releases)).
- Right-click and select "Save Link As..."
2. Drag and drop the downloaded `ublock0.firefox-legacy.xpi` into Firefox.
- Download `ublock0.firefox-legacy.xpi` ([latest release desirable](https://github.com/gorhill/uBlock-for-firefox-legacy/releases)).
- Right-click and select "Save Link As..."
- Drag and drop the previously downloaded `ublock0.firefox-legacy.xpi` into Firefox
For Firefox 43 and beyond, you may need to toggle the setting `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
With Firefox 43 and beyond, you may need to toggle the setting `xpinstall.signatures.required` to `false` in `about:config`.<sup>[see "Add-on signing in Firefox"](https://support.mozilla.org/en-US/kb/add-on-signing-in-firefox)</sup>
Your uBlock Origin settings are preserved even after uninstalling the addon.
Your uBlock Origin settings are kept intact even after you uninstall the addon.
- On Linux, settings are saved in a SQLite file located at:
```
~/.mozilla/firefox/[profile name]/extension-data/ublock0.sqlite
```
- On Windows, settings are saved in a SQLite file located at:
```
%APPDATA%\Mozilla\Firefox\Profiles\[profile name]\extension-data\ublock0.sqlite
```
On Linux, the settings are saved in a SQlite file located at `~/.mozilla/firefox/[profile name]/extension-data/ublock0.sqlite`.
## Build Instructions (for Developers)
On Windows, the settings are saved in a SQlite file located at `%APPDATA%\Mozilla\Firefox\Profiles\[profile name]\extension-data\ublock0.sqlite`.
### Build instructions (for developers)
- Clone [uBlock repo](https://github.com/gorhill/uBlock): `git clone https://github.com/gorhill/uBlock.git`
- Set path to uBlock: `cd uBlock`
- The official version of uBO is in the `master` branch
- `git checkout master`
- Build the plugin:
- Chromium: `make chromium`
- Firefox: `make firefox`
- NPM package: `make npm`
- Load the result of the build into your browser:
- Chromium:
- Navigate to `chrome://extensions/`
- Check _"Developer mode"_
- Click _"Load unpacked"_
- Select `/uBlock/dist/build/uBlock0.chromium/`
- Firefox:
- Navigate to `about:debugging#/runtime/this-firefox`
- Click _"Load Temporary Add-on..."_
- Select `/uBlock/dist/build/uBlock0.firefox/`
1. Clone the [uBlock repository](https://github.com/gorhill/uBlock):
```bash
git clone https://github.com/gorhill/uBlock.git
```
2. Set the path to uBlock:
```bash
cd uBlock
```
3. The official version of uBO is in the `master` branch:
```bash
git checkout master
```
4. Build the plugin:
- Chromium:
```bash
make chromium
```
- Firefox:
```bash
make firefox
```
- NPM package:
```bash
make npm
```
5. Load the result of the build into your browser:
- **Chromium:**
- Navigate to `chrome://extensions/`
- Check _"Developer mode"_
- Click _"Load unpacked"_
- Select `/uBlock/dist/build/uBlock0.chromium/`
- **Firefox:**
- Navigate to `about:debugging#/runtime/this-firefox`
- Click _"Load Temporary Add-on..."_
- Select `/uBlock/dist/build/uBlock0.firefox/`

View File

@@ -1,190 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.chromium.zip from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Upload uBlock0.chromium.zip to Chrome store
# - Publish uBlock0.chromium.zip to Chrome store
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
version = sys.argv[1]
else:
version = input('Github release version: ')
version.strip()
if not re.search('^\d+\.\d+\.\d+(b|rc)\d+$', version):
print('Error: Invalid version string.')
exit(1)
cs_extension_id = 'cgbcahbpdhpcegmbfconppldiemgcoii'
tmpdir = tempfile.TemporaryDirectory()
raw_zip_filename = 'uBlock0_' + version + '.chromium.zip'
raw_zip_filepath = os.path.join(tmpdir.name, raw_zip_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The tmp directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'tmp', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.chromium.zip
raw_zip_url = ''
for asset in release_info['assets']:
if asset['name'] == raw_zip_filename:
raw_zip_url = asset['url']
if len(raw_zip_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw zip package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_zip_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_zip_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_zip_filepath))
#
# Upload to Chrome store
#
# Auth tokens
cs_id = input_secret('Chrome store id', 'cs_id')
cs_secret = input_secret('Chrome store secret', 'cs_secret')
cs_refresh = input_secret('Chrome store refresh token', 'cs_refresh')
print('Uploading to Chrome store...')
with open(raw_zip_filepath, 'rb') as f:
print('Generating access token...')
auth_url = 'https://accounts.google.com/o/oauth2/token'
auth_payload = {
'client_id': cs_id,
'client_secret': cs_secret,
'grant_type': 'refresh_token',
'refresh_token': cs_refresh,
}
auth_response = requests.post(auth_url, data=auth_payload)
if auth_response.status_code != 200:
print('Error: Auth failed -- server error {0}'.format(auth_response.status_code))
print(auth_response.text)
exit(1)
response_dict = auth_response.json()
if 'access_token' not in response_dict:
print('Error: Auth failed -- no access token')
exit(1)
# Prepare access token
cs_auth = 'Bearer ' + response_dict['access_token']
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
}
# Upload
print('Uploading package...')
upload_url = 'https://www.googleapis.com/upload/chromewebstore/v1.1/items/{0}'.format(cs_extension_id)
upload_response = requests.put(upload_url, headers=headers, data=f)
f.close()
if upload_response.status_code != 200:
print('Upload failed -- server error {0}'.format(upload_response.status_code))
print(upload_response.text)
exit(1)
response_dict = upload_response.json();
if 'uploadState' not in response_dict or response_dict['uploadState'] != 'SUCCESS':
print('Upload failed -- server error {0}'.format(response_dict['uploadState']))
exit(1)
print('Upload succeeded.')
# Publish
print('Publishing package...')
publish_url = 'https://www.googleapis.com/chromewebstore/v1.1/items/{0}/publish'.format(cs_extension_id)
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
'Content-Length': '0',
}
publish_response = requests.post(publish_url, headers=headers)
if publish_response.status_code != 200:
print('Error: Chrome store publishing failed -- server error {0}'.format(publish_response.status_code))
exit(1)
response_dict = publish_response.json();
if 'status' not in response_dict or response_dict['status'][0] != 'OK':
print('Publishing failed -- server error {0}'.format(response_dict['status']))
exit(1)
print('Publishing succeeded.')
print('All done.')

View File

@@ -1,190 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.chromium.zip from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Upload uBlock0.chromium.zip to Chrome store
# - Publish uBlock0.chromium.zip to Chrome store
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
version = sys.argv[1]
else:
version = input('Github release version: ')
version.strip()
if not re.search('^\d+\.\d+\.\d+$', version):
print('Error: Invalid version string.')
exit(1)
cs_extension_id = 'cjpalhdlnbpafiamejdnhcphjbkeiagm'
tmpdir = tempfile.TemporaryDirectory()
raw_zip_filename = 'uBlock0_' + version + '.chromium.zip'
raw_zip_filepath = os.path.join(tmpdir.name, raw_zip_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The tmp directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'tmp', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.chromium.zip
raw_zip_url = ''
for asset in release_info['assets']:
if asset['name'] == raw_zip_filename:
raw_zip_url = asset['url']
if len(raw_zip_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw zip package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_zip_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_zip_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_zip_filepath))
#
# Upload to Chrome store
#
# Auth tokens
cs_id = input_secret('Chrome store id', 'cs_id')
cs_secret = input_secret('Chrome store secret', 'cs_secret')
cs_refresh = input_secret('Chrome store refresh token', 'cs_refresh')
print('Uploading to Chrome store...')
with open(raw_zip_filepath, 'rb') as f:
print('Generating access token...')
auth_url = 'https://accounts.google.com/o/oauth2/token'
auth_payload = {
'client_id': cs_id,
'client_secret': cs_secret,
'grant_type': 'refresh_token',
'refresh_token': cs_refresh,
}
auth_response = requests.post(auth_url, data=auth_payload)
if auth_response.status_code != 200:
print('Error: Auth failed -- server error {0}'.format(auth_response.status_code))
print(auth_response.text)
exit(1)
response_dict = auth_response.json()
if 'access_token' not in response_dict:
print('Error: Auth failed -- no access token')
exit(1)
# Prepare access token
cs_auth = 'Bearer ' + response_dict['access_token']
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
}
# Upload
print('Uploading package...')
upload_url = 'https://www.googleapis.com/upload/chromewebstore/v1.1/items/{0}'.format(cs_extension_id)
upload_response = requests.put(upload_url, headers=headers, data=f)
f.close()
if upload_response.status_code != 200:
print('Upload failed -- server error {0}'.format(upload_response.status_code))
print(upload_response.text)
exit(1)
response_dict = upload_response.json();
if 'uploadState' not in response_dict or response_dict['uploadState'] != 'SUCCESS':
print('Upload failed -- server error {0}'.format(response_dict['uploadState']))
exit(1)
print('Upload succeeded.')
# Publish
print('Publishing package...')
publish_url = 'https://www.googleapis.com/chromewebstore/v1.1/items/{0}/publish'.format(cs_extension_id)
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
'Content-Length': '0',
}
publish_response = requests.post(publish_url, headers=headers)
if publish_response.status_code != 200:
print('Error: Chrome store publishing failed -- server error {0}'.format(publish_response.status_code))
exit(1)
response_dict = publish_response.json();
if 'status' not in response_dict or response_dict['status'][0] != 'OK':
print('Publishing failed -- server error {0}'.format(response_dict['status']))
exit(1)
print('Publishing succeeded.')
print('All done.')

View File

@@ -1,331 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import jwt
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.firefox.xpi from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Modify raw package to make it self-hosted
# - This is referred to as "unsigned" package
# - Ask AMO to sign uBlock0.firefox.xpi
# - Generate JWT to be used for communication with server
# - Upload unsigned package to AMO
# - Wait for a valid download URL for signed package
# - Download signed package as uBlock0.firefox.signed.xpi
# - This is referred to as "signed" package
# - Upload uBlock0.firefox.signed.xpi to GitHub
# - Remove uBlock0.firefox.xpi from GitHub
# - Modify updates.json to point to new version
# - Commit changes to repo
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# Check that found project root is valid
version_filepath = os.path.join(projdir, 'dist', 'version')
if not os.path.isfile(version_filepath):
print('Version file not found.')
exit(1)
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
tag_version = sys.argv[1]
else:
tag_version = input('Github release version: ')
tag_version.strip()
match = re.search('^(\d+\.\d+\.\d+)(?:(b|rc)(\d+))?$', tag_version)
if not match:
print('Error: Invalid version string.')
exit(1)
ext_version = match.group(1);
if match.group(2):
revision = int(match.group(3))
if match.group(2) == 'rc':
revision += 100;
ext_version += '.' + str(revision)
extension_id = 'uBlock0@raymondhill.net'
tmpdir = tempfile.TemporaryDirectory()
raw_xpi_filename = 'uBlock0_' + tag_version + '.firefox.xpi'
raw_xpi_filepath = os.path.join(tmpdir.name, raw_xpi_filename)
unsigned_xpi_filepath = os.path.join(tmpdir.name, 'uBlock0.firefox.unsigned.xpi')
signed_xpi_filename = 'uBlock0_' + tag_version + '.firefox.signed.xpi'
signed_xpi_filepath = os.path.join(tmpdir.name, signed_xpi_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The tmp directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'tmp', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, tag_version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.firefox.xpi
raw_xpi_url = ''
for asset in release_info['assets']:
if asset['name'] == signed_xpi_filename:
print('Error: Found existing signed self-hosted package.')
exit(1)
if asset['name'] == raw_xpi_filename:
raw_xpi_url = asset['url']
if len(raw_xpi_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw xpi package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_xpi_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_xpi_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_xpi_filepath))
#
# Convert the package to a self-hosted one: add `update_url` to the manifest
#
min_browser_version = '68';
print('Converting raw xpi package into self-hosted xpi package...')
with zipfile.ZipFile(raw_xpi_filepath, 'r') as zipin:
with zipfile.ZipFile(unsigned_xpi_filepath, 'w') as zipout:
for item in zipin.infolist():
data = zipin.read(item.filename)
if item.filename == 'manifest.json':
manifest = json.loads(bytes.decode(data))
min_browser_version = manifest['browser_specific_settings']['gecko']['strict_min_version']
manifest['browser_specific_settings']['gecko']['update_url'] = 'https://raw.githubusercontent.com/{0}/{1}/master/dist/firefox/updates.json'.format(github_owner, github_repo)
data = json.dumps(manifest, indent=2, separators=(',', ': '), sort_keys=True).encode()
zipout.writestr(item, data)
#
# Ask AMO to sign the self-hosted package
# - https://developer.mozilla.org/en-US/Add-ons/Distribution#Distributing_your_add-on
# - https://pyjwt.readthedocs.io/en/latest/usage.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/auth.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/signing.html
#
amo_api_key = ''
amo_secret = ''
def get_jwt_auth():
global amo_api_key
if amo_api_key == '':
amo_api_key = input_secret('AMO API key', 'amo_api_key')
global amo_secret
if amo_secret == '':
amo_secret = input_secret('AMO API secret', 'amo_secret')
amo_nonce = os.urandom(8).hex()
jwt_payload = {
'iss': amo_api_key,
'jti': amo_nonce,
'iat': datetime.datetime.utcnow(),
'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=15),
}
return 'JWT ' + jwt.encode(jwt_payload, amo_secret)
print('Ask AMO to sign self-hosted xpi package...')
with open(unsigned_xpi_filepath, 'rb') as f:
# https://blog.mozilla.org/addons/2019/11/11/security-improvements-in-amo-upload-tools/
# "We recommend allowing up to 15 minutes."
interval = 60 # check every 60 seconds
countdown = 60 * 60 / interval # for at most 60 minutes
headers = { 'Authorization': get_jwt_auth(), }
data = { 'channel': 'unlisted' }
files = { 'upload': f, }
signing_url = 'https://addons.mozilla.org/api/v4/addons/{0}/versions/{1}/'.format(extension_id, ext_version)
print('Submitting package to be signed...')
response = requests.put(signing_url, headers=headers, data=data, files=files)
if response.status_code != 202:
print('Error: Creating new version failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
print('Request for signing self-hosted xpi package succeeded.')
signing_request_response = response.json();
f.close()
print('Waiting for AMO to process the request to sign the self-hosted xpi package...')
# Wait for signed package to be ready
signing_check_url = signing_request_response['url']
while True:
time.sleep(interval)
sys.stdout.write('.')
sys.stdout.flush()
countdown -= 1
if countdown <= 0:
print('Error: AMO signing timed out')
exit(1)
headers = { 'Authorization': get_jwt_auth(), }
response = requests.get(signing_check_url, headers=headers)
if response.status_code != 200:
print('Error: AMO signing failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
signing_check_response = response.json()
if not signing_check_response['processed']:
continue
if not signing_check_response['valid']:
print('Error: AMO validation failed')
print(response.text)
exit(1)
if not signing_check_response['files'] or len(signing_check_response['files']) == 0:
continue
if not signing_check_response['files'][0]['signed']:
continue
if not signing_check_response['files'][0]['download_url']:
print('Error: AMO signing failed')
print(response.text)
exit(1)
print('\r')
print('Self-hosted xpi package successfully signed.')
download_url = signing_check_response['files'][0]['download_url']
print('Downloading signed self-hosted xpi package from {0}...'.format(download_url))
response = requests.get(download_url, headers=headers)
if response.status_code != 200:
print('Error: Download signed package failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
with open(signed_xpi_filepath, 'wb') as f:
f.write(response.content)
f.close()
print('Signed self-hosted xpi package downloaded.')
break
#
# Upload signed package to GitHub
#
# https://developer.github.com/v3/repos/releases/#upload-a-release-asset
print('Uploading signed self-hosted xpi package to GitHub...')
with open(signed_xpi_filepath, 'rb') as f:
url = release_info['upload_url'].replace('{?name,label}', '?name=' + signed_xpi_filename)
headers = {
'Authorization': github_auth,
'Content-Type': 'application/zip',
}
response = requests.post(url, headers=headers, data=f.read())
if response.status_code != 201:
print('Error: Upload signed package failed -- server error: {0}'.format(response.status_code))
exit(1)
#
# Remove raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#delete-a-release-asset
print('Remove raw xpi package from GitHub...')
headers = { 'Authorization': github_auth, }
response = requests.delete(raw_xpi_url, headers=headers)
if response.status_code != 204:
print('Error: Deletion of raw package failed -- server error: {0}'.format(response.status_code))
#
# Update updates.json to point to new package -- but only if just-signed
# package is higher version than current one.
#
# Be sure we are in sync with potentially modified files on remote
r = subprocess.run(['git', 'pull', 'origin', 'master'], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
def int_from_version(version):
parts = version.split('.')
if len(parts) == 3:
parts.append('0')
return int(parts[0])*10e9 + int(parts[1])*10e6 + int(parts[2])*10e3 + int(parts[3])
print('Update GitHub to point to newly signed self-hosted xpi package...')
updates_json_filepath = os.path.join(projdir, 'dist', 'firefox', 'updates.json')
with open(updates_json_filepath) as f:
updates_json = json.load(f)
f.close()
previous_version = updates_json['addons'][extension_id]['updates'][0]['version']
if int_from_version(ext_version) > int_from_version(previous_version):
with open(os.path.join(projdir, 'dist', 'firefox', 'updates.template.json')) as f:
template_json = Template(f.read())
f.close()
updates_json = template_json.substitute(ext_version=ext_version, tag_version=tag_version, min_browser_version=min_browser_version)
with open(updates_json_filepath, 'w') as f:
f.write(updates_json)
f.close()
# - Stage the changed file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[1] == 'M':
subprocess.run(['git', 'add', updates_json_filepath])
# - Commit the staged file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[0] == 'M':
subprocess.run(['git', 'commit', '-m', 'Make Firefox dev build auto-update', updates_json_filepath])
subprocess.run(['git', 'push', 'origin', 'HEAD'])
print('All done.')

View File

@@ -1,13 +1,17 @@
{
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.59.1.8",
"browser_specific_settings": { "gecko": { "strict_min_version": "78.0" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.59.1b8/uBlock0_1.59.1b8.firefox.signed.xpi"
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.66.5.1",
"browser_specific_settings": {
"gecko": {
"strict_min_version": "92.0"
}
},
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.66.5b1/uBlock0_1.66.5b1.firefox.signed.xpi"
}
]
}
]
}
}
}
}

View File

@@ -1,13 +0,0 @@
{
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "$ext_version",
"browser_specific_settings": { "gecko": { "strict_min_version": "$min_browser_version" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/$tag_version/uBlock0_$tag_version.firefox.signed.xpi"
}
]
}
}
}

View File

@@ -1,195 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBOLite_*.chromium.mv3.zip from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Upload uBOLite_*.chromium.mv3.zip to Chrome store
# - Publish uBOLite_*.chromium.mv3.zip to Chrome store
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
version = sys.argv[1]
else:
version = input('Github release version: ')
version.strip()
if not re.search('^uBOLite_\d+\.\d+\.\d+\.\d+$', version):
print('Error: Invalid version string.')
exit(1)
cs_extension_id = 'ddkjiahejlhfcafbddmgiahcphecmpfh'
tmpdir = tempfile.TemporaryDirectory()
raw_zip_filename = ''
raw_zip_filepath = ''
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The build directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'dist', 'build', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBOLite_*.chromium.mv3.zip
raw_zip_url = ''
for asset in release_info['assets']:
if re.search('uBOLite_\d+.\d+.\d+.\d+.chromium.mv3.zip', asset['name']):
raw_zip_url = asset['url']
raw_zip_filename = asset['name']
raw_zip_filepath = os.path.join(tmpdir.name, raw_zip_filename)
if len(raw_zip_url) == 0:
print('Error: Release asset URL not found')
exit(1)
if len(raw_zip_filepath) == 0:
print('Error: Invalid release asset file not set')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw zip package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_zip_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_zip_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_zip_filepath))
#
# Upload to Chrome store
#
# Auth tokens
cs_id = input_secret('Chrome store id', 'cs_id')
cs_secret = input_secret('Chrome store secret', 'cs_secret')
cs_refresh = input_secret('Chrome store refresh token', 'cs_refresh')
print('Uploading to Chrome store...')
with open(raw_zip_filepath, 'rb') as f:
print('Generating access token...')
auth_url = 'https://accounts.google.com/o/oauth2/token'
auth_payload = {
'client_id': cs_id,
'client_secret': cs_secret,
'grant_type': 'refresh_token',
'refresh_token': cs_refresh,
}
auth_response = requests.post(auth_url, data=auth_payload)
if auth_response.status_code != 200:
print('Error: Auth failed -- server error {0}'.format(auth_response.status_code))
print(auth_response.text)
exit(1)
response_dict = auth_response.json()
if 'access_token' not in response_dict:
print('Error: Auth failed -- no access token')
exit(1)
# Prepare access token
cs_auth = 'Bearer ' + response_dict['access_token']
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
}
# Upload
print('Uploading package...')
upload_url = 'https://www.googleapis.com/upload/chromewebstore/v1.1/items/{0}'.format(cs_extension_id)
upload_response = requests.put(upload_url, headers=headers, data=f)
f.close()
if upload_response.status_code != 200:
print('Upload failed -- server error {0}'.format(upload_response.status_code))
print(upload_response.text)
exit(1)
response_dict = upload_response.json();
if 'uploadState' not in response_dict or response_dict['uploadState'] != 'SUCCESS':
print('Upload failed -- server error {0}'.format(response_dict['uploadState']))
exit(1)
print('Upload succeeded.')
# Publish
print('Publishing package...')
publish_url = 'https://www.googleapis.com/chromewebstore/v1.1/items/{0}/publish'.format(cs_extension_id)
headers = {
'Authorization': cs_auth,
'x-goog-api-version': '2',
'Content-Length': '0',
}
publish_response = requests.post(publish_url, headers=headers)
if publish_response.status_code != 200:
print('Error: Chrome store publishing failed -- server error {0}'.format(publish_response.status_code))
exit(1)
response_dict = publish_response.json();
if 'status' not in response_dict or response_dict['status'][0] != 'OK':
print('Publishing failed -- server error {0}'.format(response_dict['status']))
exit(1)
print('Publishing succeeded.')
print('All done.')

View File

@@ -1,326 +0,0 @@
#!/usr/bin/env python3
import datetime
import json
import jwt
import os
import re
import requests
import shutil
import subprocess
import sys
import tempfile
import time
import zipfile
from string import Template
# - Download target (raw) uBlock0.firefox.xpi from GitHub
# - This is referred to as "raw" package
# - This will fail if not a dev build
# - Modify raw package to make it self-hosted
# - This is referred to as "unsigned" package
# - Ask AMO to sign uBlock0.firefox.xpi
# - Generate JWT to be used for communication with server
# - Upload unsigned package to AMO
# - Wait for a valid download URL for signed package
# - Download signed package as uBlock0.firefox.signed.xpi
# - This is referred to as "signed" package
# - Upload uBlock0.firefox.signed.xpi to GitHub
# - Remove uBlock0.firefox.xpi from GitHub
# - Modify updates.json to point to new version
# - Commit changes to repo
# Find path to project root
projdir = os.path.split(os.path.abspath(__file__))[0]
while not os.path.isdir(os.path.join(projdir, '.git')):
projdir = os.path.normpath(os.path.join(projdir, '..'))
# Check that found project root is valid
version_filepath = os.path.join(projdir, 'dist', 'version')
if not os.path.isfile(version_filepath):
print('Version file not found.')
exit(1)
# We need a version string to work with
if len(sys.argv) >= 2 and sys.argv[1]:
tag_version = sys.argv[1]
else:
tag_version = input('Github release version: ')
tag_version.strip()
match = re.search('^uBOLite_(\d+\.\d+\.\d+.\d+)$', tag_version)
if not match:
print('Error: Invalid version string.')
exit(1)
ext_version = match.group(1);
extension_id = 'uBOLite@raymondhill.net'
tmpdir = tempfile.TemporaryDirectory()
raw_xpi_filename = tag_version + '.firefox.mv3.xpi'
raw_xpi_filepath = os.path.join(tmpdir.name, raw_xpi_filename)
unsigned_xpi_filepath = os.path.join(tmpdir.name, 'uBOLite.firefox.unsigned.xpi')
signed_xpi_filename = tag_version + '.firefox.signed.mv3.xpi'
signed_xpi_filepath = os.path.join(tmpdir.name, signed_xpi_filename)
github_owner = 'gorhill'
github_repo = 'uBlock'
# Load/save auth secrets
# The tmp directory is excluded from git
ubo_secrets = dict()
ubo_secrets_filename = os.path.join(projdir, 'tmp', 'ubo_secrets')
if os.path.isfile(ubo_secrets_filename):
with open(ubo_secrets_filename) as f:
ubo_secrets = json.load(f)
def input_secret(prompt, token):
if token in ubo_secrets:
prompt += ''
prompt += ': '
value = input(prompt).strip()
if len(value) == 0:
if token not in ubo_secrets:
print('Token error:', token)
exit(1)
value = ubo_secrets[token]
elif token not in ubo_secrets or value != ubo_secrets[token]:
ubo_secrets[token] = value
exists = os.path.isfile(ubo_secrets_filename)
with open(ubo_secrets_filename, 'w') as f:
json.dump(ubo_secrets, f, indent=2)
if not exists:
os.chmod(ubo_secrets_filename, 0o600)
return value
# GitHub API token
github_token = input_secret('Github token', 'github_token')
github_auth = 'token ' + github_token
#
# Get metadata from GitHub about the release
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release
print('Downloading release info from GitHub...')
release_info_url = 'https://api.github.com/repos/{0}/{1}/releases/tags/{2}'.format(github_owner, github_repo, tag_version)
headers = { 'Authorization': github_auth, }
response = requests.get(release_info_url, headers=headers)
if response.status_code != 200:
print('Error: Release not found: {0}'.format(response.status_code))
exit(1)
release_info = response.json()
#
# Extract URL to raw package from metadata
#
# Find url for uBlock0.firefox.xpi
raw_xpi_url = ''
for asset in release_info['assets']:
if asset['name'] == signed_xpi_filename:
print('Error: Found existing signed self-hosted package.')
exit(1)
if asset['name'] == raw_xpi_filename:
raw_xpi_url = asset['url']
if len(raw_xpi_url) == 0:
print('Error: Release asset URL not found')
exit(1)
#
# Download raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#get-a-single-release-asset
print('Downloading raw xpi package from GitHub...')
headers = {
'Authorization': github_auth,
'Accept': 'application/octet-stream',
}
response = requests.get(raw_xpi_url, headers=headers)
# Redirections are transparently handled:
# http://docs.python-requests.org/en/master/user/quickstart/#redirection-and-history
if response.status_code != 200:
print('Error: Downloading raw package failed -- server error {0}'.format(response.status_code))
exit(1)
with open(raw_xpi_filepath, 'wb') as f:
f.write(response.content)
print('Downloaded raw package saved as {0}'.format(raw_xpi_filepath))
#
# Convert the package to a self-hosted one: add `update_url` to the manifest
#
min_browser_version = '114.0';
print('Converting raw xpi package into self-hosted xpi package...')
with zipfile.ZipFile(raw_xpi_filepath, 'r') as zipin:
with zipfile.ZipFile(unsigned_xpi_filepath, 'w') as zipout:
for item in zipin.infolist():
data = zipin.read(item.filename)
if item.filename == 'manifest.json':
manifest = json.loads(bytes.decode(data))
min_browser_version = manifest['browser_specific_settings']['gecko']['strict_min_version']
manifest['browser_specific_settings']['gecko']['update_url'] = 'https://raw.githubusercontent.com/{0}/{1}/master/dist/mv3/firefox/updates.json'.format(github_owner, github_repo)
data = json.dumps(manifest, indent=2, separators=(',', ': '), sort_keys=True).encode()
zipout.writestr(item, data)
#
# Ask AMO to sign the self-hosted package
# - https://developer.mozilla.org/en-US/Add-ons/Distribution#Distributing_your_add-on
# - https://pyjwt.readthedocs.io/en/latest/usage.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/auth.html
# - https://addons-server.readthedocs.io/en/latest/topics/api/signing.html
#
amo_api_key = ''
amo_secret = ''
def get_jwt_auth():
global amo_api_key
if amo_api_key == '':
amo_api_key = input_secret('AMO API key', 'amo_api_key')
global amo_secret
if amo_secret == '':
amo_secret = input_secret('AMO API secret', 'amo_secret')
amo_nonce = os.urandom(8).hex()
jwt_payload = {
'iss': amo_api_key,
'jti': amo_nonce,
'iat': datetime.datetime.utcnow(),
'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=15),
}
return 'JWT ' + jwt.encode(jwt_payload, amo_secret)
print('Ask AMO to sign self-hosted xpi package...')
with open(unsigned_xpi_filepath, 'rb') as f:
# https://blog.mozilla.org/addons/2019/11/11/security-improvements-in-amo-upload-tools/
# "We recommend allowing up to 15 minutes."
interval = 60 # check every 60 seconds
countdown = 60 * 60 / interval # for at most 60 minutes
headers = { 'Authorization': get_jwt_auth(), }
data = { 'channel': 'unlisted' }
files = { 'upload': f, }
signing_url = 'https://addons.mozilla.org/api/v4/addons/{0}/versions/{1}/'.format(extension_id, ext_version)
print('Submitting package to be signed...')
response = requests.put(signing_url, headers=headers, data=data, files=files)
if response.status_code != 202:
print('Error: Creating new version failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
print('Request for signing self-hosted xpi package succeeded.')
signing_request_response = response.json();
f.close()
print('Waiting for AMO to process the request to sign the self-hosted xpi package...')
# Wait for signed package to be ready
signing_check_url = signing_request_response['url']
while True:
time.sleep(interval)
sys.stdout.write('.')
sys.stdout.flush()
countdown -= 1
if countdown <= 0:
print('Error: AMO signing timed out')
exit(1)
headers = { 'Authorization': get_jwt_auth(), }
response = requests.get(signing_check_url, headers=headers)
if response.status_code != 200:
print('Error: AMO signing failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
signing_check_response = response.json()
if not signing_check_response['processed']:
continue
if not signing_check_response['valid']:
print('Error: AMO validation failed')
print(response.text)
exit(1)
if not signing_check_response['files'] or len(signing_check_response['files']) == 0:
continue
if not signing_check_response['files'][0]['signed']:
continue
if not signing_check_response['files'][0]['download_url']:
print('Error: AMO signing failed')
print(response.text)
exit(1)
print('\r')
print('Self-hosted xpi package successfully signed.')
download_url = signing_check_response['files'][0]['download_url']
print('Downloading signed self-hosted xpi package from {0}...'.format(download_url))
response = requests.get(download_url, headers=headers)
if response.status_code != 200:
print('Error: Download signed package failed -- server error {0}'.format(response.status_code))
print(response.text)
exit(1)
with open(signed_xpi_filepath, 'wb') as f:
f.write(response.content)
f.close()
print('Signed self-hosted xpi package downloaded.')
break
#
# Upload signed package to GitHub
#
# https://developer.github.com/v3/repos/releases/#upload-a-release-asset
print('Uploading signed self-hosted xpi package to GitHub...')
with open(signed_xpi_filepath, 'rb') as f:
url = release_info['upload_url'].replace('{?name,label}', '?name=' + signed_xpi_filename)
headers = {
'Authorization': github_auth,
'Content-Type': 'application/zip',
}
response = requests.post(url, headers=headers, data=f.read())
if response.status_code != 201:
print('Error: Upload signed package failed -- server error: {0}'.format(response.status_code))
exit(1)
#
# Remove raw package from GitHub
#
# https://developer.github.com/v3/repos/releases/#delete-a-release-asset
print('Remove raw xpi package from GitHub...')
headers = { 'Authorization': github_auth, }
response = requests.delete(raw_xpi_url, headers=headers)
if response.status_code != 204:
print('Error: Deletion of raw package failed -- server error: {0}'.format(response.status_code))
#
# Update updates.json to point to new package -- but only if just-signed
# package is higher version than current one.
#
# Be sure we are in sync with potentially modified files on remote
r = subprocess.run(['git', 'pull', 'origin', 'master'], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
def int_from_version(version):
parts = version.split('.')
if len(parts) == 3:
parts.append('0')
return int(parts[0])*10e9 + int(parts[1])*10e6 + int(parts[2])*10e3 + int(parts[3])
print('Update GitHub to point to newly signed self-hosted xpi package...')
updates_json_filepath = os.path.join(projdir, 'dist', 'mv3', 'firefox', 'updates.json')
with open(updates_json_filepath) as f:
updates_json = json.load(f)
f.close()
previous_version = updates_json['addons'][extension_id]['updates'][0]['version']
if int_from_version(ext_version) > int_from_version(previous_version):
with open(os.path.join(projdir, 'dist', 'mv3', 'firefox', 'updates.template.json')) as f:
template_json = Template(f.read())
f.close()
updates_json = template_json.substitute(ext_version=ext_version, tag_version=tag_version, min_browser_version=min_browser_version)
with open(updates_json_filepath, 'w') as f:
f.write(updates_json)
f.close()
# - Stage the changed file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[1] == 'M':
subprocess.run(['git', 'add', updates_json_filepath])
# - Commit the staged file
r = subprocess.run(['git', 'status', '-s', updates_json_filepath], stdout=subprocess.PIPE)
rout = bytes.decode(r.stdout).strip()
if len(rout) >= 2 and rout[0] == 'M':
subprocess.run(['git', 'commit', '-m', 'Make Firefox dev build auto-update', updates_json_filepath])
subprocess.run(['git', 'push', 'origin', 'HEAD'])
print('All done.')

View File

@@ -1,13 +0,0 @@
{
"addons": {
"uBOLite@raymondhill.net": {
"updates": [
{
"version": "1.0.23.8125",
"browser_specific_settings": { "gecko": { "strict_min_version": "114.0" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/uBOLite_1.0.23.8125/uBOLite_1.0.23.8125.firefox.signed.mv3.xpi"
}
]
}
}
}

View File

@@ -1,13 +0,0 @@
{
"addons": {
"uBOLite@raymondhill.net": {
"updates": [
{
"version": "$ext_version",
"browser_specific_settings": { "gecko": { "strict_min_version": "$min_browser_version" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/$tag_version/$tag_version.firefox.signed.mv3.xpi"
}
]
}
}
}

1584
dist/mv3/log.txt vendored

File diff suppressed because one or more lines are too long

2
dist/version vendored
View File

@@ -1 +1 @@
1.59.1.9
1.66.5.2

51
eslint.config.mjs Normal file
View File

@@ -0,0 +1,51 @@
import js from "@eslint/js";
import globals from "globals";
import json from "@eslint/json";
import { includeIgnoreFile } from "@eslint/compat";
import path from "node:path";
import { fileURLToPath } from "node:url";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const gitignorePath = path.resolve(__dirname, ".gitignore");
export default [ includeIgnoreFile(gitignorePath), {
files: ["**/*.js", "**/*.mjs"],
...js.configs.recommended,
}, {
files: ["**/*.js", "**/*.mjs"],
languageOptions: {
globals: {
...globals.browser,
browser: "readonly",
chrome: "readonly",
vAPI: "readonly",
},
sourceType: "module",
},
rules: {
eqeqeq: ["warn", "always"],
indent: ["error", 4, {
ignoredNodes: [
"Program > BlockStatement",
"Program > ExpressionStatement > CallExpression > ArrowFunctionExpression > BlockStatement",
"Program > ExpressionStatement > CallExpression > FunctionExpression > BlockStatement",
"Program > IfStatement > BlockStatement",
"Program > VariableDeclaration > VariableDeclarator > CallExpression > ArrowFunctionExpression > BlockStatement",
"CallExpression > MemberExpression",
"ArrayExpression > *",
"ObjectExpression > *",
],
}],
"no-control-regex": "off",
"no-empty": "off",
"sort-imports": "error",
"strict": "error",
},
}, {
files: ["**/*.json"],
ignores: ["package-lock.json"],
language: "json/json",
...json.configs.recommended,
} ];

1163
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

32
package.json Normal file
View File

@@ -0,0 +1,32 @@
{
"name": "uBlock",
"version": "1.0.0",
"description": "npm dev tools",
"type": "module",
"scripts": {
"lint": "eslint --no-warn-ignored --ignore-pattern \"**/lib/\" --ignore-pattern \"**/npm/\" -- \"./src/js/*.js\" \"./src/js/**/*.js\" \"./**/*.json\" \"./platform/**/*.js\"",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/gorhill/uBlock.git"
},
"author": "Raymond Hill",
"license": "GPLv3",
"bugs": {
"url": "https://github.com/gorhill/uBlock/issues"
},
"homepage": "https://github.com/gorhill/uBlock#readme",
"engines": {
"node": ">=22",
"npm": ">=11"
},
"devDependencies": {
"@eslint/compat": "^1.2.4",
"@eslint/js": "^9.17.0",
"@eslint/json": "^0.13.1",
"eslint": "^9.34.0",
"eslint-formatter-compact": "^8.40.0",
"globals": "^15.14.0"
}
}

View File

@@ -1,123 +0,0 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2014-present Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
'use strict';
/******************************************************************************/
import publicSuffixList from './lib/publicsuffixlist/publicsuffixlist.js';
import punycode from './lib/punycode.js';
import staticNetFilteringEngine from './js/static-net-filtering.js';
import { FilteringContext } from './js/filtering-context.js';
import { LineIterator } from './js/text-utils.js';
import * as sfp from './js/static-filtering-parser.js';
import {
CompiledListReader,
CompiledListWriter
} from './js/static-filtering-io.js';
/******************************************************************************/
function compileList(rawText, writer) {
const lineIter = new LineIterator(rawText);
const parser = new sfp.AstFilterParser({
interactive: true,
maxTokenLength: staticNetFilteringEngine.MAX_TOKEN_LENGTH,
});
const compiler = staticNetFilteringEngine.createCompiler();
while ( lineIter.eot() === false ) {
let line = lineIter.next();
while ( line.endsWith(' \\') ) {
if ( lineIter.peek(4) !== ' ' ) { break; }
line = line.slice(0, -2).trim() + lineIter.next().trim();
}
parser.parse(line);
if ( parser.isFilter() === false ) { continue; }
if ( parser.isNetworkFilter() === false ) { continue; }
if ( compiler.compile(parser, writer) ) { continue; }
if ( compiler.error !== undefined ) {
console.info(JSON.stringify({
realm: 'message',
type: 'error',
text: compiler.error
}));
}
}
return writer.toString();
}
function applyList(name, raw) {
const writer = new CompiledListWriter();
writer.properties.set('name', name);
const compiled = compileList(raw, writer);
const reader = new CompiledListReader(compiled);
staticNetFilteringEngine.fromCompiled(reader);
}
function enableWASM(path) {
return Promise.all([
publicSuffixList.enableWASM(`${path}/lib/publicsuffixlist`),
staticNetFilteringEngine.enableWASM(`${path}/js`),
]);
}
function pslInit(raw) {
if ( typeof raw !== 'string' || raw.trim() === '' ) {
console.info('Unable to populate public suffix list');
return;
}
publicSuffixList.parse(raw, punycode.toASCII);
console.info('Public suffix list populated');
}
function restart(lists) {
// Remove all filters
reset();
if ( Array.isArray(lists) && lists.length !== 0 ) {
// Populate filtering engine with filter lists
for ( const { name, raw } of lists ) {
applyList(name, raw);
}
// Commit changes
staticNetFilteringEngine.freeze();
staticNetFilteringEngine.optimize();
}
return staticNetFilteringEngine;
}
function reset() {
staticNetFilteringEngine.reset();
}
export {
FilteringContext,
enableWASM,
pslInit,
restart,
};

View File

@@ -1,71 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>uBO Static Network Filtering Engine</title>
</head>
<body>
<script type="module">
import {
FilteringContext,
enableWASM,
pslInit,
restart,
} from './main.js';
(async ( ) => {
await enableWASM('.');
await fetch('./data/effective_tld_names.dat').then(response => {
return response.text();
}).then(pslRaw => {
pslInit(pslRaw);
});
const snfe = await Promise.all([
fetch('./data/easylist.txt').then(response => {
return response.text();
}),
fetch('./data/easyprivacy.txt').then(response => {
return response.text();
}),
]).then(rawLists => {
return restart([
{ name: 'easylist', raw: rawLists[0] },
{ name: 'easyprivacy', raw: rawLists[1] },
]);
});
// Reuse filtering context: it's what uBO does
const fctxt = new FilteringContext();
// Tests
// Not blocked
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
fctxt.setURL('https://www.bloomberg.com/tophat/assets/v2.6.1/that.css');
fctxt.setType('stylesheet');
if ( snfe.matchRequest(fctxt) !== 0 ) {
console.log(snfe.toLogData());
}
// Blocked
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
fctxt.setURL('https://securepubads.g.doubleclick.net/tag/js/gpt.js');
fctxt.setType('script');
if ( snfe.matchRequest(fctxt) !== 0 ) {
console.log(snfe.toLogData());
}
// Unblocked
fctxt.setDocOriginFromURL('https://www.bloomberg.com/');
fctxt.setURL('https://sourcepointcmp.bloomberg.com/ccpa.js');
fctxt.setType('script');
if ( snfe.matchRequest(fctxt) !== 0 ) {
console.log(snfe.toLogData());
}
restart();
})();
</script>
</body>
</html>

View File

@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<title></title>
<script async src="js/is-webrtc-supported.js"></script>
<script async src="js/is-webrtc-supported.js" type="module"></script>
</head>
<body></body>
</html>

View File

@@ -30,11 +30,9 @@
// collected.
(function() {
'use strict';
var pc = null;
let pc = null;
try {
var PC = self.RTCPeerConnection || self.webkitRTCPeerConnection;
const PC = self.RTCPeerConnection || self.webkitRTCPeerConnection;
if ( PC ) {
pc = new PC(null);
}

View File

@@ -89,7 +89,7 @@
},
"incognito": "split",
"manifest_version": 2,
"minimum_chrome_version": "73.0",
"minimum_chrome_version": "93.0",
"name": "uBlock Origin",
"options_ui": {
"page": "dashboard.html",

View File

@@ -19,10 +19,6 @@
Home: https://github.com/gorhill/uBlock
*/
/* globals browser */
'use strict';
/******************************************************************************/
// https://github.com/uBlockOrigin/uBlock-issues/issues/1659
@@ -30,6 +26,8 @@
// so we synthetize these missing events when this happens.
// https://github.com/uBlockOrigin/uAssets/issues/10323
// Also mind whether the new tab is launched from an external application.
// https://github.com/uBlockOrigin/uBlock-issues/issues/2227
// Revert commit related to issue above.
vAPI.Tabs = class extends vAPI.Tabs {
constructor() {
@@ -70,8 +68,7 @@ vAPI.Tabs = class extends vAPI.Tabs {
const isClientRedirect =
Array.isArray(details.transitionQualifiers) &&
details.transitionQualifiers.includes('client_redirect');
const isStartPage = details.transitionType === 'start_page';
if ( isClientRedirect === false && isStartPage === false ) { return; }
if ( isClientRedirect === false ) { return; }
this.onCreatedNavigationTargetHandler({
tabId: details.tabId,
sourceTabId: details.tabId,
@@ -90,71 +87,47 @@ vAPI.Tabs = class extends vAPI.Tabs {
['gif','image'],['ico','image'],['jpeg','image'],['jpg','image'],['png','image'],['webp','image']
]);
const headerValue = (headers, name) => {
let i = headers.length;
while ( i-- ) {
if ( headers[i].name.toLowerCase() === name ) {
return headers[i].value.trim();
}
}
return '';
};
const parsedURL = new URL('https://www.example.org/');
// Extend base class to normalize as per platform.
// Extend base class to normalize as per platform
vAPI.Net = class extends vAPI.Net {
normalizeDetails(details) {
// Chromium 63+ supports the `initiator` property, which contains
// the URL of the origin from which the network request was made.
if (
typeof details.initiator === 'string' &&
details.initiator !== 'null'
) {
// the URL of the origin from which the network request was made
if ( details.initiator && details.initiator !== 'null' ) {
details.documentUrl = details.initiator;
}
let type = details.type;
const type = details.type;
if ( type === 'imageset' ) {
details.type = 'image';
return;
}
// The rest of the function code is to normalize type
if ( type !== 'other' ) { return; }
// Try to map known "extension" part of URL to request type.
parsedURL.href = details.url;
const path = parsedURL.pathname,
pos = path.indexOf('.', path.length - 6);
if ( pos !== -1 && (type = extToTypeMap.get(path.slice(pos + 1))) ) {
details.type = type;
// Try to map known "extension" part of URL to request type
if ( details.responseHeaders === undefined ) {
parsedURL.href = details.url;
const path = parsedURL.pathname;
const pos = path.indexOf('.', path.length - 6);
if ( pos !== -1 ) {
details.type = extToTypeMap.get(path.slice(pos + 1)) || type;
}
return;
}
// Try to extract type from response headers if present.
if ( details.responseHeaders ) {
type = headerValue(details.responseHeaders, 'content-type');
if ( type.startsWith('font/') ) {
details.type = 'font';
return;
}
if ( type.startsWith('image/') ) {
details.type = 'image';
return;
}
if ( type.startsWith('audio/') || type.startsWith('video/') ) {
details.type = 'media';
return;
}
// Try to extract type from response headers
const ctype = this.headerValue(details.responseHeaders, 'content-type');
if ( ctype.startsWith('font/') ) {
details.type = 'font';
} else if ( ctype.startsWith('image/') ) {
details.type = 'image';
} else if ( ctype.startsWith('audio/') || ctype.startsWith('video/') ) {
details.type = 'media';
}
}
// https://www.reddit.com/r/uBlockOrigin/comments/9vcrk3/
// Some types can be mapped from 'other', thus include 'other' if and
// only if the caller is interested in at least one of those types.
// only if the caller is interested in at least one of those types
denormalizeTypes(types) {
if ( types.length === 0 ) {
return Array.from(this.validTypes);
@@ -236,19 +209,43 @@ vAPI.prefetching = (( ) => {
/******************************************************************************/
vAPI.scriptletsInjector = ((doc, details) => {
let script;
try {
script = doc.createElement('script');
script.appendChild(doc.createTextNode(details.scriptlets));
(doc.head || doc.documentElement).appendChild(script);
self.uBO_scriptletsInjected = details.filters;
} catch (ex) {
}
if ( script ) {
script.remove();
script.textContent = '';
}
}).toString();
vAPI.scriptletsInjector = (( ) => {
const parts = [
'(',
function(details) {
if ( self.uBO_scriptletsInjected !== undefined ) { return; }
const doc = document;
const { location } = doc;
if ( location === null ) { return; }
const { hostname } = location;
if ( hostname !== '' && details.hostname !== hostname ) { return; }
let script;
try {
script = doc.createElement('script');
script.appendChild(doc.createTextNode(details.scriptlets));
(doc.head || doc.documentElement).appendChild(script);
self.uBO_scriptletsInjected = details.filters;
} catch {
}
if ( script ) {
script.remove();
script.textContent = '';
}
return 0;
}.toString(),
')(',
'json-slot',
');',
];
const jsonSlot = parts.indexOf('json-slot');
return (hostname, details) => {
parts[jsonSlot] = JSON.stringify({
hostname,
scriptlets: details.mainWorld,
filters: details.filters,
});
return parts.join('');
};
})();
/******************************************************************************/

View File

@@ -43,15 +43,12 @@ if ( vAPI.canWASM === false ) {
vAPI.supportsUserStylesheets = vAPI.webextFlavor.soup.has('user_stylesheet');
const hasOwnProperty = (o, p) =>
Object.prototype.hasOwnProperty.call(o, p);
/******************************************************************************/
vAPI.app = {
name: manifest.name.replace(/ dev\w+ build/, ''),
version: (( ) => {
let version = manifest.version;
let version = manifest.version_name || manifest.version;
const match = /(\d+\.\d+\.\d+)(?:\.(\d+))?/.exec(version);
if ( match && match[2] ) {
const v = parseInt(match[2], 10);
@@ -190,7 +187,7 @@ vAPI.browserSettings = (( ) => {
set: function(details) {
for ( const setting in details ) {
if ( hasOwnProperty(details, setting) === false ) { continue; }
if ( Object.hasOwn(details, setting) === false ) { continue; }
switch ( setting ) {
case 'prefetching': {
const enabled = !!details[setting];
@@ -320,7 +317,7 @@ vAPI.Tabs = class {
try {
result = await webext.tabs.executeScript(...args);
}
catch(reason) {
catch {
}
return Array.isArray(result) ? result : [];
}
@@ -334,7 +331,7 @@ vAPI.Tabs = class {
try {
tab = await webext.tabs.get(tabId);
}
catch(reason) {
catch {
}
return tab instanceof Object ? tab : null;
}
@@ -351,7 +348,7 @@ vAPI.Tabs = class {
try {
await webext.tabs.insertCSS(...arguments);
}
catch(reason) {
catch {
}
}
@@ -360,7 +357,7 @@ vAPI.Tabs = class {
try {
tabs = await webext.tabs.query(queryInfo);
}
catch(reason) {
catch {
}
return Array.isArray(tabs) ? tabs : [];
}
@@ -372,7 +369,7 @@ vAPI.Tabs = class {
try {
await webext.tabs.removeCSS(...arguments);
}
catch(reason) {
catch {
}
}
@@ -530,7 +527,7 @@ vAPI.Tabs = class {
try {
tab = await webext.tabs.update(...arguments);
}
catch (reason) {
catch {
}
return tab instanceof Object ? tab : null;
}
@@ -556,7 +553,7 @@ vAPI.Tabs = class {
try {
await webext.tabs.remove(tabId);
}
catch (reason) {
catch {
}
}
@@ -569,7 +566,7 @@ vAPI.Tabs = class {
{ bypassCache: bypassCache === true }
);
}
catch (reason) {
catch {
}
}
@@ -668,7 +665,7 @@ if ( webext.windows instanceof Object ) {
try {
win = await webext.windows.get(...arguments);
}
catch (reason) {
catch {
}
return win instanceof Object ? win : null;
},
@@ -677,7 +674,7 @@ if ( webext.windows instanceof Object ) {
try {
win = await webext.windows.create(...arguments);
}
catch (reason) {
catch {
}
return win instanceof Object ? win : null;
},
@@ -686,7 +683,7 @@ if ( webext.windows instanceof Object ) {
try {
win = await webext.windows.update(...arguments);
}
catch (reason) {
catch {
}
return win instanceof Object ? win : null;
},
@@ -702,7 +699,7 @@ if ( webext.browserAction instanceof Object ) {
try {
await webext.browserAction.setTitle(...arguments);
}
catch (reason) {
catch {
}
},
};
@@ -712,28 +709,28 @@ if ( webext.browserAction instanceof Object ) {
try {
await webext.browserAction.setBadgeTextColor(...arguments);
}
catch (reason) {
catch {
}
};
vAPI.browserAction.setBadgeBackgroundColor = async function() {
try {
await webext.browserAction.setBadgeBackgroundColor(...arguments);
}
catch (reason) {
catch {
}
};
vAPI.browserAction.setBadgeText = async function() {
try {
await webext.browserAction.setBadgeText(...arguments);
}
catch (reason) {
catch {
}
};
vAPI.browserAction.setIcon = async function() {
try {
await webext.browserAction.setIcon(...arguments);
}
catch (reason) {
catch {
}
};
}
@@ -807,7 +804,7 @@ if ( webext.browserAction instanceof Object ) {
let data;
try {
data = ctx.getImageData(0, 0, w, h);
} catch(ex) {
} catch {
}
return data;
};
@@ -958,6 +955,7 @@ vAPI.messaging = {
onPortDisconnect: function(port) {
this.ports.delete(port.name);
void browser.runtime.lastError;
},
// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/Port
@@ -1083,7 +1081,7 @@ vAPI.messaging = {
msgId: this.msgId,
msg: response !== undefined ? response : null,
});
} catch (ex) {
} catch {
this.messaging.onPortDisconnect(this.port);
}
// Store for reuse
@@ -1219,7 +1217,7 @@ vAPI.Net = class {
{
const wrrt = browser.webRequest.ResourceType;
for ( const typeKey in wrrt ) {
if ( hasOwnProperty(wrrt, typeKey) ) {
if ( Object.hasOwn(wrrt, typeKey) ) {
this.validTypes.add(wrrt[typeKey]);
}
}
@@ -1381,6 +1379,14 @@ vAPI.Net = class {
if ( this.suspendDepth !== 0 ) { return; }
this.unsuspendAllRequests(discard);
}
headerValue(headers, name) {
for ( const header of headers ) {
if ( header.name.toLowerCase() === name ) {
return header.value.trim();
}
}
return '';
}
static canSuspend() {
return false;
}
@@ -1464,7 +1470,7 @@ vAPI.adminStorage = (( ) => {
let store;
try {
store = await webext.storage.managed.get();
} catch(ex) {
} catch {
}
vAPI.storage.set({ cachedManagedStorage: store || {} });
};
@@ -1479,7 +1485,7 @@ vAPI.adminStorage = (( ) => {
} else {
bin = bin.cachedManagedStorage;
}
} catch(ex) {
} catch {
bin = {};
}
cacheManagedStorage();
@@ -1679,7 +1685,7 @@ vAPI.cloud = (( ) => {
// operation to fail.
try {
await deleteChunks(datakey, chunkCount + 1);
} catch (reason) {
} catch {
}
// Push the data to browser-provided cloud storage.
@@ -1733,7 +1739,7 @@ vAPI.cloud = (( ) => {
if ( typeof entry === 'string' ) {
entry = JSON.parse(entry);
}
} catch(_) {
} catch {
}
return entry;
};
@@ -1754,7 +1760,7 @@ vAPI.cloud = (( ) => {
webext.storage.sync.getBytesInUse(keys),
webext.storage.sync.getBytesInUse(null),
]);
} catch(ex) {
} catch {
}
if ( Array.isArray(results) === false ) { return; }
return { used: results[0], total: results[1], max: QUOTA_BYTES };

View File

@@ -165,7 +165,7 @@ vAPI.messaging = {
}
try {
this.port = browser.runtime.connect({name: vAPI.sessionId}) || null;
} catch (ex) {
} catch {
this.port = null;
}
// Not having a valid port at this point means the main process is

View File

@@ -163,9 +163,12 @@ vAPI.webextFlavor = {
// This is always true.
soup.add('ublock').add('webext');
soup.add('ipaddress');
// Whether this is a dev build.
if ( /^\d+\.\d+\.\d+\D/.test(browser.runtime.getManifest().version) ) {
const manifest = browser.runtime.getManifest();
const version = manifest.version_name || manifest.version;
if ( /^\d+\.\d+\.\d+\D/.test(version) ) {
soup.add('devbuild');
}
@@ -177,8 +180,11 @@ vAPI.webextFlavor = {
soup.add('native_css_has');
}
const extensionOrigin = browser.runtime.getURL('');
// Order of tests is important
if ( browser.runtime.getURL('').startsWith('moz-extension://') ) {
flavor.isGecko = extensionOrigin.startsWith('moz-extension://');
if ( flavor.isGecko ) {
soup.add('firefox')
.add('user_stylesheet')
.add('html_filtering');

View File

@@ -19,22 +19,12 @@
Home: https://github.com/gorhill/uBlock
*/
/* eslint-disable-next-line no-redeclare */
/* globals process */
'use strict';
/******************************************************************************/
import { strict as assert } from 'assert';
import { StaticNetFilteringEngine, enableWASM } from './index.js';
import { mkdir, readFile, writeFile } from 'fs/promises';
import { createRequire } from 'module';
import { readFile, writeFile, mkdir } from 'fs/promises';
import { dirname } from 'path';
import { fileURLToPath } from 'url';
const __dirname = dirname(fileURLToPath(import.meta.url));
import { enableWASM, StaticNetFilteringEngine } from './index.js';
/******************************************************************************/

View File

@@ -17,10 +17,10 @@
"browser_specific_settings": {
"gecko": {
"id": "uBlock0@raymondhill.net",
"strict_min_version": "78.0"
"strict_min_version": "92.0"
},
"gecko_android": {
"strict_min_version": "79.0"
"strict_min_version": "92.0"
}
},
"commands": {

View File

@@ -19,12 +19,6 @@
Home: https://github.com/gorhill/uBlock
*/
/* globals browser */
'use strict';
/******************************************************************************/
import {
domainFromHostname,
hostnameFromNetworkURL,
@@ -32,26 +26,20 @@ import {
/******************************************************************************/
// Canonical name-uncloaking feature.
let cnameUncloakEnabled = browser.dns instanceof Object;
let cnameUncloakProxied = false;
// https://github.com/uBlockOrigin/uBlock-issues/issues/911
// We detect here whether network requests are proxied, and if so,
// de-aliasing of hostnames will be disabled to avoid possible
// DNS leaks.
const proxyDetector = function(details) {
if ( details.proxyInfo instanceof Object ) {
cnameUncloakEnabled = false;
proxyDetectorTryCount = 0;
const dnsAPI = browser.dns || {
resolve() {
return Promise.resolve();
}
if ( proxyDetectorTryCount === 0 ) {
browser.webRequest.onHeadersReceived.removeListener(proxyDetector);
return;
}
proxyDetectorTryCount -= 1;
};
let proxyDetectorTryCount = 0;
const isPromise = o => o instanceof Promise;
const isResolvedObject = o => o instanceof Object &&
o instanceof Promise === false;
const reIPv4 = /^\d+\.\d+\.\d+\.\d+$/
const skipDNS = proxyInfo =>
proxyInfo && (proxyInfo.proxyDNS || proxyInfo.type?.charCodeAt(0) === 0x68 /* h */);
/******************************************************************************/
// Related issues:
// - https://github.com/gorhill/uBlock/issues/1327
@@ -64,26 +52,27 @@ vAPI.Net = class extends vAPI.Net {
constructor() {
super();
this.pendingRequests = [];
this.canUncloakCnames = browser.dns instanceof Object;
this.cnames = new Map([ [ '', null ] ]);
this.dnsList = []; // ring buffer
this.dnsWritePtr = 0; // next write pointer in ring buffer
this.dnsMaxCount = 512; // max size of ring buffer
this.dnsDict = new Map(); // hn to index in ring buffer
this.dnsCacheTTL = 600; // TTL in seconds
this.canUncloakCnames = true;
this.cnameUncloakEnabled = true;
this.cnameIgnoreList = null;
this.cnameIgnore1stParty = true;
this.cnameIgnoreExceptions = true;
this.cnameIgnoreRootDocument = true;
this.cnameMaxTTL = 120;
this.cnameReplayFullURL = false;
this.cnameFlushTime = Date.now() + this.cnameMaxTTL * 60000;
this.dnsResolveEnabled = true;
}
setOptions(options) {
super.setOptions(options);
if ( 'cnameUncloakEnabled' in options ) {
cnameUncloakEnabled =
this.canUncloakCnames &&
this.cnameUncloakEnabled =
options.cnameUncloakEnabled !== false;
}
if ( 'cnameUncloakProxied' in options ) {
cnameUncloakProxied = options.cnameUncloakProxied === true;
}
if ( 'cnameIgnoreList' in options ) {
this.cnameIgnoreList =
this.regexFromStrList(options.cnameIgnoreList);
@@ -100,54 +89,41 @@ vAPI.Net = class extends vAPI.Net {
this.cnameIgnoreRootDocument =
options.cnameIgnoreRootDocument !== false;
}
if ( 'cnameMaxTTL' in options ) {
this.cnameMaxTTL = options.cnameMaxTTL || 120;
}
if ( 'cnameReplayFullURL' in options ) {
this.cnameReplayFullURL = options.cnameReplayFullURL === true;
}
this.cnames.clear(); this.cnames.set('', null);
this.cnameFlushTime = Date.now() + this.cnameMaxTTL * 60000;
// https://github.com/uBlockOrigin/uBlock-issues/issues/911
// Install/remove proxy detector.
if ( vAPI.webextFlavor.major < 80 ) {
const wrohr = browser.webRequest.onHeadersReceived;
if ( cnameUncloakEnabled === false || cnameUncloakProxied ) {
if ( wrohr.hasListener(proxyDetector) ) {
wrohr.removeListener(proxyDetector);
}
} else if ( wrohr.hasListener(proxyDetector) === false ) {
wrohr.addListener(
proxyDetector,
{ urls: [ '*://*/*' ] },
[ 'blocking' ]
);
}
proxyDetectorTryCount = 32;
if ( 'dnsCacheTTL' in options ) {
this.dnsCacheTTL = options.dnsCacheTTL;
}
if ( 'dnsResolveEnabled' in options ) {
this.dnsResolveEnabled = options.dnsResolveEnabled === true;
}
this.dnsList.fill(null);
this.dnsDict.clear();
}
normalizeDetails(details) {
const type = details.type;
normalizeDetails(details) {
// https://github.com/uBlockOrigin/uBlock-issues/issues/3379
if ( skipDNS(details.proxyInfo) && details.ip === '0.0.0.0' ) {
details.ip = null;
}
const type = details.type;
if ( type === 'imageset' ) {
details.type = 'image';
return;
}
if ( type !== 'object' ) { return; }
// Try to extract type from response headers if present.
if ( details.responseHeaders === undefined ) { return; }
const ctype = this.headerValue(details.responseHeaders, 'content-type');
// https://github.com/uBlockOrigin/uBlock-issues/issues/345
// Re-categorize an embedded object as a `sub_frame` if its
// content type is that of a HTML document.
if ( type === 'object' && Array.isArray(details.responseHeaders) ) {
for ( const header of details.responseHeaders ) {
if ( header.name.toLowerCase() === 'content-type' ) {
if ( header.value.startsWith('text/html') ) {
details.type = 'sub_frame';
}
break;
}
}
if ( ctype === 'text/html' ) {
details.type = 'sub_frame';
}
}
denormalizeTypes(types) {
if ( types.length === 0 ) {
return Array.from(this.validTypes);
@@ -166,77 +142,21 @@ vAPI.Net = class extends vAPI.Net {
}
return Array.from(out);
}
canonicalNameFromHostname(hn) {
const cnRecord = this.cnames.get(hn);
if ( cnRecord !== undefined && cnRecord !== null ) {
return cnRecord.cname;
}
}
processCanonicalName(hn, cnRecord, details) {
if ( cnRecord === null ) { return; }
if ( cnRecord.isRootDocument ) { return; }
const hnBeg = details.url.indexOf(hn);
if ( hnBeg === -1 ) { return; }
const oldURL = details.url;
let newURL = oldURL.slice(0, hnBeg) + cnRecord.cname;
const hnEnd = hnBeg + hn.length;
if ( this.cnameReplayFullURL ) {
newURL += oldURL.slice(hnEnd);
} else {
const pathBeg = oldURL.indexOf('/', hnEnd);
if ( pathBeg !== -1 ) {
newURL += oldURL.slice(hnEnd, pathBeg + 1);
}
}
details.url = newURL;
details.aliasURL = oldURL;
return super.onBeforeSuspendableRequest(details);
}
recordCanonicalName(hn, record, isRootDocument) {
if ( (this.cnames.size & 0b111111) === 0 ) {
const now = Date.now();
if ( now >= this.cnameFlushTime ) {
this.cnames.clear(); this.cnames.set('', null);
this.cnameFlushTime = now + this.cnameMaxTTL * 60000;
}
}
let cname =
typeof record.canonicalName === 'string' &&
record.canonicalName !== hn
? record.canonicalName
: '';
if (
cname !== '' &&
this.cnameIgnore1stParty &&
domainFromHostname(cname) === domainFromHostname(hn)
) {
cname = '';
}
if (
cname !== '' &&
this.cnameIgnoreList !== null &&
this.cnameIgnoreList.test(cname)
) {
cname = '';
}
const cnRecord = cname !== '' ? { cname, isRootDocument } : null;
this.cnames.set(hn, cnRecord);
return cnRecord;
if ( hn === '' ) { return; }
const dnsEntry = this.dnsFromCache(hn, true);
if ( isResolvedObject(dnsEntry) === false ) { return; }
return dnsEntry.cname;
}
regexFromStrList(list) {
if (
typeof list !== 'string' ||
list.length === 0 ||
list === 'unset' ||
browser.dns instanceof Object === false
) {
if ( typeof list !== 'string' || list.length === 0 || list === 'unset' ) {
return null;
}
if ( list === '*' ) {
return /^./;
}
if ( list === '*' ) { return /^./; }
return new RegExp(
'(?:^|\.)(?:' +
'(?:^|\\.)(?:' +
list.trim()
.split(/\s+/)
.map(a => a.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'))
@@ -244,9 +164,14 @@ vAPI.Net = class extends vAPI.Net {
')$'
);
}
onBeforeSuspendableRequest(details) {
const hn = hostnameFromNetworkURL(details.url);
const dnsEntry = this.dnsFromCache(hn);
if ( isResolvedObject(dnsEntry) && dnsEntry.ip ) {
details.ip = dnsEntry.ip;
}
const r = super.onBeforeSuspendableRequest(details);
if ( cnameUncloakEnabled === false ) { return r; }
if ( r !== undefined ) {
if (
r.cancel === true ||
@@ -256,24 +181,144 @@ vAPI.Net = class extends vAPI.Net {
return r;
}
}
const hn = hostnameFromNetworkURL(details.url);
const cnRecord = this.cnames.get(hn);
if ( cnRecord !== undefined ) {
return this.processCanonicalName(hn, cnRecord, details);
if ( isResolvedObject(dnsEntry) ) {
return this.onAfterDNSResolution(hn, details, dnsEntry);
}
const documentUrl = details.documentUrl || details.url;
const isRootDocument = this.cnameIgnoreRootDocument &&
hn === hostnameFromNetworkURL(documentUrl);
return browser.dns.resolve(hn, [ 'canonical_name' ]).then(
rec => {
const cnRecord = this.recordCanonicalName(hn, rec, isRootDocument);
return this.processCanonicalName(hn, cnRecord, details);
},
( ) => {
this.cnames.set(hn, null);
}
);
if ( skipDNS(details.proxyInfo) ) { return; }
if ( this.dnsShouldResolve(hn) === false ) { return; }
const promise = dnsEntry || this.dnsResolve(hn, details);
return promise.then(( ) => this.onAfterDNSResolution(hn, details));
}
onAfterDNSResolution(hn, details, dnsEntry) {
if ( dnsEntry === undefined ) {
dnsEntry = this.dnsFromCache(hn);
if ( isResolvedObject(dnsEntry) === false ) { return; }
}
let proceed = false;
if ( dnsEntry.cname && this.cnameUncloakEnabled ) {
const newURL = this.uncloakURL(hn, dnsEntry, details);
if ( newURL ) {
details.aliasURL = details.url;
details.url = newURL;
proceed = true;
}
}
if ( dnsEntry.ip && details.ip !== dnsEntry.ip ) {
details.ip = dnsEntry.ip
proceed = true;
}
if ( proceed === false ) { return; }
// Must call method on base class
return super.onBeforeSuspendableRequest(details);
}
dnsToCache(hn, record, details) {
const dnsEntry = { hn, until: Date.now() + this.dnsCacheTTL * 1000 };
if ( record ) {
const cname = this.cnameFromRecord(hn, record, details);
if ( cname ) { dnsEntry.cname = cname; }
const ip = this.ipFromRecord(record);
if ( ip ) { dnsEntry.ip = ip; }
}
this.dnsSetCache(-1, hn, dnsEntry);
return dnsEntry;
}
dnsFromCache(hn, passive = false) {
const i = this.dnsDict.get(hn);
if ( i === undefined ) { return; }
if ( isPromise(i) ) { return i; }
const dnsEntry = this.dnsList[i];
if ( dnsEntry !== null && dnsEntry.hn === hn ) {
if ( passive || dnsEntry.until >= Date.now() ) {
return dnsEntry;
}
}
this.dnsSetCache(i);
}
dnsSetCache(i, hn, after) {
if ( i < 0 ) {
const j = this.dnsDict.get(hn);
if ( typeof j === 'number' ) {
this.dnsList[j] = after;
return;
}
i = this.dnsWritePtr++;
this.dnsWritePtr %= this.dnsMaxCount;
}
const before = this.dnsList[i];
if ( before ) {
this.dnsDict.delete(before.hn);
}
if ( after ) {
this.dnsDict.set(hn, i);
this.dnsList[i] = after;
} else {
if ( hn ) { this.dnsDict.delete(hn); }
this.dnsList[i] = null;
}
}
dnsShouldResolve(hn) {
if ( this.dnsResolveEnabled === false ) { return false; }
if ( hn === '' ) { return false; }
const c0 = hn.charCodeAt(0);
if ( c0 === 0x5B /* [ */ ) { return false; }
if ( c0 > 0x39 /* 9 */ ) { return true; }
return reIPv4.test(hn) === false;
}
dnsResolve(hn, details) {
const promise = dnsAPI.resolve(hn, [ 'canonical_name' ]).then(
rec => this.dnsToCache(hn, rec, details),
( ) => this.dnsToCache(hn)
);
this.dnsDict.set(hn, promise);
return promise;
}
cnameFromRecord(hn, record, details) {
const cn = record.canonicalName;
if ( cn === undefined ) { return; }
if ( cn === hn ) { return; }
if ( this.cnameIgnore1stParty ) {
if ( domainFromHostname(cn) === domainFromHostname(hn) ) { return; }
}
if ( this.cnameIgnoreList !== null ) {
if ( this.cnameIgnoreList.test(cn) ) { return; }
}
if ( this.cnameIgnoreRootDocument ) {
const origin = hostnameFromNetworkURL(details.documentUrl || details.url);
if ( hn === origin ) { return; }
}
return cn;
}
uncloakURL(hn, dnsEntry, details) {
const hnBeg = details.url.indexOf(hn);
if ( hnBeg === -1 ) { return; }
const oldURL = details.url;
const newURL = oldURL.slice(0, hnBeg) + dnsEntry.cname;
const hnEnd = hnBeg + hn.length;
if ( this.cnameReplayFullURL ) {
return newURL + oldURL.slice(hnEnd);
}
const pathBeg = oldURL.indexOf('/', hnEnd);
if ( pathBeg !== -1 ) {
return newURL + oldURL.slice(hnEnd, pathBeg + 1);
}
return newURL;
}
ipFromRecord(record) {
const { addresses } = record;
if ( Array.isArray(addresses) === false ) { return; }
if ( addresses.length === 0 ) { return; }
return addresses.join('\n');
}
suspendOneRequest(details) {
const pending = {
details: Object.assign({}, details),
@@ -286,6 +331,7 @@ vAPI.Net = class extends vAPI.Net {
this.pendingRequests.push(pending);
return pending.promise;
}
unsuspendAllRequests(discard = false) {
const pendingRequests = this.pendingRequests;
this.pendingRequests = [];
@@ -297,6 +343,7 @@ vAPI.Net = class extends vAPI.Net {
);
}
}
static canSuspend() {
return true;
}
@@ -304,25 +351,77 @@ vAPI.Net = class extends vAPI.Net {
/******************************************************************************/
vAPI.scriptletsInjector = ((doc, details) => {
let script, url;
try {
const blob = new self.Blob(
[ details.scriptlets ],
{ type: 'text/javascript; charset=utf-8' }
);
url = self.URL.createObjectURL(blob);
script = doc.createElement('script');
script.async = false;
script.src = url;
(doc.head || doc.documentElement || doc).append(script);
self.uBO_scriptletsInjected = details.filters;
} catch (ex) {
}
if ( url ) {
if ( script ) { script.remove(); }
self.URL.revokeObjectURL(url);
}
}).toString();
vAPI.scriptletsInjector = (( ) => {
const parts = [
'(',
function(details) {
if ( self.uBO_scriptletsInjected !== undefined ) { return; }
const doc = document;
const { location } = doc;
if ( location === null ) { return; }
const { hostname } = location;
if ( hostname !== '' && details.hostname !== hostname ) { return; }
// Use a page world sentinel to verify that execution was
// successful
const { sentinel } = details;
let script;
try {
const code = [
`self['${sentinel}'] = true;`,
details.scriptlets,
].join('\n');
script = doc.createElement('script');
script.appendChild(doc.createTextNode(code));
(doc.head || doc.documentElement).appendChild(script);
} catch {
}
if ( script ) {
script.remove();
script.textContent = '';
script = undefined;
}
if ( self.wrappedJSObject[sentinel] ) {
delete self.wrappedJSObject[sentinel];
self.uBO_scriptletsInjected = details.filters;
return 0;
}
// https://github.com/uBlockOrigin/uBlock-issues/issues/235
// Fall back to blob injection if execution through direct
// injection failed
let url;
try {
const blob = new self.Blob(
[ details.scriptlets ],
{ type: 'text/javascript; charset=utf-8' }
);
url = self.URL.createObjectURL(blob);
script = doc.createElement('script');
script.async = false;
script.src = url;
(doc.head || doc.documentElement || doc).append(script);
self.uBO_scriptletsInjected = details.filters;
} catch {
}
if ( url ) {
if ( script ) { script.remove(); }
self.URL.revokeObjectURL(url);
}
return 0;
}.toString(),
')(',
'json-slot',
');',
];
const jsonSlot = parts.indexOf('json-slot');
return (hostname, details) => {
parts[jsonSlot] = JSON.stringify({
hostname,
scriptlets: details.mainWorld,
filters: details.filters,
sentinel: vAPI.generateSecret(3),
});
return parts.join('');
};
})();
/******************************************************************************/

View File

@@ -19,6 +19,4 @@
Home: https://github.com/gorhill/uBlock
*/
'use strict';
export default browser;

View File

@@ -7,17 +7,21 @@ The following assumes a linux environment.
1. Open Bash console
2. `git clone https://github.com/gorhill/uBlock.git`
3. `cd uBlock`
4. `make mv3-[platform]`, where `[platform]` is either `chromium` or `firefox`
5. This will fully build uBO Lite, and during the process filter lists will be downloaded from their respective remote servers
4. `git submodule init`
5. `git submodule update`
6. `make mv3-[platform]`, where `[platform]` is either `chromium`, `edge`, `firefox`, or `safari`
7. This will fully build uBO Lite, and during the process filter lists will be downloaded from their respective remote servers
Upon completion of the script, the resulting extension package will become present in:
- Chromium: `dist/build/uBOLite.chromium`
- Firefox: `dist/build/uBOLite.firefox`
- Edge: `dist/build/uBOLite.edge`
- Firefox: `dist/build/uBOLite.firefox`
- Safari: `dist/build/uBOLite.safari`
The folder `dist/build/mv3-data` will cache data fetched from remote server, so as to avoid fetching repeatedly from remote server with repeated build commands. Remove `dist/build/mv3-data` if you want to build with latest versions of filter lists.
The folder `dist/build/mv3-data` will cache data fetched from remote servers, so as to avoid fetching repeatedly from remote servers with repeated build commands. Use `make cleanassets` to remove all locally cached filter lists if you want to build with latest versions of filter lists.
The file `dist/build/mv3-data/log.txt` will contain information about what happened during the build process.
The file `dist/build/uBOLite.[platform]/log.txt` will contain information about what happened during the build process.
The entry in the `Makefile` which implement the build process is `tools/make-mv3.sh [platform]`.[1] This Bash script copy various files from uBlock Origin branch and MV3-specific branch into a single folder which will be the final extension package.
@@ -27,5 +31,4 @@ All the final rulesets are present in the `dist/build/uBOLite.[platform]/ruleset
---
[1] https://github.com/gorhill/uBlock/blob/c4d324362fdb95ff8ef20f0b18f42f0eec955433/tools/make-mv3.sh
[2] https://github.com/gorhill/uBlock/blob/c4d324362fdb95ff8ef20f0b18f42f0eec955433/tools/make-mv3.sh#L103
[1] https://github.com/gorhill/uBlock/blob/c4d324362fdb95ff8ef20f0b18f42f0eec955433/tools/make-mv3.sh<br>

View File

@@ -12,12 +12,24 @@
"service_worker": "/js/background.js",
"type": "module"
},
"commands": {
"enter-zapper-mode": {
"description": "__MSG_zapperTipEnter__"
},
"enter-picker-mode": {
"description": "__MSG_pickerTipEnter__"
}
},
"declarative_net_request": {
"rule_resources": [
]
},
"default_locale": "en",
"description": "__MSG_extShortDesc__",
"host_permissions": [
"<all_urls>"
],
"incognito": "split",
"icons": {
"16": "img/icon_16.png",
"32": "img/icon_32.png",
@@ -25,12 +37,9 @@
"128": "img/icon_128.png"
},
"manifest_version": 3,
"minimum_chrome_version": "119.0",
"minimum_chrome_version": "122.0",
"name": "__MSG_extName__",
"options_page": "dashboard.html",
"optional_host_permissions": [
"<all_urls>"
],
"permissions": [
"activeTab",
"declarativeNetRequest",
@@ -42,5 +51,42 @@
"managed_schema": "managed_storage.json"
},
"version": "1.0",
"web_accessible_resources": []
"web_accessible_resources": [
{
"resources": [
"/strictblock.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
},
{
"resources": [
"/zapper-ui.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
},
{
"resources": [
"/picker-ui.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
},
{
"resources": [
"/unpicker-ui.html"
],
"matches": [
"<all_urls>"
],
"use_dynamic_url": true
}
]
}

View File

@@ -1,30 +1,9 @@
## Description
**uBO Lite** (uBOL), a **permission-less** [MV3 API-based](https://developer.chrome.com/docs/extensions/mv3/intro/) content blocker.
**uBO Lite** (uBOL), an efficient [MV3 API-based](https://developer.chrome.com/docs/extensions/mv3/intro/) content blocker.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is [performed reliably](https://developer.chrome.com/docs/extensions/reference/scripting/#method-registerContentScripts) by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read/modify data" [permission](https://developer.chrome.com/docs/extensions/mv3/declare_permissions/) at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read/modify data" permissions at install time. <details><summary>**However, [...]**</summary>
uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using declarative cosmetic and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
![uBOL's popup panel: no permission](https://user-images.githubusercontent.com/585534/195468156-d7e63ab9-abfa-443c-a8f6-e646a29b801e.png)
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request:
![uBOL's popup panel: browser warning](https://user-images.githubusercontent.com/585534/195342593-2b82b740-70a3-4507-a0e5-d7aee803b286.png)
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site:
![uBOL's popup panel: permissions to inject content](https://user-images.githubusercontent.com/585534/195342612-85d109d9-9006-4eb5-95a5-fec8a4f233ea.png)
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to modify and read data on all websites:
![uBOL's options: Default filtering mode](https://user-images.githubusercontent.com/585534/195343335-a0aa103e-621e-4137-9bcf-9821dc881be1.png)
</details>
The default ruleset corresponds to at least uBlock Origin's default filterset:
- uBlock Origin's built-in filter lists
@@ -33,9 +12,3 @@ The default ruleset corresponds to at least uBlock Origin's default filterset:
- Peter Lowes Ad and tracking server list
You can add more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
نسخة مبسطة (uBOL) مانع محتوى من نوع MV3 تجريبي *أقل طلبا للتصاريح* MV3-قاعدة الحظر الأساسية
uBO Lite (uBOL) هو مانع محتوى يعتمد على MV3.
تتوافق مجموعة القواعد الافتراضية مع مجموعة عوامل التصفية الافتراضية لـ uBlock Origin:
@@ -9,28 +9,4 @@
يمكنك تفعيل المزيد من مجموعات القواعد من خلال زيارة صفحة الخيارات - انقر على أيقونة _الترس_ في لوحة الإشعارات.
uBOL صريح تمامًا، مما يعني أنه لا تحتاج إلى uBOL بشكل دائم لحدوث تصفية المحتوى، يتم إجراء تصفية المحتوى من خلال إضافة CSS/JS بشكل موثوق به بواسطة المتصفح نفسه بدلًا من الإضافة.
هذا يعني أن uBOL نفسه لا يستهلك موارد وحدة المعالجة المركزية/الذاكرة أثناء استمراره في حظر المحتوى. عملية عامل الخدمة في uBOL مطلوبة _فقط_ عند التفاعل مع اللوحة المنبثقة أو صفحة الخيارات.
لا يتطلب uBOL صلاحية واسعة «لقراءة البيانات وتعديلها» في وقت التثبيت، وبالتالي فإن قدراته محدودة مقارنة بـ uBlock Origin أو إضافات حظر الإعلانات الأخرى التي تتطلب صلاحية واسعة «قراءة البيانات وتعديلها» في وقت التثبيت.
ومع ذلك، يسمح لك uBOL "بوضوح" بمنح صلاحيات موسعة على مواقع محددة من اختيارك حتى يتمكن من التصفية بشكل أفضل على تلك المواقع باستخدام التصفية التجميلية وإضافة النص.
لمنح صلاحيات موسعة على موقع معين، افتح اللوحة المنبثقة واختر وضع التصفية إما الأمثل أو الكامل.
سيحذرك المتصفح من مخاطر منح صلاحيات إضافية التي يطلبها الامتداد على الموقع الحالي، وسيتعين عليك إختيار بما إذا كنت تقبل الطلب أو ترفضه.
إذا قبلت طلب uBOL بالحصول على صلاحيات إضافية على الموقع الحالي، فستتمكن من تصفية المحتوى بشكل أفضل للموقع الحالي.
بإمكانك اختيار وضع التصفية الافتراضية من خلال صفحة خيارات uBOL. إذا اخترت الوضع الأمثل أو الكامل باعتباره الوضع الافتراضي، فستحتاج إلى منح uBOL الإذن لقراءة البيانات وتعديلها على جميع مواقع الويب.
ضع في اعتبارك أن هذا لا يزال عملًا قيد التنفيذ، هذه هي الأهداف النهائية:
لا يمكنك تحديد الأذونات المستخدمة لاحقًا في التثبيت، تحديدك للأذونات سيكون خلال زيارتك لكل موقع.
تقريري تمامًا للموثوقية ولكفاءة وحدة المعالجة المركزية/الذاكرة.
uBOL صريح تمامًا، مما يعني أنه لا تحتاج إلى uBOL بشكل دائم لحدوث تصفية المحتوى، يتم إجراء تصفية المحتوى من خلال إضافة CSS/JS بشكل موثوق به بواسطة المتصفح نفسه بدلًا من الإضافة. هذا يعني أن uBOL نفسه لا يستهلك موارد وحدة المعالجة المركزية/الذاكرة أثناء استمراره في حظر المحتوى.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) *icazəsiz* MV3 əsaslı məzmun bloklayıcısıdır.
uBO Lite (uBOL) is an MV3-based content blocker.
Defolt qaydalar dəsti uBlock Origin-in defolt filtr dəstinə uyğundur:
@@ -10,21 +10,3 @@ Defolt qaydalar dəsti uBlock Origin-in defolt filtr dəstinə uyğundur:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,30 +1,12 @@
uBO Лайт (uBOL) гэта блакіроўшчык кантэнту з меншымі патрабаваннямі да дазволаў заснаваны на MV3
uBO Lite (uBOL) гэта базаваны на MV3 блакавальнік змесціва.
The default ruleset corresponds to uBlock Origin's default filterset:
Прадвызначаны набор правіл адпавядае тыпавому набору фільтраў uBlock Origin:
- uBlock Origin's built-in filter lists
- Убудаваныя спісы фільтраў uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- Спіс сервераў з рэкламай і адсочвання ад Peter Lowe
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Вы можаце ўключыць больш набораў правіл праз старонку налад -- націсніце на значок _Шасцярэнькі_ на ўсплывальнай панэлі.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Цалкам дэкларатыўная ацэнка надзейнасці і эфектыўнасці работы працэсара/памяці.
uBOL цалкам дэкларатыўны, то-бок не мае неабходнасці ў сталым uBOL працэсе дзеля фільтрацыі, а фільтрацыя змесціва на аснове інʼекцыі CSS/JS надзейна выконваецца пераважна самім браўзерам замест пашырэння. Гэта значыць, што uBOL не спажывае рэсурсаў працэсара/памяці пры блакаванні зместу -- службовы працэс uBOL патрэбны _толькі_ падчас узаемадзеяння з усплывальнай панэллю або наладамі.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) е блокер за съдържание *без разрешения*, базиран на MV3.
uBO Lite (uBOL) е блокер за съдържание, базиран на MV3.
Наборът от правила по подразбиране съответства на набора от филтри по подразбиране на uBlock Origin:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) е блокер за съдържание *без разреше
Можете да включите още набори от правила, като посетите страницата с опции щракнете върху иконата „зъбно колело“ в изскачащия панел.
uBOL е изцяло декларативен, което означава, че няма нужда от постоянен процес на uBOL за филтриране, а филтрирането на съдържание, базирано на инжектиране на CSS/JS, се извършва надеждно от самия браузър, а не от разширението. Това означава, че самият uBOL не консумира ресурси на процесора/паметта, докато тече блокирането на съдържанието работният процес на услугата на uBOL е необходим _само_ когато взаимодействате с изскачащия панел или страниците с опции.
uBOL не изисква широко разрешение за "четене и промяна на данни" по време на инсталиране, поради което възможностите му са ограничени в сравнение с uBlock Origin или други блокери на съдържание, изискващи широко разрешение за "четене и промяна на данни" по време на инсталиране.
Въпреки това uBOL ви позволява да предоставите *изрично* разширени разрешения за определени сайтове по ваш избор, за да може да филтрира по-добре тези сайтове, като използва козметично филтриране и инжектиране на скриптове.
За да предоставите разширени разрешения за даден сайт, отворете изскачащия панел и изберете по-висок режим на филтриране, например Оптимален или Пълен.
След това браузърът ще ви предупреди за последиците от предоставянето на допълнителните разрешения, поискани от разширението, за текущия сайт и ще трябва да кажете на браузъра дали приемате или отхвърляте искането.
Ако приемете искането на uBOL за допълнителни разрешения за текущия сайт, той ще може да филтрира по-добре съдържанието на текущия сайт.
Можете да зададете режима на филтриране по подразбиране от страницата с опции на uBOL. Ако изберете оптимален или пълен режим по подразбиране, ще трябва да предоставите на uBOL разрешение за четене и промяна на данни във всички уебсайтове.
Имайте предвид, че това все още е в процес на разработка с тези крайни цели:
- По време на инсталацията няма широки разрешения за хоста разширените разрешения се предоставят изрично от потребителя за всеки сайт.
- Изцяло декларативен за надеждност и ефективност на процесора/паметта.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) হল একটি *অনুমতি-হীন* MV3-ভিত্তিক কনটেন্ট ব্লকার
uBO Lite (uBOL) হল একটি ম্যানিফেস্ট ভার্সন ৩ ভিত্তিক কনটেন্ট ব্লকার
পূর্ব নির্ধারিত নিয়ম সেট uBlock অরিজিনের ডিফল্ট ফিল্টারসেটের সাথে মিলে যায়:
@@ -7,24 +7,6 @@ uBO Lite (uBOL) হল একটি *অনুমতি-হীন* MV3-ভিত
- সহজ গোপনীয়তা
- পিটার লো এর বিজ্ঞাপন এবং ট্র্যাকিং সার্ভার তালিকা
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
তুমি অপশন পাতায় গিয়ে আরও নিয়ম যোগ করতে পারো -- পপআপ প্যানেলে _গিয়ার_ আইকনে ক্লিক করে।
uBOL সম্পূর্ণরূপে ঘোষণামূলক, অর্থাৎ ফিল্টারিং করতে একটি স্থায়ী uBOL প্রক্রিয়ার প্রয়োজন নেই, এবং CSS/JS ইনজেকশন-ভিত্তিক বিষয়বস্তু ফিল্টারিং এক্সটেনশনের পরিবর্তে ব্রাউজার নিজেই নির্ভরযোগ্যভাবে এই কাজ করে থাকে। এর মানে হল যে কন্টেন্ট ব্লকিং চলমান থাকা অবস্থায় uBOL নিজেই CPU/মেমরি রিসোর্স ব্যবহার করে না -- uBOL-এর পরিষেবার প্রক্রিয়ার প্রয়োজন শুধুমাত্র_ যখন আপনি পপআপ প্যানেল বা অপশন পেজগুলির সাথে ইন্টারঅ্যাক্ট করেন।
uBOL-এর ইন্সটল করার সময় বিস্তৃত "পড়ার ও ডেটা পরিবর্তন করার" অনুমতির প্রয়োজন হয় না, তাই ইউব্লক অরিজিন বা অন্যান্য কনটেন্ট ব্লকের তুলনায় এটির সীমিত ক্ষমতা বাক্সের বাইরে রয়েছে যার জন্য ইন্সটল করার সময় বিস্তৃত "ডেটা পড়ুন এবং পরিবর্তন করুন" অনুমতি প্রয়োজন।
যাইহোক, uBOL আপনাকে আপনার পছন্দের নির্দিষ্ট সাইটে *স্পষ্টভাবে* বর্ধিত অনুমতি প্রদান করে যাতে এটি কসমেটিক ফিল্টারিং এবং স্ক্রিপ্টলেট ইনজেকশন ব্যবহার করে সেই সাইটগুলিতে আরও ভাল ফিল্টার করতে পারে।
একটি সাইটে বর্ধিত অনুমতি প্রদানের জন্য, পপআপ প্যানেল খুলুন এবং একটি উচ্চতর ফিল্টারিং মোড বাছাই করুন যেমন অপটিমাল বা কমপ্লিট।
ব্রাউজারটি তখন বর্তমান সাইটে এক্সটেনশন দ্বারা অনুরোধ করা অতিরিক্ত অনুমতি প্রদানের প্রভাব সম্পর্কে আপনাকে সতর্ক করবে এবং আপনি অনুরোধটি গ্রহণ করবেন বা প্রত্যাখ্যান করবেন কিনা তা আপনার ব্রাউজারকে বলতে হবে।
আপনি যদি বর্তমান সাইটে অতিরিক্ত অনুমতির জন্য uBOL-এর অনুরোধ গ্রহণ করেন, তাহলে এটি বর্তমান সাইটের জন্য আরও ভালভাবে ফিল্টার করতে সক্ষম হবে।
আপনি uBOL এর বিকল্প পৃষ্ঠা থেকে ডিফল্ট ফিল্টারিং মোড সেট করতে পারেন। আপনি যদি অপটিমাল বা কমপ্লিট মোডটিকে ডিফল্ট হিসেবে বেছে নেন, তাহলে আপনাকে uBOL-কে সমস্ত ওয়েবসাইটের ডেটা পড়তে এবং পরিবর্তন করার অনুমতি দিতে হবে।
মনে রাখবেন এই শেষ লক্ষ্যগুলির ফলাফলের সাথে এখনও সংস্করণ কাজ চলছে:
- ইনস্টল করার সময় কোনও বিস্তৃত অনুমতি নেই -- বর্ধিত অনুমতিগুলি প্রতি-সাইট ভিত্তিতে ব্যবহারকারীর দ্বারা স্পষ্টভাবে প্র্রদান করা হয়।
- নির্ভরযোগ্যতা এবং CPU/মেমরি দক্ষতার জন্য সম্পূর্ণরূপে পূর্বঘোষণামুূলক।

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) zo ur stanker noazadurioù *hep aotre rekis ebet* diazezet war ar manifesto MV3.
uBO Lite (uBOL) zo ur stanker noazadurioù diazezet war ar manifesto MV3.
Ar reolennoù dre ziouer a glot gant silañ dre ziouer uBlock Origin:
- Rolloù siloù genidik a uBlock Origin
- EasyList
- EasyPrivacy
- Roll bruderezh ha servijerioù heuliañ Peter Lowe
- Roll ar servijerioù brudañ ha heuliañ eus Peter Lowe
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Tu zo deoc'h ouzhpennañ reolennoù all en arventennoù -- klikit war an ikon _kendentadur_ er banell popup.
Disklêriañ a ra uBOL penn-da-benn, da lavaret eo n'eus ket ezhomm eus un argerzh uBOL padus evit ma c'hoarvezfe ar silañ, ha silañ endalc'hadoù diazezet war enlakaat CSS/JS a vez graet en un doare fizius gant ar merdeer e-unan kentoc'h eget gant an astenn. Kement-se a dalvez ne vez ket gounezet gant uBOL e-unan arc'hwelioù CPU/memor e-pad ma vez stanket an endalc'hadoù -- ezhomm zo eus argerzh al labourer servij uBOL _nemet_ pa vez etregweredet gant ar banell digeriñ pe ar pajennoù dibarzhioù.
UBOL n'en deus ket ezhomm eus aotreoù ledan "lenn ha kemmañ roadennoù" e-pad ar staliañ, setu perak e c'halloudoù bevennet e-keñver uBlock Origin pe stankerien endalc'hadoù all a c'houlenn aotreoù ledan "lenn ha kemmañ roadennoù" e-pad ar staliañ.
Koulskoude ez eus tu deoc'h reiñ *sklaer* aotreoù ouzhpenn da uBOL el lec'hiennoù ma fell deoc'h, mod-se e vint silet gwelloc'h en ur implij siloù kened hag ensinkladurioù scriplet.
Evit reiñ aotreoù ouzhpenn da uBOL en ul lec'hienn bennak, n'ho peus nemet digeriñ ar prenestr pop-up ha diuzañ ul live silañ uheloc'h evel ar mod Gwellañ pe ar mod Klok
Goude-se e vo kelaouet ac'hanoc'h gant ar merdeer diwar-benn efedoù reiñ an aotreoù ouzhpenn goulennet gant an astenn war al lec'hienn bremanel, ha ret e vo deoc'h lâret d'ar merdeer hag-eñ e vo degemeret pe nac'het ar goulenn ganeoc'h.
Ma asantit da reiñ muioc'h a aotreoù da uBOL war ar bajenn-mañ e vo silet gwelloc'h.
Gallout a rit termeniñ ar mod silañ dre ziouer e pajenn arventennoù uBOL. Ma tibabit ar mod Gwellañ pe an hini Klok evel ar mod dre ziouer e vo ret deoc'h aotren uBOL da lenn ha kemmañ roadennoù en holl lec'hiennoù.
Dalc'hit soñj ez eo uBOL ur raktres war ober c'hoazh hag a zo e bal:
- Aotreoù ostiz ledan ebet e-pad ar staliañ -- aotreoù astennet a vez roet splann gant an implijer dre lec'hienn.
- Disklêriañ penn-da-benn evit ar fiziañs hag an efedusted CPU/memor.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) je blokator sadržaja zasnovan na MV3 *bez dozvole*.
uBO Lite (uBOL) je blokator sadržaja baziran na MV3.
Zadani skup pravila odgovara zadanom skupu filtera uBlock Origin:
- UBlock Origin ugrađene liste filtera
- EasyList
- EasyPrivacy
- Oglas Peter Lowe i lista servera za praćenje
- Peter Lowe-ova lista servera za oglase i praćenje
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Možete omogućiti više skupova pravila posjetom stranice s opcijama -- kliknite na ikonu _Cogs_ u skočnom panelu.
uBOL je potpuno deklarativno, što znači da nema potrebe za trajnim uBOL procesom da bi se filtriranje dogodilo, a filtriranje sadržaja zasnovano na CSS/JS injekcijama se pouzdano izvodi od strane samog pretraživača, a ne ekstenzije. To znači da sam uBOL ne troši CPU/memorijske resurse dok je blokiranje sadržaja u toku -- proces uBOL-a servisnog radnika je potreban _samo_ kada stupite u interakciju sa iskačućim panelom ili stranicama sa opcijama.
uBOL ne zahtijeva široku dozvolu za "čitanje i modificiranje podataka" u vrijeme instalacije, stoga su njegove ograničene mogućnosti izvan kutije u poređenju sa uBlock Origin-om ili drugim blokatorima sadržaja koji zahtijevaju široke dozvole za "čitanje i modificiranje podataka" u vrijeme instalacije.
Međutim, uBOL vam omogućava da *eksplicitno* dodijelite proširene dozvole na određenim web lokacijama po vašem izboru kako bi mogao bolje filtrirati te stranice koristeći kozmetičko filtriranje i injekcije skriptleta.
Da biste dali proširene dozvole za datu web lokaciju, otvorite iskačući panel i odaberite viši način filtriranja kao što je Optimal ili Complete.
Pregledač će vas tada upozoriti na efekte odobravanja dodatnih dozvola koje ekstenzija traži na trenutnoj web stranici, a vi ćete morati reći pretraživaču da li prihvatate ili odbijate zahtjev.
Ako prihvatite uBOL-ov zahtjev za dodatnim dozvolama na trenutnoj stranici, moći će bolje filtrirati sadržaj za trenutnu stranicu.
Možete postaviti zadani način filtriranja sa uBOL-ove stranice sa opcijama. Ako odaberete Optimal ili Kompletan način kao zadani, morat ćete dati uBOL-u dozvolu da čita i mijenja podatke na svim web stranicama.
Imajte na umu da je ovo još uvijek u toku, sa ovim krajnjim ciljevima:
- Nema širokih dozvola za host u vrijeme instalacije - proširene dozvole se eksplicitno dodeljuju od strane korisnika na bazi po lokaciji.
- Potpuno deklarativno za pouzdanost i efikasnost CPU/memorije.

View File

@@ -1,4 +1,4 @@
L'uBO Lite (uBOL) és un blocador de contingut *sense permisos* basat en MV3.
L'uBO Lite (uBOL) és un blocador de contingut basat en MV3.
El conjunt de regles per defecte correspon al conjunt de filtres per defecte d'uBlock Origin:
@@ -12,21 +12,3 @@ Podeu habilitar més conjunts de regles si visiteu la pàgina d'opcions: feu cli
L'uBOL és totalment declaratiu, és a dir, no cal un procés uBOL permanent perquè es produeixi el filtratge, i el filtratge de contingut basat en injecció CSS/JS es realitza de manera fiable pel propi navegador més que per l'extensió.
Això vol dir que l'uBOL en si no consumeix recursos de CPU/memòria mentre el bloqueig de contingut està en curs; el procés de treballador de servei d'uBOL només es requereix quan interactueu amb el tauler emergent o les pàgines d'opcions.
L'uBOL no requereix un ampli permís de "lectura i modificació de dades" en el moment de la instal·lació, per tant, les seves capacitats limitades en comparació amb l'uBlock Origin o altres blocadors de contingut que requereixen amplis permisos de "lectura i modificació de dades" en el moment de la instal·lació.
Tanmateix, l'uBOL us permet concedir *explícitament* permisos ampliats en llocs específics que trieu perquè pugui filtrar millor en aquests llocs mitjançant filtres cosmètics i injeccions de scriptlet.
Per concedir permisos ampliats en un lloc determinat, obriu el tauler emergent i seleccioneu un mode de filtrat superior, com ara Òptim o Complet.
Aleshores, el navegador us avisarà sobre els efectes de la concessió dels permisos addicionals sol·licitats per l'extensió al lloc actual, i haureu d'indicar-li al navegador si accepteu o rebutgeu la sol·licitud.
Si accepteu la sol·licitud d'uBOL de permisos addicionals al lloc actual, podrà filtrar millor el contingut del lloc actual.
Podeu establir el mode de filtratge per defecte des de la pàgina d'opcions d'uBOL. Si trieu el mode Òptim o Complet per defecte, haureu de concedir a l'uBOL el permís per llegir i modificar dades a tots els llocs web.
Tingueu en compte que encara és un treball en curs, amb aquests objectius finals:
- No hi ha permisos d'amfitrió amplis en el moment de la instal·lació; els permisos ampliats els concedeix explícitament l'usuari per lloc.
- Totalment declaratiu per a la fiabilitat i l'eficiència de la CPU/memòria.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) je blokovač obsahu vyžadující méně oprávnění, založený na MV3.
uBO Lite (uBOL) je blokovač obsahu založený na MV3.
Výchozí sada pravidel koresponduje k výchozím sadám filtrů uBlock Origin:
@@ -10,21 +10,3 @@ Výchozí sada pravidel koresponduje k výchozím sadám filtrů uBlock Origin:
Další sady pravidel můžete povolit na stránce nastavení - klikněte na ikonu _Ozubeného kolečka_ ve vyskakovacím panelu.
uBOL je zcela deklarativní, což znamená, že pro filtrování není potřeba permanentní proces uBOL a filtrování obsahu založené na vstřikování CSS/JS je spolehlivě prováděno samotným prohlížečem, nikoli rozšířením. To znamená, že samotný uBOL nespotřebovává zdroje CPU/paměti, zatímco probíhá blokování obsahu proces servisního pracovníka uBOL je vyžadován _pouze_ při interakci s vyskakovacím panelem nebo stránkami nastavení.
uBOL nevyžaduje rozsáhlá oprávnění ke "čtení a úpravě dat" v době instalace, a proto má ihned po instalaci omezené možnosti ve srovnání s uBlock Origin nebo jinými blokovači obsahu, které vyžadují rozsáhlá oprávnění ke "čtení a úpravě dat" v době instalace.
Nicméně, uBOL vám umožňuje *explicitně* udělit rozšířená oprávnění na konkrétních webech podle vašeho výběru, aby mohl na těchto webech lépe filtrovat pomocí kosmetického filtrování a vstřikování skriptů.
Chcete-li na daném webu udělit rozšířená oprávnění, otevřete vyskakovací panel a vyberte vyšší režim filtrování, například optimální nebo kompletní.
Prohlížeč vás poté upozorní na důsledky udělení dalších oprávnění požadovaných rozšířením na aktuálním webu a vy budete muset prohlížeči sdělit, zda žádost přijímáte nebo odmítáte.
Pokud přijmete žádost uBOL o další oprávnění na aktuálním webu, bude moci lépe filtrovat obsah aktuálního webu.
Výchozí filtrovací režim můžete nastavit na stránce nastavení uBOL. Pokud jako výchozí zvolíte režim optimální nebo kompletní, budete muset uBOL udělit oprávnění ke čtení a úpravě dat na všech webových stránkách.
Mějte na paměti, že toto je stále nedokončená práce s těmito konečnými cíli:
- Žádná rozsáhlá oprávnění hostitele v době instalace -- rozšířená oprávnění uděluje explicitně uživatel na jednotlivých stránkách.
- Zcela deklarativní pro spolehlivost a efektivitu CPU/paměti.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,6 +1,6 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
Mae'r set reolau ddiofyn yn cyfateb i set hidlo diofyn uBlock Origin:
- uBlock Origin's built-in filter lists
- EasyList
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) er en *tilladelsesløs* MV3-baseret indholdsblocker.
uBO Lite (uBOL) er en MV3-baseret indholdsblocker.
Standardregelsættet svarer til uBlock Origins standardfiltersæt:
@@ -10,21 +10,3 @@ Standardregelsættet svarer til uBlock Origins standardfiltersæt:
Flere regelsæt kan aktiveres ved at gå til indstillingssiden -- klik på ikonet _Tandhjul_ i pop op-panelet.
uBOL er fuldstændig deklarativ, hvilket betyder, at ingen permanent uBOL-proces behøves for at filtreringen kan finde sted, og CSS/JS-injektionsbaseret indholdsfiltrering udføres pålideligt af browseren selv i stedet for af udvidelsen. Dette betyder, at uBOL ikke selv forbruger CPU-/hukommelsesressourcer under indholdsblokeringen -- uBOLs tjenestearbejdsproces er _kun_ nødvendig under interaktion med pop op-panelet eller indstillingssiderne.
uBOL kræver ikke en omfattende "læse og ændre data" tilladelse under installationen, derfor dens begrænsede egenskaber fra start af sammenlignet med uBlock Origin eller andre indholdsblockere, som kræver omfattende "læse/ændre data" tilladelser under installationen.
uBOL giver dog mulighed for *eksplicit* at tildele udvidede tilladelser på bestemte websteder efter eget valg, så den bedre kan filtrere på disse websteder vha. kosmetisk filtrering og scriptlet-injektioner.
For at tildele udvidede tilladelser på et givent websted, åbn pop op-panelet og vælg en højere filtreringstilstand, såsom Optimal eller Komplet.
Browseren advarer derefter om virkningerne af de ekstra tildelte tilladelser, som udvidelsen anmoder om på det aktuelle websted, og man vil skulle fortælle browseren, hvorvidt anmodningen accepteres eller afslås.
Accepteres uBOLs anmodning om ekstra tilladelser på det aktuelle websted, vil den bedre kunne filtrere indhold på webstedet.
Standardfiltreringstilstanden kan angives via uBOLs indstillingsside. Hvis tilstanden Optimal eller Komplet vælges som standardtilstand, skal uBOL tildeles tilladelse til at læse og ændre data på alle websteder.
Husk dog, at dette stadig er et igangværende arbejde med disse slutmål:
- Ingen omfattende værtstilladelser under installationen -- udvidede tilladelser tildeles eksplicit af brugeren på webstedsbasis.
- Fuldstændig deklarativ for pålidelighed og CPU-/hukommelseseffektivitet.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) ist ein Inhaltsblocker, der *ohne Berechtigungen* auskommt und auf MV3 basiert.
uBO Lite (uBOL) ist ein MV3-basierter Inhaltsblocker.
Die Standardregeln entsprechen den Standardfiltern von uBlock Origin:
@@ -10,21 +10,3 @@ Die Standardregeln entsprechen den Standardfiltern von uBlock Origin:
Sie können weitere Regeln aktivieren, indem Sie die Einstellungen aufrufen — klicken Sie dazu im Pop-up-Fenster auf das Symbol mit den _Zahnrädern_.
uBOL ist vollständig deklarativ, d. h. es ist kein dauerhafter uBOL-Prozess für das Filtern erforderlich, und die auf CSS/JS-Injektion basierende Inhaltsfilterung wird zuverlässig vom Browser selbst und nicht von der Erweiterung durchgeführt. Das bedeutet, dass uBOL selbst keine CPU-/Speicherressourcen verbraucht, während der Inhalt blockiert wird — der uBOL-Service-Worker-Prozess wird _nur_ benötigt, wenn Sie mit dem Pop-up-Fenster oder den Optionen interagieren.
uBOL erfordert bei der Installation keine weitreichende Berechtigung zum Lesen und Ändern von Daten, daher sind die Möglichkeiten im Vergleich zu uBlock Origin oder anderen Inhaltsblockern, die bei der Installation weitreichende Berechtigungen zum Lesen und Ändern von Daten erfordern, von vornherein begrenzt.
Allerdings können Sie mit uBOL *explizit* erweiterte Berechtigungen für bestimmte Websites Ihrer Wahl erteilen, sodass diese Websites durch kosmetisches Filtern und Scriptlet-Injektionen besser gefiltert werden können.
Um erweiterte Berechtigungen für eine bestimmte Website zu erteilen, öffnen Sie das Pop-up-Fenster und wählen Sie einen stärkeren Filtermodus wie »Optimal« oder »Vollständig«.
Der Browser warnt Sie anschließend über die Auswirkungen der zusätzlichen Berechtigungen, die von der Erweiterung für die aktuelle Website angefordert werden, und Sie können entscheiden, ob Sie zustimmen oder ablehnen.
Wenn Sie die Anfrage von uBOL nach zusätzlichen Berechtigungen für die aktuelle Website zustimmen, kann uBOL die Inhalte für die aktuelle Website besser filtern.
Sie können den Standardfiltermodus in den Optionen von uBOL festlegen. Wenn Sie den Modus »Optimal« oder »Vollständig« als Standardmodus wählen, müssen Sie uBOL die Berechtigung erteilen, Daten auf allen Websites lesen und ändern zu dürfen.
Denken Sie daran, dass sich dieses Projekt noch in Entwicklung befindet und folgende Ziele verfolgt:
- Keine weitreichenden Host-Berechtigungen bei der Installation — erweiterte Berechtigungen werden explizit von Ihnen für jede einzelne Website erteilt.
- Vollständig deklarativ für Zuverlässigkeit und CPU-/Speichereffizienz.

View File

@@ -1,4 +1,4 @@
Το uBO Lite (uBOL) είναι ένας blocker περιεχομένου *χωρίς άδειες* που βασίζεται σε MV3.
Το uBO Lite (uBOL) είναι εργαλείο φραγής περιεχομένου, που βασίζεται στο MV3.
Το προεπιλεγμένο σύνολο κανόνων αντιστοιχεί στο προεπιλεγμένο σύνολο φίλτρων του uBlock Origin:
@@ -7,24 +7,6 @@
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Μπορείτε να προσθέσετε περισσότερα σύνολα κανόνων από τη σελίδα επιλογών -- κάντε κλικ στο εικονίδιο _γρανάζι_ στον αναδυόμενο πίνακα.
Το uBOL είναι εξ'ολοκλήρου δηλωτικό, πράγμα που σημαίνει ότι δεν υπάρχει ανάγκη για μόνιμη διαδικασία uBOL για να πραγματοποιηθεί το φιλτράρισμα, και το φιλτράρισμα περιεχομένου που βασίζεται σε έγχυση CSS/JS εκτελείται αξιόπιστα από το ίδιο το πρόγραμμα περιήγησης και όχι από την επέκταση. Αυτό σημαίνει ότι το ίδιο το uBOL δεν καταναλώνει πόρους CPU/μνήμης ενώ ο αποκλεισμός περιεχομένου είναι σε εξέλιξη -- η διαδικασία του service worker του uBOL απαιτείται _μόνο_ όταν αλληλεπιδράτε με τον αναδυόμενο πίνακα ή τις σελίδες επιλογών.
Το uBOL δεν απαιτεί ευρεία άδεια "ανάγνωσης και τροποποίησης δεδομένων" κατά τον χρόνο εγκατάστασης, επομένως έχει εξαρχής περιορισμένες δυνατότητές σε σύγκριση με το uBlock Origin ή άλλα προγράμματα αποκλεισμού περιεχομένου που απαιτούν ευρείες άδειες "ανάγνωσης/τροποποίησης δεδομένων" κατά την εγκατάσταση.
Ωστόσο, το uBOL σάς επιτρέπει *ρητά* να εκχωρείτε εκτεταμένες άδειες σε συγκεκριμένους ιστότοπους της επιλογής σας, ώστε να μπορεί να φιλτράρει καλύτερα σε αυτούς τους ιστότοπους χρησιμοποιώντας κοσμητικό φιλτράρισμα και έγχυση scriptlet.
Για να εκχωρήσετε εκτεταμένα δικαιώματα σε έναν δεδομένο ιστότοπο, ανοίξτε το αναδυόμενο πλαίσιο και επιλέξτε μια υψηλότερη λειτουργία φιλτραρίσματος, όπως Βέλτιστη ή Ολοκληρωμένη.
Στη συνέχεια, το πρόγραμμα περιήγησης θα σας προειδοποιήσει για τα αποτελέσματα της χορήγησης των πρόσθετων δικαιωμάτων που ζητούνται από την επέκταση στον τρέχοντα ιστότοπο και θα πρέπει να ενημερώσετε το πρόγραμμα περιήγησης εάν αποδέχεστε ή απορρίπτετε το αίτημα.
Εάν αποδεχτείτε το αίτημα του uBOL για πρόσθετα δικαιώματα στον τρέχοντα ιστότοπο, θα μπορεί να φιλτράρει καλύτερα το περιεχόμενο για τον τρέχοντα ιστότοπο.
Μπορείτε να ορίσετε την προεπιλεγμένη λειτουργία φιλτραρίσματος από τη σελίδα επιλογών του uBOL. Εάν επιλέξετε τη λειτουργία Βέλτιστη ή Ολοκληρωμένη ως προεπιλεγμένη, θα πρέπει να εκχωρήσετε στην uBOL την άδεια ανάγνωσης και τροποποίησης δεδομένων σε όλους τους ιστότοπους.
Λάβετε υπόψη ότι αυτό είναι ακόμη ένα έργο σε εξέλιξη, με αυτούς τους τελικούς στόχους:
- Να μην υπάρχουν ευρείες άδειες hosts κατά την εγκατάσταση -- οι εκτεταμένες άδειες παραχωρούνται ρητά από τον χρήστη σε βάση ανά τοποθεσία.
- Εντελώς δηλωτικό για αξιοπιστία και απόδοση CPU/μνήμης.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) es un bloqueador de contenido con *menos permisos* basado en MV3.
uBO Lite (uBOL) es un bloqueador de contenido basado en MV3.
Por defecto ya trae configuradas las siguientes listas de filtros:
@@ -10,21 +10,3 @@ Por defecto ya trae configuradas las siguientes listas de filtros:
Puedes habilitar más conjuntos de reglas visitando la página de opciones, haz clic en el icono de _engranaje_ del panel emergente.
uBOL es completamente declarativo, lo que significa que no hay necesidad de un proceso uBOL permanente para que se produzca el filtrado, y el filtrado de contenido basado en la inyección de CSS/JS se realiza de forma confiable por el propio navegador en lugar de la extensión. Esto significa que uBOL en sí mismo no consume recursos de CPU/memoria mientras el bloqueo de contenido está en curso, el proceso service worker de uBOL se requiere _solo_ cuando se interactúa con el panel emergente o las páginas de opciones.
uBOL no requiere amplios permisos para "leer y modificar datos" en el momento de la instalación, de ahí sus capacidades limitadas en comparación con uBlock Origin u otros bloqueadores de contenido que requieren amplios permisos para "leer y modificar datos" en el momento de la instalación.
Sin embargo, uBOL te permite otorgar *explícitamente* permisos extendidos en sitios específicos de tu elección para que pueda filtrar mejor en esos sitios usando filtrado cosmético e inyecciones de scriptlet.
Para otorgar permisos extendidos en un sitio determinado, abre el panel emergente y elige un modo de filtrado superior, como óptimo o completo.
Después el navegador te advertirá sobre los efectos de otorgar los permisos adicionales solicitados por la extensión en el sitio actual, y deberás indicar al navegador si aceptas o rechazas la solicitud.
Si aceptas la solicitud de uBOL para permisos adicionales en el sitio actual, será capaz de filtrar mejor el contenido para el sitio actual.
Puedes establecer el modo de filtrado predeterminado desde la página de opciones de uBOL. Si eliges como predeterminado el modo óptimo o completo, tendrás que otorgar a uBOL el permiso para leer y modificar datos en todos los sitios web.
Téngase en cuenta que esto todavía es un trabajo en progreso, con estos objetivos finales:
- Sin amplios permisos de host en el momento de la instalación, los permisos ampliados son otorgados explícitamente por el usuario en cada sitio.
- Completamente declarativo para confiabilidad y eficiencia de la CPU/memoria.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) on MV3-l põhinev *lubadeta* sisutõkestaja.
uBO Lite (uBOL) on MV3-l põhinev sisutõkestaja.
Tavaline reeglitekogum vastab uBlock Origini tavalisele filtritekogumile:
@@ -10,21 +10,3 @@ Peter Lowe'i reklaamide ja jälitusserverite loend
Rohkem reegleid valikutest ehk toksake _Cogs_ ikooni hüpikpaneelis.
uBOL on läbinisti deklaratiivne ehk filtreerimiseks pole vaja kogu aeg töötavat uBOLi protsessi ja CSS/JS süstipõhist sisu filtreerib tegelikult brauser, mitte laiendus. Teisisõnu, uBOL ei kasuta sisu tõkestamisel protsessori/mälu ressursse. uBOLi teenuse toimimise protsessi on vaja _vaid_ juhul, kui kasutate hüpikpaneeli või valikute lehekülgi.
uBOL ei nõua paigaldamise ajal teadatuntud andmete lugemise ja muutmise luba, seega võrreldes seda nõudva laiendusega uBlock Origin või muu sisutõkestiga on uBOL-i piiratus üks selle funktsioonidest.
Kuid uBOL võimaldab *selgesõnaliselt* anda täpsemaid lubasid teie valitud veebilehtedele, et neid saaks paremini filtreerida ilufiltrite ja skriptisüstidega.
Veebilehele täpsustatud lubade andmiseks ava hüpikpaneel ja vali põhjalikum filtreerimisrežiim, näiteks Optimaalne või Põhjalik.
Seejärel hoiatab veebilehitseja praeguse veebilehe laienduse taotletud täiendavate õiguste andmise tagajärgede eest ja peate veebilehitsejale ütlema, kas nõustute taotlusega või keeldute sellest.
Kui nõustute uBOLi taotlusega täiendavate õiguste saamiseks praegusel veebilehel, saab see praeguse veebilehe sisu paremini filtreerida.
Fltreerimise tavarežiimi saate määrata uBOLi valikute lehelt. Kui määrate optimaalse või põhjaliku režiimi tavaliseks, peate andma uBOLile loa kõikide veebilehtede andmete lugemiseks ja muutmiseks.
Pidage meeles, et see on veel arendamisel, mille lõppeesmärgid on järgmised:
- Paigaldamise ajal laialdased hostiõigused puuduvad kasutaja annab laiendatud load selgesõnaliselt ja veebilehe põhiselt.
- Täiesti deklaratiivne töökindluse ja protsessori/mälu tõhususe osas.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) irakargarri blokeatzailea de, baimen gutxiekin eta MV3ean basatua
uBO Lite (uBOL) is an MV3-based content blocker.
Lehenespenez, iragazki-zerrenda hauek ditu konfiguratuta:
@@ -10,21 +10,3 @@ Peter Lowe-ren Ad and tracker zerrenda
Ruleta gehiago aktibatu ahal duzu aukerak orria --klikatu _Cogs_ ikonoa panelearen lehioan
uBOL guztiz deklaratiboa da, hau da, ez dago uBOL prozesu iraunkor baten beharrik iragazketa gertatzeko, eta CSS/JS injekzioan oinarritutako edukien iragazketa nabigatzaileak berak egiten du fidagarritasunez, luzapenaren arabera beharrean. Horrek esan nahi du uBOLek berak ez duela CPU/memoria baliabiderik kontsumitzen edukien blokeoa martxan dagoen bitartean... uBOLren zerbitzuko langileen prozesua _only_ behar da popup panelarekin edo aukera orriekin elkarreragiten denean.
uBOLek ez du "irakurtzeko eta aldatzeko datuak" baimen zabalik behar instalazio-unean, horregatik bere gaitasun mugatuak uBlock Origin-ekin alderatuta edo beste eduki-blokeatzaile batzuekin alderatuta, "irakurtzeko eta aldatzeko datuak" baimen zabalak behar dituzten instalazio garaian.
Hala ere, uBOLek aukera ematen dizu *esplizituki* baimen hedatuak zure aukeratutako gune espezifikoetan, gune horietan hobeto iragazteko iragazte kosmetikoak eta scriptlet injekzioak erabiliz.
Leku jakin batean baimenak emateko, ireki panel emergentea eta aukeratu goiko iragazteko modu bat, optimo edo oso gisa.
Nabigatzaileak orduan jakinaraziko dizu zer ondorio dituen luzapenak eskatutako baimen gehigarriak emateak egungo gunean, eta nabigatzaileari esan beharko diozu eskaera onartzen duzun edo uko egiten diozun.
Baimen gehigarrien eskaera onartzen baduzu, oraingo gunean edukiak hobeto iragazi ahal izango ditu.
Iragazki modu lehenetsia uBOL-en aukeren orrialdetik ezar dezakezu. Modu hoberena edo osoa aukeratzen baduzu lehenetsitako moduan, uBOL-i webgune guztietako datuak irakurtzeko eta aldatzeko baimena eman beharko diozu.
Gogoan izan oraindik lan bat dela, azken helburu hauekin:
- Instalatzeko garaian, ez dago baimen zabalik. Erabiltzaileak esplizituki ematen ditu baimen zabalduak.
- Erabat deklaratiboa fidagarritasunagatik eta CPU/memoriaren eraginkortasunagatik.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
مجموعه قوانین پیش فرض آن مطابق با مجموعه قوانین پیش فرض uBlock Origin است:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) on *käyttöoikeudeton* MV3-pohjainen sisällönestotyökalu.
uBO Lite (uBOL) on MV3-pohjainen sisällönestotyökalu.
Oletusarvoiset sääntömääritykset vastaavat uBlock Origin -laajennuksen oletuksia:
@@ -10,21 +10,3 @@ Oletusarvoiset sääntömääritykset vastaavat uBlock Origin -laajennuksen olet
Voit aktivoida lisää sääntömäärityksiä laajennuksen asetuksista paina ponnahduspaneelin _Ratas_-kuvaketta.
uBOL on täysin deklaratiivinen, eli suodatus ei edellytä pysyvää uBOL-prosessia ja CSS-/JS-koodin manipulointiin perustuva sisällönsuodatuksen suorittaa laajennusprosessin sijaan luotettavasti selainsovellus. Tämän ansiosta itse uBOL ei kuormita prosessoria tai keskusmuistia sisällöneston tapahtuessa -- uBOL:n työprosessia tarvitaan _ainoastaan_ ponnahduspaneelia ja asetussivuja käytettäessä.
uBOL ei edellytä laajan tietojen luku- ja muokkausoikeuden myöntämistä asennuksen yhteydessä, jonka vuoksi sen oletusarvoiset valmiudet ovat uBlock Originia ja muita vastaavia sisällönestotyökaluja rajallisemmat.
On kuitenkin mahdollista myöntää *yksinomaisesti* uBOL:lle laajennetut käyttöoikeudet sivustokohtaisesti niiden suodatuksen tehostamiseksi kosmeettisella suodatuksella ja scriplet-injektoinnilla.
Laajemmat oikeudet myönnetään avoimelle sivustolle avaamalla ponnahduspaneeli ja valitsemalla korkeampi suodatustaso, kuten "Optimaalinen" tai "Täysi".
Tällöin selain varoittaa laajennuksen avoimelle sivustolle pyytämien käyttöoikeuksien seurauksista ja pyytää hyväksymään tai hylkäämään pyynnön.
Jos uBOL:n käyttöoikeuspyyntö avoimelle sivustolle hyväksytään, se pystyy suodattamaan sivuston sisältöä tehokkaammin.
Voit asettaa oletusarvoisen suodatustilan uBOL:n asetussivulta. Jos valitset oletustilaksi Optimaalinen tai Täysi, on uBOL:lle myönnettävä oikeus lukea ja muokata tietojasi kaikilla verkkosivustoilla.
Huomioithan, että laajennuksen kehitys vielä kesken, seuraavilla tavoitteilla:
- Laajoja käyttöoikeuksia ei tarvita asennusvaiheesssa, vaan laajennetut oikeudet myönnetään aina sivustokohtaisesti käyttäjän toimesta.
- Täysin deklaratiivinen luotettavuutta ja prosessorin/muistin kuormituksen keventämiseksi.

View File

@@ -1,4 +1,4 @@
Ang uBO Lite (uBOL) ay isang eksperimental at *permission-less* na tagaharang ng content na nakabase sa MV3.
Isang content blocker na nakabase sa MV3 ang uBO Lite (uBOL).
Tulad ng uBlock Origin, ito rin ang mga default na listahan ng mga filter:
@@ -7,24 +7,6 @@ Tulad ng uBlock Origin, ito rin ang mga default na listahan ng mga filter:
- EasyPrivacy
- Listahan ni Peter Lowe sa mga ad at tracking server (Peter Lowes Ad and tracking server list)
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Maaring magpagana ng mas maraming ruleset sa page ng options -- pindutin ang _Cogs_ sa popup na panel.
Deklaratibo lamang ang uBOL, kaya hindi nito kailangan ng permanenteng proseso upang mag-filter, at mainam na ginagawa ng browser mismo imbes na ekstensyon ang pagfi-filter sa content na nakabase sa CSS o JS. Ibig-sabihin, hindi kumokonsyumo ng CPU o memorya ang uBOL habang nanghaharang -- ang proseso ng trabahante ng serbisyo ay kailangan _lang_ kung nasa popup panel o pahina ng opsyon ka.
Hindi kailangan ng uBOL ang malawakang pahintulot para "basahin at baguhin ang data" pagka-install, kaya kung bago pa lang itong install ay limitado ang kakayahan nito kumpara sa uBlock Origin o iba pang mga pangharang ng content na nangangailangan ng malawakang pahintulot para "basahin at baguhin ang data" pagka-install.
Ngunit, pwede mong *pasadyang* pahintulutan ang uBOL na magkaroon ng pinalawak na pahintulot sa mga website na pipiliin mo para mas mapabuti ang pagfi-filter sa mga site na iyon gamit ang kosmetikong pagfi-filter at injeksyon ng scriptlet.
Upang bigyan ito ng pinalawak na pahintulot sa isang site, buksan ang popup panel at pumili ng isang mode sa pagfi-filter tulad ng Pinainam o Kumpleto.
Babalaan ka ng browser tungkol sa mga epekto ng pagbibigay ng karagdagang pahintulot na hinihiling ng ekstensyon sa kasalukuyang site, at kailangan mong tumugon kung pinapahintulutan mo ba ito o hindi.
Kung tatanggapin mo ang hiling ng uBOL para sa karagdagang mga pahintulot sa kasalukuyang site, mas magiging mainam ang pagfi-filter nito sa content para sa kasalukuyang site.
Maitatakda mo ang default na mode sa pagfi-filter sa pahina ng mga opsyon ng uBOL. Kailangan mong pahintulutan ang uBOL na basahin o baguhin ang datos sa lahat ng mga website kung pipiliin mo ang Pinainam o Kumpleto bilang default na mode sa pagfi-filter.
Tandaang kasalukuyan pang binubuo ang ekstensyong ito, at nilalayon nitong:
- Walang kakailanganing malawakang pahintulot pagka-install -- ibibigay lang ng user ang karagdagang pahintulot sa mga piling site.
- Deklaratibo lamang upang maging mapagkakatiwalaan at matipid sa CPU at memorya.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) est un bloqueur de contenu *sans permission* basé sur le manifeste MV3.
uBO Lite (uBOL) est un bloqueur de contenu basé sur le manifeste MV3.
Les règles par défaut correspondent au filtrage par défaut d'uBlock Origin :
@@ -10,21 +10,3 @@ Les règles par défaut correspondent au filtrage par défaut d'uBlock Origin :
Vous pouvez ajouter plus de règles en consultant la page des paramètres -- Cliquez sur l'icône de l'_Engrenage_ dans le panneau pop-up.
uBOL est entièrement déclarative, c'est-à-dire qu'il n'y a pas besoin d'un processus uBOL permanent pour filtrer, et le filtrage basé sur l'injection CSS/JavaScript se fait en toute fiabilité par le navigateur lui-même. Cela veut dire qu'en soi, uBOL ne consomme pas de ressources processeur/mémoire pendant le blocage de contenu -- l'agent de service d'uBOL n'est sollicité _que_ quand vous interagissez avec le panneau pop-up ou la page des paramètres.
Contrairement à uBlock Origin ou d'autres extensions de blocage, uBOL ne nécessite pas de larges permissions de "lecture/modification des données" au moment de l'installation, ce qui explique ses capacités au départ limitées.
Cependant, uBOL vous permet *explicitement* d'accorder des permissions étendues sur les sites Web de votre choix, pour qu'elle puisse mieux les filtrer en utilisant le filtrage esthétique et des injections de scriptlet.
Pour accorder des permissions étendues sur un site Web donné, ouvrez le panneau pop-up et choisissez un mode de filtrage plus élevé comme le mode Optimal ou le mode Complet.
Le navigateur vous préviendra alors des effets de l'accord de permissions additionnelles requises par l'extension sur le site Web en cours de consultation et vous devrez indiquer votre choix au navigateur (Accepter/Refuser).
Si vous acceptez la requête d'uBOL pour des permissions additionnelles sur le site Web en cours de consultation, le filtrage de son contenu sera renforcé.
Vous pouvez définir le mode de filtrage par défaut depuis la page des paramètres d'uBOL. Si vous choisissez le mode Optimal ou Complet en tant que mode par défaut, vous devrez accorder à uBOL l'autorisation de lire et de modifier des données sur tous les sites Web.
Gardez à l'esprit que c'est en cours de développement, avec comme objectifs :
- De ne pas accorder de permissions globales au moment de l'installation -- les permissions étendues s'accordent explicitement par l'utilisateur site par site.
- De travailler de manière entièrement déclarative pour la fiabilité et l'efficacité processeur/mémoire.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is in *tastimmingsleaze* MV3-basearre ynhâldsblokkearder.
uBO Lite (uBOL) is in MV3-basearre ynhâldsblokkearder.
De standert regelset komt oerien mei de standert filterset fan uBlock Origin:
@@ -10,21 +10,3 @@ De standert regelset komt oerien mei de standert filterset fan uBlock Origin:
Jo kinne mear regelsets ynskeakelje troch de opsjesside te besykjen klik op it _tântsjilpiktogram_ yn it pop-uppaniel.
uBOL is folslein deklaratyf, wat betsjut dat in permanint uBOL-proses foar de filtering net nedich is, en ynhâldsfiltering op basis fan CSS/JS-ynjeksje op in betroubere manier troch de browser sels útfierd wurdt yn stee fan de útwreiding. Dit betsjut dat uBOL sels gjin CPU-/ûnthâldboarnen brûkt wylst ynhâldsblokkearring aktyf is it serviceworker-proses fan uBOL is _allinnich_ fereaske as jo mei it pop-uppaniel of de opsjessiden wurkje.
uBOL fereasket gjin brede tastimming foar it lêzen en oanpassen fan gegevens wylst ynstallaasje, fan dêr de beheinde ynboude mooglikheden dêrfan yn fergeliking mei uBlock Origin of oare ynhâldsblokkearders dyt brede tastimmingen foar it lêzen en oanpassen fan gegevens fereaskje wylst de ynstallaasje.
Jo kinne yn uBOL echter *eksplisyt* wiidweidige tastimmingen ferliene op bepaalde websites fan jo kar, sadat it op dy websites better filterje kin fia kosmetyske filtering en scriptlet-ynjeksjes.
Om wiidweidige tastimmingen op in bepaalde website te ferlienen, iepenje jo it pop-uppaniel en kieze jo in hegere filtermodus, lykas Optimaal of Folslein.
De browser warskôget jo dan oer de gefolgen fan it ferlienen fan de troch de útwreiding oanfrege oanfoljende tastimmingen op de aktuele website, en jo moatte de browser witte litte oft jo de oanfraach akseptearje of wegerje.
As jo de oanfraach fan uBOL foar oanfoljende tastimmingen op de aktuele website akseptearje, sil it ynhâld foar de aktuele website better filterje kinne.
Jo kinne de standert filtermodus ynstelle fan de opsjesside fan uBOL ôf. As jo de modus Optimaal of Folslein as de standertmodus kieze, moatte jo uBOL de tastimming foar it lêzen en oanpassen fan gegevens op alle websites te ferlienen.
Unthâld dat dit noch wurk yn útfiering is, mei dizze eindoelen:
- Gjin brede host-tastimmingen wylst ynstallaasje wiidweidige tastimmingen wurde eksplisyt en per website ferliend troch de brûker.
- Folslein deklaratyf omwille fan betrouberheid en CPU-/ûnthâldeffisjinsje.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) é un bloqueador de contido baseado en MV3 *sen permisos.
uBO Lite (uBOL) é un bloqueador de contido baseado en MV3.
O conxunto de regras predeterminado corresponde ao conxunto de filtros predeterminado de uBlock Origin:
@@ -10,21 +10,3 @@ Lista de servidores de seguimento e anuncios de Peter Lowe
Podes activar máis grupos de regras indo á páxina de opcións -- preme na roda dentada no panel emerxente.
uBOL é totalmente declarativo, o que significa que non é necesario un proceso permanente de uBOL para que se produza o filtrado e o filtrado de contido baseado en inxección de CSS/JS realízao de forma fiable o propio navegador en lugar da extensión. Isto significa que o propio uBOL non consume recursos de CPU/memoria mentres o bloqueo de contido está en curso -- o proceso do traballador do servizo de uBOL é necesario _só_ cando interactúas co panel emerxente ou coas páxinas de opcións.
uBOL non require amplos permisos de "ler e modificar datos" no momento da instalación, de aí as súas capacidades limitadas fóra da caixa en comparación con uBlock Origin ou outros bloqueadores de contido que requiren amplos permisos de "ler e modificar datos" no momento da instalación.
Non obstante, uBOL permítelle *de forma explícita* conceder permisos estendidos en sitios específicos da súa elección para que poida filtrar mellor neses sitios mediante filtrado cosmético e inxeccións de scriptlet.
Para conceder permisos estendidos nun sitio determinado, abra o panel emerxente e escolle un modo de filtrado superior, como Óptimo ou Completa.
A continuación, o navegador avisará sobre os efectos da concesión dos permisos adicionais solicitados pola extensión no sitio actual, e terá que indicarlle ao navegador se acepta ou rexeita a solicitude.
Se aceptas a solicitude de uBOL de permisos adicionais no sitio actual, poderá filtrar mellor o contido do sitio actual.
Podes establecer o modo de filtrado predeterminado desde a páxina de opcións de uBOL. Se escolle o modo Óptimo ou Completo como o predeterminado, terá que conceder a uBOL o permiso para ler e modificar datos en todos os sitios web.
Teña en conta que este aínda é un traballo en curso, cos seguintes obxectivos finais:
- Non hai permisos de host amplos no momento da instalación. Os permisos estendidos son concedidos explícitamente polo usuario por cada sitio.
- Totalmente declarativo para a fiabilidade e a eficiencia da CPU/memoria.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) הוא חוסם תוכן *ללא הרשאות* מבוסס MV3.
uBO Lite (uBOL) הוא חוסם תוכן מבוסס MV3.
ערכת הכללים ברירת מחדל שמתכתבת עם ערכת המסננים של uBlock Origin:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) הוא חוסם תוכן *ללא הרשאות* מבוסס MV3.
ניתן לאפשר קבוצות חוקים נוספות בדף האפשרויות - עם לחיצה על סמליל _גלגלי השיניים_ בחלונית הקופצת.
uBOL הוא הכרזתי לחלוטין, כלומר אין צורך בתהליך uBOL קבוע כדי שהסינון יתרחש, וסינון תוכן מבוסס הזרקת CSS/JS מבוצע באופן אמין על ידי הדפדפן עצמו ולא על ידי ההרחבה. המשמעות היא ש־uBOL עצמו לא צורכך משאבי מעבד/זיכרון בזמן שחסימת התוכן מתרחשת תהליך ה־service worker של uBOL נדרש _אך ורק_ בזמן הידוד עם החלון הקופץ או עם עמוד האפשרויות.
uBOL לא דורש הרשאת "קריאה ושינוי נתונים" נרחבות במהלך ההתקנה, לכן היכולות המוגבלות שלה הישר מהקופסה בהשוואה ל־uBlock Origin או חוסמי תוכן אחרים הדורשים הרשאות "קריאה ושינוי נתונים" נרחבות כבר בזמן ההתקנה.
עם זאת, uBOL מאפשר להעניק *באופן מפורש* הרשאות נרחבות לאתרים מסויימים על פי בחירה, למיטוב הסינון באתרים אלה, באמצעות סינון קוסמטי והזרקות סקריפלטים.
כדי להעניק הרשאות נרחבות באתר נתון, נא לפתוח את הלוח הקופץ ולבחור באופן סינון גבוה יותר כגון מיטבי או מלא.
לאחר מכן, תוצג אזהרת דפדפן על השפעות מתן הרשאות נוספות אותן מבקשת ההרחה באתר הנוכחי, הדפדפן ימתין לקבלת תשובה האם לקבל או לדוחות את בקשת ההרשאה.
אם תקבל את הבקשה של uBOL להרשאות נוספות באתר הנוכחי, הוא יוכל לסנן טוב יותר תוכן עבור האתר הנוכחי.
ניתן להגדיר את מצב הסינון המוגדר כברירת מחדל מדף האפשרויות של uBOL. אם הבחירה היתה באופןסינון מיטבי או מלא כברירת המחדל, יידרש להעניק ל־uBOL הרשאת קריאה שנוי נתונים בכל אתרי הרשת.
יש לזכור שזו עדיין 'עבודה בתהליך', עם המטרות הבאות:
- אין הרשאות מארח רחבות בזמן ההתקנה -- הרשאות מורחבות מוענקות במפורש על ידי המשתמש על בסיס לכל אתר.
הכרזתי לחלוטין, אמין ויעיל בצריכת משאבי מעבד/זיכרון.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) एक *अनुमति-रहित* MV3-आधारित कन्टेन्ट ब्लॉकर है।
uBO Lite (uBOL) is an MV3-based content blocker.
डिफ़ॉल्ट रूलसेट uBlock Origin के डिफ़ॉल्ट फ़िल्टर सेट के अनुरूप होता है:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) एक *अनुमति-रहित* MV3-आधारित
आप विकल्प पृष्ठ पर जाकर और अधिक नियम-सेट सक्षम कर सकते हैं -- पॉपअप पैनल में _Cogs_ आइकन पर क्लिक करें।
uBOL पूरी तरह से वर्णनात्मक है, जिसका यह अर्थ है कि फ़िल्टरिंग के लिए एक स्थायी uBOL प्रक्रिया की कोई आवश्यकता नहीं है, और CSS/JS इंजेक्शन-आधारित कन्टेन्ट फ़िल्टरिंग एक्सटेंशन के बजाय ब्राउज़र द्वारा विश्वसनीय रूप से की जाती है। इसका यह अर्थ है कि कन्टेन्ट ब्लॉक करते समय uBOL द्वारा सीपीयू/मेमोरी संसाधनों का उपभोग स्वयं नहीं किया जाता है -- uBOL की सर्विस प्रोसेस की आवश्यकता _केवल_ तब होती है जब आप पॉपअप पैनल या विकल्प पृष्ठों पर कोई अंत:क्रिया करते हैं।
uBOL को इन्सटॉल करते समय "डेटा को पढ़ने और संशोधित करने" की व्यापक अनुमति की आवश्यकता नहीं होती है, अतः इसकी सीमित क्षमताओं तत्काल उपयोगिता की तुलना में uBlock Origin या अन्य कन्टेन्ट ब्लॉकर को इन्सटॉलेशन के समय "डेटा को पढ़ने और संशोधित करने" की व्यापक अनुमतियों की आवश्यकता होती है।
हालांकि, uBOL आपको अपनी मनपसंद विशिष्ट साइटों पर विस्तारित अनुमतियां देना *स्पष्ट रूप से* अनुमत करता है ताकि यह कॉस्मेटिक फ़िल्टरिंग और स्क्रिप्टलेट इंजेक्शन का उपयोग करके उन साइटों पर अच्छी तरह से फ़िल्टर कर सके।
किसी एक साइट पर विस्तारित अनुमतियां देने के लिए, पॉपअप पैनल खोलें और उच्च फ़िल्टरिंग मोड, जैसे कि 'अनुकूलतम' (ऑप्टिमल) या 'पूर्ण' (कंपलीट) चुनें।
इसके बाद ब्राउज़र द्वारा आपको वर्तमान साइट पर एक्सटेंशन द्वारा अनुरोधित अतिरिक्त अनुमतियों को देने के प्रभावों के बारे में चेतावनी दी जाएगी, और आपको ब्राउज़र को यह बताना होगा कि आप अनुरोध को स्वीकार करते हैं या अस्वीकार करते हैं।
यदि आप वर्तमान साइट पर अतिरिक्त अनुमतियों के लिए uBOL के अनुरोध को स्वीकार करते हैं, तो यह वर्तमान साइट के लिए कन्टेन्ट अच्छी तरह से फ़िल्टर करने में सक्षम होगा।
आप uBOL के विकल्प पृष्ठ से डिफ़ॉल्ट फ़िल्टरिंग मोड को सेट कर सकते हैं। यदि आप 'अनुकूलतम' (ऑप्टिमल) या 'पूर्ण' (कंपलीट) मोड को डिफ़ॉल्ट रूप से चुनते हैं, तो आपको uBOL को सभी वेबसाइटों पर डेटा को पढ़ने और संशोधित करने के लिए अनुमत करना होगा।
ध्यान रखें कि यह कार्य अभी भी प्रगतिधीन है, और इसके न‍िम्नांकित अंतिम लक्ष्यों तय किये गए हैं:
- इन्सटॉल करते समय कोई व्यापक होस्ट अनुमतियां नहीं -- विस्तारित अनुमतियां उपयोगकर्ता द्वारा हर एक साइट के आधार पर स्पष्ट रूप से दी जाती हैं।
- विश्वसनीयता और सीपीयू/मेमोरी दक्षता के लिए पूरी तरह वर्णनात्मक।

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) je bloker sadržaja *bez dopuštenja* baziran na MV3.
uBO Lite (uBOL) je bloker sadržaja baziran na MV3.
Zadana lista pravila odgovara uBlock Origin-ovoj zadanoj listi filtera:
@@ -10,21 +10,3 @@ Zadana lista pravila odgovara uBlock Origin-ovoj zadanoj listi filtera:
Možete omogućiti više skupova pravila tako što ćete posjetiti stranicu s opcijama -- kliknite ikonu _Cogs_ na skočnoj ploči.
uBOL je u potpunosti deklarativan, što znači da nema potrebe za trajnim uBOL procesom za filtriranje, a filtriranje sadržaja temeljeno na ubacivanju CSS/JS pouzdano izvodi sam preglednik, a ne ekstenzija. To znači da sam uBOL ne troši CPU/memorijske resurse dok je blokiranje sadržaja u tijeku -- uBOL-ov servisni radni proces potreban je _samo_ kada komunicirate s skočnom pločom ili stranicama s opcijama.
uBOL ne zahtijeva široku dozvolu za "čitanje i izmjenu podataka" u vrijeme instalacije, stoga ima zadane ograničene mogućnosti u usporedbi s uBlock Origin ili drugim blokatorima sadržaja koji zahtijevaju veću dozvolu za "čitanje i izmjenu podataka" u vrijeme instalacije.
Međutim, uBOL vam omogućuje da *eksplicitno* dodijelite proširena dopuštenja na određenim web-stranicama po vašem izboru tako da može bolje filtrirati te web-stranice koristeći kozmetičko filtriranje i injekcijske skripte.
Da biste dodijelili proširena dopuštenja na određenoj web stranici, otvorite skočnu ploču i odaberite viši način filtriranja kao što je Optimalno ili Potpuno.
Preglednik će vas tada upozoriti o učincima dodjele dodatnih dopuštenja koje traži ekstenzija na trenutnom mjestu, a vi ćete morati reći pregledniku prihvaćate li ili odbijate zahtjev.
Ako prihvatite uBOL-ov zahtjev za dodatnim dozvolama na trenutnoj stranici, moći će bolje filtrirati sadržaj na njoj.
Zadani način filtriranja možete postaviti na stranici s opcijama uBOL-a. Ako kao zadano odaberete Optimalni ili Potpuni način rada, morati ćete dati uBOL-u dopuštenje za čitanje i izmjenu podataka na svim web stranicama.
Imajte na umu da je ovo još u tijeku, sa sljedećim krajnjim ciljevima:
- Nema širokih dopuštenja hosta u vrijeme instalacije -- proširena dopuštenja izričito dodjeljuje korisnik za svaku pojedinačnu stranicu.
- Potpuno deklarativno za pouzdanost i učinkovitost CPU/memorije.

View File

@@ -1,4 +1,4 @@
A uBO Lite (uBOL) egy *engedélyt nem igénylő* MV3-alapú tartalomblokkoló.
A uBO Lite (uBOL) egy MV3-alapú tartalomblokkoló.
Az alapértelmezett szabálykészlet megfelel a uBlock Origin alapértelmezett szűrőkészletének:
@@ -10,21 +10,3 @@ Az alapértelmezett szabálykészlet megfelel a uBlock Origin alapértelmezett s
További szabályokat engedélyezhet a beállítások oldalon kattintson a _Fogaskerekek_ ikonra a felugró panelen.
A uBOL teljes mértékben deklaratív, vagyis nincs szükség állandó uBOL folyamatra a szűréshez, és a CSS/JS injektálás-alapú tartalomszűrést maga a böngésző végzi megbízhatóan, nem pedig a kiegészítő. Ez azt jelenti, hogy az uBOL maga nem fogyaszt CPU/memória erőforrásokat, amíg a tartalom blokkolása folyamatban van az uBOL service worker folyamatára _csak_ akkor van szükség, amikor az felugró panellel vagy a beállítási oldalakkal érintkezik.
A uBOL nem igényel széles körű „adatok módosítása és olvasása” engedélyt a telepítéskor, ezért korlátozott képességei vannak a uBlock Originhez vagy más tartalomblokkolókhoz képest, amelyek széles körű „adatok olvasása és módosítása” engedélyeket igényelnek a telepítésükkor.
Az uBOL azonban lehetővé teszi, hogy *kifejezetten* kiterjesztett engedélyeket adjon az Ön által választott bizonyos webhelyeknél, hogy jobban szűrhessen ezeken a webhelyeken kozmetikai szűréssel és parancsfájlbeillesztéssel.
Ha kiterjesztett engedélyeket szeretne adni egy adott webhelyen, nyissa meg a felugró panelt, és válasszon magasabb szűrési módot, mint az Optimális vagy a Teljes.
A böngésző ekkor figyelmezteti Önt a bővítmény által kért további engedélyek megadásának hatásaira az aktuális webhelyen, és közölnie kell a böngészővel, hogy elfogadja-e vagy elutasítja a kérést.
Ha elfogadja az uBOL további engedélyekre vonatkozó kérését az aktuális webhelyen, akkor jobban tudja szűrni az aktuális webhely tartalmát.
Az alapértelmezett szűrési módot az uBOL beállítási oldalán állíthatja be. Ha az Optimális vagy a Teljes módot választja alapértelmezettként, akkor az uBOL-nak engedélyt kell adnia az adatok olvasására és módosítására az összes webhelyen.
Ne feledje, hogy ez még egy folyamatban lévő fejlesztés, a következő célokkal:
- Nincsenek széles körű kiszolgálókra vonatkozó engedélyek a telepítés során a kiterjesztett engedélyeket a felhasználó kifejezetten webhelyenként adja meg.
- Teljesen deklaratív a nagyobb megbízhatóság, illetve CPU- és memóriahatékonyság érdekében.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL)-ը բովանդակության արգելափակիչ է, որը *չի պահանջում թույլտվություններ*, և հիմնված է MV3-ի վրա։
uBO Lite (uBOL) is an MV3-based content blocker.
Կանոնների լռելյայն փաթեթը համապատասխանում է uBlock Origin-ի լռելյայն զտիչների փաթեթին։
@@ -10,25 +10,3 @@ uBO Lite (uBOL)-ը բովանդակության արգելափակիչ է, որ
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL-ն ամբողջությամբ դեկլարատիվ է, այսինքն՝ զտման համար անընդհատ կատարվող uBOL գործընթացի կարիք չկա, իսկ CSS/JS արմատավորման վրա հիմնված բովանդակության զտումը հուսալիորեն իրականացվում է զննիչի կողմից, այլ ոչ թե ընդլայնման միջոցով։ Սա նշանակում է, որ uBOL հավելումը չի սպառում մշակիչի/հիշողության որևէ ռեսուրս, երբ տեղի է ունենում գովազդի արգելափակումը. uBOL աշխատանքային գործընթացն աշխատում է _միայն_ երբ Դուք փոփոխություններ եք կատարում դուրս լողացող վահանակում կամ ընտրանքների էջում։
uBOL-ը տեղադրման ժամանակ «տվյելները լիովին ընթերցելու և փոփոխելու» թույլտվություն չի պահանջում, ուստի այն ունի սահմանափակ հնարավորություններ՝ համեմատած uBlock Origin-ի և բովանդակության այլ արգելափակիչների հետ, որոնք տեղադրման ժամանակ պահանջում են այդպիսի թույլտվություն։
Однако uBOL позволяет *намеренно* давать расширенные разрешения для определенных сайтов - по вашему усмотрению, чтобы эффективнее работать, используя косметическую фильтрацию и scriptlet-внедрения.
Այնուամենայնիվ, uBOL-ը թույլ է տալիս *դիտմամբ* տրամադրել ընդլայնված թույլտվություններ Ձեր ընտրած կայքերի համար, որպեսզի այն կարողանա էլ ավելի լավ զտել այդ կայքերը՝ օգտագործելով կոսմետիկ զտումը և սցենարների արմատավորումները։
Для предоставления расширенных разрешений на текущем сайте - откройте всплывающую панель и выберите повышенный режим фильтрации: Оптимальный или Полный.
Ընթացիկ կայքում ընդլայնված թույլտվություններ տրամադրելու համար բացեք դուրս լողացող վահանակը և ընտրեք ընդլայնված զտման ռեժիմ՝ Գերադասելի կամ Ամբողջական։
Այնուհետև զննիչը կզգուշացնի Ձեզ ընթացիկ կայքում ընդլայնման կողմից պահանջվող լրացուցիչ թույլտվությունների տրամադրման հետևանքների մասին, և Դուք պետք է ընտրեք՝ ընդունում եք, թե մերժում եք հայտը։
Եթե ​​ընդունեք uBOL-ին լրացուցիչ թույլտվություններ տալու հայտը, ապա այն կկարողանա ավելի արդյունավետ կերպով զտել ընթացիկ կայքի բովանդակությունը։
Դուք կարող եք սահմանել զտման լռելյայն ռեժիմը uBOL-ի ընտրանքների էջում։ Եթե ​​որպես լռելյայն ընտրեք «Գերադասելի» կամ «Ամբողջական» ռեժիմը, պետք կլինի uBOL-ին թույլտվություն տրամադրեք կարդալու և փոփոխելու տվյալները բոլոր կայքերում։
Հիշեք, որ այս նախագիծը մշակման ակտիվ փուլում է, որ ունի հետևյալ նպատակները.
- Տեղադրման ընթացքում Սահմանափակ թույլտվություններով աշխատանք տեղադրման ժամանակ. օգտվողը ընդլայնված թույլտվություններ է տալիս իր հայեցողությամբ, յուրաքանչյուր կայքի համար առանձին։
- Ամբողջովին դեկլարատիվ է հուսալիության և մշակիչի/հիշողության արտադրողականության համար։

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) adalah pemblokir konten berbasis MV3 yang membutuhkan lebih sedikit perizinan.
uBO Lite (uBOL) adalah pemblokir konten berbasis MV3.
Kumpulan aturan bawaan sesuai dengan kumpulan penyaringan bawaan uBlock Origin:
@@ -7,24 +7,6 @@ Kumpulan aturan bawaan sesuai dengan kumpulan penyaringan bawaan uBlock Origin:
- EasyPrivacy
- Daftar server iklan dan pelacak Peter Lowe
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Anda dapat mengaktifkan lebih banyak rangkaian aturan dengan mengunjungi halaman opsi -- klik ikon _Cogs_ di panel popup.
uBOL sepenuhnya deklaratif, yang mana tidak membutuhkan proses permanen uBOL agar penyaringan dapat terjadi, dan penyaringan konten berbasis injeksi CSS/JS dilakukan sepenuhnya oleh peramban itu sendiri ketimbang oleh ekstensi. Ini berarti bahwa uBOL sendiri tidak mengkonsumsi sumber daya CPU/memori selama melakukan pemblokiran konten -- proses pekerja layanan uBOL dibutuhkan _hanya_ ketika Anda berinteraksi dengan panel popup atau opsi halaman.
uBOL tidak membutuhkan izin "baca dan modifikasi data" pada waktu penginstalan, maka kemampuannya lebih terbatas jika dibandingkan dengan uBlock Origin atau pemblokir konten lain yang memerlukan izin "baca dan modifikasi data" pada waktu penginstalan.
Namun, uBOL memberi anda opsi untuk *secara eksplisit* memberikan izin tambahan pada situs pilihan Anda, sehingga dapat memfilter situs tersebut dengan lebih baik menggunakan pemfilteran kosmetik dan injeksi scriptlet.
Untuk memberikan izin tambahan pada situs tertentu, buka panel popup dan pilih mode pemfilteran yang lebih tinggi seperti Optimal atau Complete.
Perambaan kemudian akan memperingatkan anda tentang efek memberikan izin tambahan yang diminta oleh ekstensi pada situs saat ini, dan Anda harus memberitahu perambaan apakah anda menyetujui atau menolak permintaan.
Jika Anda menyetujui permintaan uBOL untuk izin tambahan pada situs terkini, uBOL akan dapat menyaring konten dengan lebih baik untuk situs terkini.
Anda dapat menentukan mode penyaringan bawaan dari halaman pengaturan uBOL Jika Anda memilih mode Optimal atau Complete sebagai mode bawaan, Anda perlu memberikan uBOL izin untuk membaca dan mengubah data pada semua situs web.
Mohon diingat bahwa ini msaih dalam tahap proses pengerjaan, dengan tujuan akhir sebagai berikut:
- Tidak ada izin pengguna yang luas saat penginstalan -- izin tambahan diberikan secara eksplisit oleh pengguna berdasarkan tiap situs.
- Sepenuhnya delkaratif untuk reliabilitas dan CPU/efisiensi memori.
uBOL sepenuhnya bersifat deklaratif, artinya tidak diperlukan proses uBOL permanen agar penyaringan dapat terjadi, dan penyaringan konten berbasis injeksi CSS/JS dilakukan secara andal oleh browser itu sendiri dan bukan oleh ekstensi. Artinya uBOL sendiri tidak mengonsumsi sumber daya CPU/memori saat pemblokiran konten sedang berlangsung -- proses pekerja layanan uBOL diperlukan _hanya_ saat Anda berinteraksi dengan panel popup atau halaman opsi.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) è un sistema per bloccare contenuti che *non richiede autorizzazioni* basato su MV3.
uBO Lite (uBOL) è un sistema di blocco dei contenuti basato su MV3.
L'insieme di regole predefinito corrisponde all'insieme di filtri predefinito di uBlock Origin:
@@ -10,21 +10,3 @@ L'insieme di regole predefinito corrisponde all'insieme di filtri predefinito di
Puoi abilitare altri set di regole visitando la pagina delle opzioni: clicca sull'icona _Cogs_ nel pannello a comparsa.
uBOL è interamente dichiarativo, ovvero non è necessario che ci sia un processo di uBOL permanente per poter eseguire il filtraggio; e il filtraggio dei contenuti basato sull'iniezione di elementi CSS/JS viene eseguito in modo affidabile dal browser stesso piuttosto che dall'estensione. Ciò significa che lo stesso uBOL non consuma risorse di CPU o memoria mentre il blocco dei contenuti viene eseguito: il processo che esegue il servizio di uBOL è richiesto _solamente_ quando interagisci con il pannello a comparsa o con le pagine delle opzioni.
uBOL non richiede un'ampia autorizzazione di "lettura e modifica dei dati" al momento dell'installazione, da qui le sue capacità limitate rispetto a uBlock Origin o ad altre estensioni che richiedono ampie autorizzazioni di "lettura e modifica dei dati" al momento dell'installazione.
Tuttavia, uBOL consente di concedere *esplicitamente* permessi estesi a siti specifici di vostra scelta, in modo da poter filtrare meglio tali siti utilizzando il filtraggio cosmetico e le iniezioni di scriptlet.
Per concedere autorizzazioni estese su un determinato sito, apri il pannello popup e scegli una modalità di filtraggio più elevata come Ottimale o Completa.
Il browser quindi ti avviserà degli effetti della concessione delle autorizzazioni aggiuntive richieste dall'estensione sul sito corrente e dovrai comunicare al browser se accetti o rifiuti la richiesta.
Se accetti la richiesta di uBOL per autorizzazioni aggiuntive sul sito corrente, esso sarà in grado di filtrare meglio il contenuto per il sito corrente.
Puoi impostare la modalità di filtraggio predefinita dalla pagina delle opzioni di uBOL. Se scegli come predefinita la modalità Ottimale o Completa, dovrai concedere a uBOL il permesso di leggere e modificare i dati di tutti i siti web.
Tieni presente che questo è ancora un work in progress, con questi obiettivi finali:
- Nessuna autorizzazione estesa degli host al momento dell'installazione; le autorizzazioni estese vengono concesse esplicitamente dall'utente in base al sito.
- Interamente dichiarativo per l'affidabilità e l'efficienza della CPU/memoria.

View File

@@ -1,8 +1,8 @@
uBO Lite (uBOL) は権限を必要としない MV3 ベースのコンテンツブロッカーです。
uBO Lite (uBOL) は MV3 ベースのコンテンツブロッカーです。
デフォルトのルールセットは以下の通り。uBlock Origin のデフォルトフィルターセットと同じです。
デフォルトのルールセットは以下の通りです。uBlock Origin のデフォルトフィルターセットと同じです。
- uBlock Origin の内フィルターリスト
- uBlock Origin の内フィルターリスト
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
@@ -10,21 +10,3 @@ uBO Lite (uBOL) は権限を必要としない MV3 ベースのコンテンツ
オプションページでルールセットを有効化できます。ポップアップパネルの「歯車」アイコンをクリックしてください。
uBOL は完全に宣言的です。つまり、フィルタリングを行うための恒久的な uBOL プロセスは必要なく、CSS/JS インジェクション ベースのコンテンツフィルタリングは拡張機能ではなくブラウザによって、確実に実行されます。 これは uBOL がコンテンツブロッキングの際に CPU、メモリを消費しないことを意味します。uBOL のサービス ワーカーは ポップアップ パネルや設定ページでのみ必要とされます。
uBOL はインストール時に広範な「データの読み取りと変更」の権限を要求しません。したがって uBlock Origin やその他の、インストール時に広範な「データの読み取りと変更」の権限を要求するコンテンツ ブロッカーに比べて、行えることが制限されています。
しかし、ユーザーの選んだ特定のサイトに対する拡張権限を「明示的に」付与すれば、そのサイト上で整形フィルターやスクリプトレットの挿入を用いた優れたフィルタリングを行うことができます。
特定のサイトで拡張された権限を付与するには、ポップアップ パネルを開いて、「最適」や「完全」のようなより高いフィルタリングモードを選択します。
ブラウザは、現在のサイトで拡張機能によってリクエストされた追加の権限を付与することによってもたらされる影響について警告します。承認または拒否することができます。
閲覧中のサイトに対するuBOLの追加的な権限要求リクエストを承認すると、そのサイトへのコンテンツフィルタリングの品質をあげることができます。
uBOL の設定ページで既定のフィルタリングモードを設定できます。 「最適」または「完全」を規定のフィルタリング モードに設定した場合、すべてのWebサイトで「データの読み取りと変更」権限を付与する必要があります。
注意として、uBOL はまだ開発途中で、これらの開発目標があります。
- インストール時に広範なホスト権限は不要 -- 拡張された権限はサイトごとにユーザーによって明示的に付与されます。
- 完全に宣言的で、CPU、メモリの効率性が良い

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) *ნებართვებისგან თავისუფალი* MV3-ზე დაფუძნებული შიგთავსის შემზღუდავი.
uBO Lite (uBOL) შიგთავის შემზღუდავია MV3-ის მიხედვი.
წესების ნაგულისხმევი კრებული იგივეა, რასაც uBlock Origin იყენებს:
- uBlock Origin ფილტრების ჩაშენებული სიები
- ჩაშენებული ფილტრებით, uBlock Origin რომ იყენებს
- EasyList
- EasyPrivacy
- Peter Lowe სარეკლამო სერვერების სია
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
შეგიძლიათ სხვა კრებულებიც აამოქმედოთ პარამეტრების გვერდიდან -- დაწკაპეთ _Cogs_ ხატულაზე ამომხტომ არეში.
uBOL სრულად დეკლარაციულია, ანუ არაა საჭირო მუდმივად იყოს გაშვებული uBOL-პროცესი გასაფილტრად, CSS/JS ჩანაცვლებით შიგთავსის გაფილტვრას თავად ბრაუზერი უზრუნველყოფს ნაცვლად გაფართოებისა, რაც მეტად საიმედოა. შესაბამისად, uBOL თავად არ დატვირთავს პროცესორს/ოპერატიულს შიგთავსის შეზღუდვის დროს -- uBOL-ის შუამავალ მომსახურე პროცესი საჭიროა _მხოლოდ_ მაშინ, როცა ამომხტომ არესთან ურთიერთქმედებთ ან ცვლით პარამეტრებს.
uBOL არ საჭიროებს „მონაცემთა წაკითხვისა და შეცვლის“ სრულ ნებართვას დაყენებისას, ვინაიდან მოკვეცილი შესაძლებლობებითაა წარმოდგენილი uBlock Origin-თან ან რეკლამის სხვა შემზღუდავებთან შედარებით, რომლებიც ერთბაშად ითხოვს „მონაცემთა წაკითხვისა და შეცვლის“ უფლებას დაყენებისთანავე.
ამასთანავე, uBOL საშუალებას გაძლევთ *მკაფიო* თანხმობით მიუთითოთ გაფართოებული ნებართვები ცალკეულ საიტებზე სურვილისამებრ, რომ უკეთ შეიზღუდოს შიგთავსი ხილული ელემენტების გაფილტვრითა და პროგრამული ჩამატებებით.
გაფართოებული ნებართვების მისაცემად მითითებულ საიტზე, გახსენით ამომხტომი არე და აირჩიეთ ფილტრაციის უფრო მაღალი დონე, როგორიცაა „წონასწორული“ ან „სრული“.
შემდეგ ბრაუზერი გაგაფრთხილებთ გაფართოების მიერ დამატებითი ნებართვების მოთხოვნის შესახებ მოცემულ საიტზე და აირჩევთ, დათანხმდებით თუ უარყოფთ მოთხოვნას.
თუ დათანხმდებით uBOL-ს მოთხოვნას დამატებითი ნებართვებისთვის მიმდინარე საიტზე, უკეთ შეძლებს შიგთავსის შეზღუდვას აღნიშნულ საიტზე.
შეგიძლიათ მიუთითოთ გაფილტვრის ნაგულისხმევი რეჟიმი uBOL-ის პარამეტრების გვერდიდან. თუ აირჩევთ „წონასწორულ“ ან „სრულ“ რეჟიმს ნაგულისხმევად, uBOL-ს უნდა დართოთ ყველა საიტზე მონაცემთა წაკითხვისა და შეცვლის ნება.
დაიხსომეთ, რომ ჯერ კიდევ მუშავდება შემდეგი მიზნებისთვის:
- არანაირი სრული ნებართვების ერთბაშად მოთხოვნა დაყენებისას -- დამატებითი უფლებები შეიძლება მიეცეს მომხმარებლის მკაფიო თანხმობით თითოეულ საიტზე ცალ-ცალკე.
- სრულად დეკლარაციულია პროცესორის/მეხსიერების დასაზოგად.
uBOL მოქმედებს სრულად დადგენილი წესებით, შესაბამისად, არ ესაჭიროება მუდმივად გაშვებული uBOL-პროცესი გასაფილტრად, ხოლო როცა შიგთავსის შეზღუდვა ითხოვს ჩანაცვლდეს CSS/JS, ამას თავად ბრაუზერი უზრუნველყოფს საიმედო გზით, ნაცვლად გაფართოებისა. აქედან გამომდინარე, uBOL თავად არ მოიხმარს პროცესორს/მეხსიერებას შიგთავსის შეზღუდვისს -- uBOL საჭიროებს შუამავალ მომსახურე პროცეს _მხოლოდ_ მაშინ, როცა ამომხტომ არესთან ურთიერთქმედებთ ან ცვლით პარამეტრებს.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. ಇದರರ್ಥ ವಿಷಯ ನಿರ್ಬಂಧಿಸುವಿಕೆಯು ನಡೆಯುತ್ತಿರುವಾಗ uBOL ಸ್ವತಃ CPU/ಮೆಮೊರಿ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಳಸುವುದಿಲ್ಲ -- ನೀವು ಪಾಪ್ಅಪ್ ಪ್ಯಾನೆಲ್ ಅಥವಾ ಆಯ್ಕೆಯ ಪುಟಗಳೊಂದಿಗೆ ಸಂವಹನ ನಡೆಸಿದಾಗ uBOL ನ ಸೇವಾ ವರ್ಕರ್ ಪ್ರಕ್ರಿಯೆಯು _ಮಾತ್ರಾ_ ಅಗತ್ಯವಿದೆ.
uBOL ಗೆ ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ವಿಶಾಲವಾದ "ಡೇಟಾವನ್ನು ಓದಲು ಮತ್ತು ಮಾರ್ಪಡಿಸಲು" ಅನುಮತಿಯ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ uBlock ಮೂಲಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಅದರ ಸೀಮಿತ ಸಾಮರ್ಥ್ಯಗಳು ಅಥವಾ ಅನುಸ್ಥಾಪನೆಯ ಸಮಯದಲ್ಲಿ ವಿಶಾಲವಾದ "ಡೇಟಾವನ್ನು ಓದಲು ಮತ್ತು ಮಾರ್ಪಡಿಸಲು" ಅನುಮತಿಗಳ ಅಗತ್ಯವಿರುವ ಇತರ ವಿಷಯ ಬ್ಲಾಕರ್‌ಗಳಿಗೆ ಹೋಲಿಸಿದರೆ.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. ನೀವು ಆಪ್ಟಿಮಲ್ ಅಥವಾ ಕಂಪ್ಲೀಟ್ ಮೋಡ್ ಅನ್ನು ಡಿಫಾಲ್ಟ್ ಆಗಿ ಆರಿಸಿದರೆ, ಎಲ್ಲಾ ವೆಬ್‌ಸೈಟ್‌ಗಳಲ್ಲಿನ ಡೇಟಾವನ್ನು ಓದಲು ಮತ್ತು ಮಾರ್ಪಡಿಸಲು ನೀವು uBOL ಗೆ ಅನುಮತಿಯನ್ನು ನೀಡಬೇಕಾಗುತ್ತದೆ.
ಈ ಅಂತಿಮ ಗುರಿಗಳೊಂದಿಗೆ ಇದು ಇನ್ನೂ ಪ್ರಗತಿಯಲ್ಲಿದೆ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite(uBOL)는 *적은 권한을 요구하는* MV3 기반 콘텐츠 차단기입니다.
uBO Lite (uBOL)는 MV3 기반 콘텐츠 차단기입니다.
기본 규칙 목록은 uBlock Origin의 기본 필터 목록과 대응됩니다.
@@ -7,24 +7,6 @@ uBO Lite(uBOL)는 *적은 권한을 요구하는* MV3 기반 콘텐츠 차단기
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
설정 페이지에서 규칙 목록을 더 활성화할 수 있습니다. 팝업 창의 _Cogs_ 아이콘을 누르세요.
uBOL은 완전히 선언적이라 필터링 중 영구적으로 실행되는 uBOL 프로세스를 필요로 하지 않으며, CSS/JS 주입 기반 콘텐츠 필터링이 확장 프로그램이 아닌 브라우저 자체에서 더욱 안정적으로 동작합니다. 즉 uBOL 자체는 콘텐츠 차단을 하는 동안 CPU/메모리 리소스를 소비하지 않습니다. uBOL 서비스워커 프로세스는 사용자가 팝업 창이나 설정을 열었을 _때에만_ 동작합니다.
uBOL은 설치 시 광범위한 "읽기 및 수정" 권한을 요구하지 않으므로, 설치 후 즉시 쓸 수 있는 기능들은 uBlock Origin이나 설치 시 광범위한 "읽기 및 수정" 권한을 요구하는 다른 콘텐츠 차단기에 비해 제한됩니다.
하지만 uBOL에서는 원하는 특정 사이트에 대해 확장된 권한을 부여하여, 해당 사이트를 표면 필터링 및 스크립트 주입을 바탕으로 더욱 잘 필터링할 수 있습니다.
주어진 사이트에 확장된 권한을 부여하려면, 팝업 창을 열고 필터링 모드를 '최적'이나 '완전'과 같이 더 높은 수준으로 선택하세요.
브라우저는 확장 프로그램에 현재 사이트에 대한 추가 권한을 부여했을 때 발생할 수 있는 일에 대해 경고할 것이며, 권한 요청을 수락할지 거부할지 선택해야 합니다.
현재 사이트에 대해 uBOL에 추가 권한을 부여하면, 해당 사이트의 콘텐츠를 더욱 잘 필터링할 수 있습니다.
uBOL 설정 페이지에서 기본 필터링 모드를 설정할 수 있습니다. 기본 모드를 '최적' 혹은 '완전'으로 설정하는 경우, uBOL에 모든 웹사이트에서 데이터를 읽고 수정할 수 있는 권한을 부여해야 합니다.
본 확장 프로그램은 여전히 아래 목표를 달성하기 위해 개발 중인 단계입니다.
- 설치 시 광범위한 호스트 권한을 요구하지 않고, 사용자가 사이트마다 명시적으로 확장된 권한을 부여할 수 있도록 합니다.
- 완전히 선언적으로 구현하여 CPU/메모리 효율성과 신뢰성을 확보합니다.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) ir *bezatļauju* uz MV3 balstīts satura aizturētājs.
uBO Lite (uBOL) uz MV3 balstīts satura aizturētājs.
Noklusējuma nosacījumu kopa atbilst uBokc Origin noklusējuma aizturēšanas kopai:
Noklusējuma nosacījumu kopa atbilst uBock Origin noklusējuma aizturēšanas kopai:
- uBlock Origin iebūvētie aizturēšanas saraksti
- EasyList
- EasyPrivacy
- Pētera Lova (Peter Lowe) reklāmu un izsakošanas serveru saraksts
- Pētera Lova (Peter Lowe) reklāmu un izsekošanas serveru saraksts
Vairāk nosacījumu kopu var iespējot iestatījumu sadaļā -- jāklikšķina _Zobratu_ ikona uznirstošajā logā.
uBOL ir pilnībā vispārīgs, kas nozīmē, ka nav nepieciešamības pēc pastāvīga uBOL procesa, lai notiktu aizturēšana, un uz CSS/JS ievietošanu balstīta satura aizturēšanu uzticami veic pārlūks, nevis paplašinājums. Tas nozīmē, ka uBOL pats par sevi neizmanto procesoru un atmiņu, kamēr satura aizturēšana ir notiekoša -- uBOL pakalpojuma strādņa process ir nepieciešams _tikai_ tad, kad notiek mijiedarbība ar uznirstošo logu vai iestatījumu sadaļām.
uBOL nav nepieciešamas plašas "lasīt un pārveidot datus" atļaujas uzstādīšanas laikā, tāpēc tam ir ierobežotas spējas pēc noklusējuma, salīdzinājumā ar uBlock Origin vai citiem satura aizturētājiem, kas pieprasa plašas "lasīt un pārveidot datus" atļaujas uzstādīšanas laikā.
Tomēr uBOL ļauj piešķirt paplašinātās atļaujas *tieši* noteiktās vietnēs pēc izvēles, lai tas varētu labāk veikt aizturēšanu tajās, izmantojot kosmētisku aizturēšanu un skriptu ievietošanu.
Lai nodrošinātu paplašinātas piekļuves tiesības noteiktā vietnē, jāatver uznirstošais logs un jāizvēlas striktāks aizturēšanas veids, kā, piemēram, "Labākais" vai "Pilnīgais".
Pārlūks tad brīdinās ietekmi, ko radīs paplašinājuma pieprasīto papildu atļauju nodrošināšana pašreizējā vietnē, un būs jānorāda, vai pieprasījums tiek apstiprināts vai noraidīts.
Ja pašreizējā vietnē tiek apstiprināts uBOL papildu atļauju pieprasījums, paplašinājums varēs labāk veikt satura aizturēšanu.
Noklusējuma aizturēšanas veids ir norādāms uBOL uzstādījumu lapā. Ja tiek izvēlēts "Labākais" vai "Pilnīgais" kā noklusējuma, tad būs nepieciešams nodrošināt uBOL tiesības rakstīt un pārveidot datus visās tīmekļa vietnēs.
Jāpatur prātā, ka šī iespēja joprojām tiek izstrādāta ar šādiem mērķiem:
- Nav plašu saimniekdatora atļauju uzstādīšanas laikā -- paplašinātas atļaujas nodrošina lietotājs atsevišķi katrai vietnei.
- Pilnībā vispārīgs - uzticamībai un procesora/atmiņas lietderīgai izmantošanai.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
Стандардниот сет на правила одговара на стандардниот филтер сет на uBlock Origin:
- uBlock Origin's built-in filter lists
- Вградени филтер листи на uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- Листа на реклами и следачи на Peter Lowe
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Можете да овозможите повеќе сетови на правила посетувајќи ја страницата со опции - кликнете на иконата _запчаник_ во попап панел.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL е целосно декларативен, што значи дека не е потребен траен процес на uBOL за филтрирање да се одвива, а филтрирањето на содржини врз основа на инјекција на CSS/JS се извршува со сигурност од самото браузер, а не од самата екстензија. Ова значи дека самиот uBOL не консумира ресурси на CPU/меморија додека блокирањето на содржини е во тек - процесот на службениот работник на uBOL е потребен _само_ кога ќе е потребен со попап панел или страниците со опции.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) ഒരു *അനുമതി-കുറവ്* MV3 അടിസ്ഥാനമാക്കിയുള്ള ഉള്ളടക്ക ബ്ലോക്കറാണ്.
uBO Lite (uBOL) is an MV3-based content blocker.
ഡിഫോൾട്ട് റൂൾസെറ്റ് uBlock Origin-ന്റെ ഡിഫോൾട്ട് ഫിൽട്ടർസെറ്റുമായി യോജിക്കുന്നു:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) ഒരു *അനുമതി-കുറവ്* MV3 അടിസ
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL പൂർണ്ണമായും ഡിക്ലറേറ്റീവ് ആണ്, അതായത് ഫിൽട്ടറിംഗ് സംഭവിക്കുന്നതിന് ഒരു സ്ഥിരമായ uBOL പ്രക്രിയയുടെ ആവശ്യമില്ല, കൂടാതെ CSS/JS ഇഞ്ചക്ഷൻ അടിസ്ഥാനമാക്കിയുള്ള ഉള്ളടക്ക ഫിൽട്ടറിംഗ്, എക്സ്റ്റൻഷനേക്കാൾ വിശ്വസനീയമായി ബ്രൗസർ തന്നെ നിർവഹിക്കുന്നു. ഉള്ളടക്കം തടയൽ നടന്നുകൊണ്ടിരിക്കുമ്പോൾ uBOL തന്നെ CPU/മെമ്മറി ഉറവിടങ്ങൾ ഉപയോഗിക്കില്ല എന്നാണ് ഇതിനർത്ഥം -- നിങ്ങൾ പോപ്പ്അപ്പ് പാനലുമായോ ഓപ്‌ഷൻ പേജുകളുമായോ സംവദിക്കുമ്പോൾ _only_ uBOL-ന്റെ സേവന വർക്കർ പ്രോസസ്സ് ആവശ്യമാണ്.
ഇൻസ്റ്റാളേഷൻ സമയത്ത് uBOL ന് വിശാലമായ "ഡാറ്റ വായിക്കാനും പരിഷ്‌ക്കരിക്കാനും" അനുമതി ആവശ്യമില്ല, അതിനാൽ uBlock ഒറിജിൻ അല്ലെങ്കിൽ മറ്റ് ഉള്ളടക്ക ബ്ലോക്കറുകൾ എന്നിവയുമായി താരതമ്യപ്പെടുത്തുമ്പോൾ അതിന്റെ പരിമിതമായ കഴിവുകൾ ഇൻസ്റ്റാളേഷൻ സമയത്ത് വിശാലമായ "ഡാറ്റ വായിക്കാനും പരിഷ്‌ക്കരിക്കാനും" അനുമതികൾ ആവശ്യമാണ്.
എന്നിരുന്നാലും, നിങ്ങൾ തിരഞ്ഞെടുക്കുന്ന നിർദ്ദിഷ്ട സൈറ്റുകളിൽ വിപുലീകൃത അനുമതികൾ *വ്യക്തമായി* നൽകാൻ uBOL നിങ്ങളെ അനുവദിക്കുന്നു, അതുവഴി കോസ്മെറ്റിക് ഫിൽട്ടറിംഗും സ്ക്രിപ്റ്റ്ലെറ്റ് കുത്തിവയ്പ്പുകളും ഉപയോഗിച്ച് ആ സൈറ്റുകളിൽ മികച്ച രീതിയിൽ ഫിൽട്ടർ ചെയ്യാൻ കഴിയും.
തന്നിരിക്കുന്ന സൈറ്റിൽ വിപുലമായ അനുമതികൾ നൽകുന്നതിന്, പോപ്പ്അപ്പ് പാനൽ തുറന്ന് ഒപ്റ്റിമൽ അല്ലെങ്കിൽ കംപ്ലീറ്റ് പോലുള്ള ഉയർന്ന ഫിൽട്ടറിംഗ് മോഡ് തിരഞ്ഞെടുക്കുക.
നിലവിലെ സൈറ്റിൽ വിപുലീകരണം അഭ്യർത്ഥിച്ച അധിക അനുമതികൾ നൽകുന്നതിന്റെ ഫലങ്ങളെക്കുറിച്ച് ബ്രൗസർ നിങ്ങൾക്ക് മുന്നറിയിപ്പ് നൽകും, നിങ്ങൾ അഭ്യർത്ഥന സ്വീകരിക്കുകയോ നിരസിക്കുകയോ ചെയ്യണോ എന്ന് നിങ്ങൾ ബ്രൗസറിനോട് പറയേണ്ടിവരും.
നിലവിലെ സൈറ്റിൽ കൂടുതൽ അനുമതികൾക്കായുള്ള uBOL-ന്റെ അഭ്യർത്ഥന നിങ്ങൾ അംഗീകരിക്കുകയാണെങ്കിൽ, നിലവിലെ സൈറ്റിനായി മികച്ച ഉള്ളടക്കം ഫിൽട്ടർ ചെയ്യാൻ അതിന് കഴിയും.
uBOL-ന്റെ ഓപ്‌ഷൻ പേജിൽ നിന്ന് നിങ്ങൾക്ക് ഡിഫോൾട്ട് ഫിൽട്ടറിംഗ് മോഡ് സജ്ജമാക്കാൻ കഴിയും. ഒപ്റ്റിമൽ അല്ലെങ്കിൽ കംപ്ലീറ്റ് മോഡ് ഡിഫോൾട്ടായി നിങ്ങൾ തിരഞ്ഞെടുക്കുകയാണെങ്കിൽ, എല്ലാ വെബ്‌സൈറ്റുകളിലെയും ഡാറ്റ വായിക്കാനും പരിഷ്‌ക്കരിക്കാനും നിങ്ങൾ uBOL-ന് അനുമതി നൽകേണ്ടതുണ്ട്.
ഈ അന്തിമ ലക്ഷ്യങ്ങളോടെ ഇത് ഇപ്പോഴും പുരോഗമിക്കുന്ന ഒരു ജോലിയാണെന്ന് ഓർമ്മിക്കുക:
- ഇൻസ്റ്റാളേഷൻ സമയത്ത് ബ്രോഡ് ഹോസ്റ്റ് അനുമതികളൊന്നുമില്ല -- ഓരോ സൈറ്റിന്റെ അടിസ്ഥാനത്തിൽ വിപുലീകൃത അനുമതികൾ ഉപയോക്താവ് വ്യക്തമായി നൽകുന്നു.
- വിശ്വാസ്യതയ്ക്കും സിപിയു/മെമ്മറി കാര്യക്ഷമതയ്ക്കും പൂർണ്ണമായും പ്രഖ്യാപനം.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) हे MV3-आधारित कंटेंट ब्लॉकर आहे.
The default ruleset corresponds to uBlock Origin's default filterset:
डीफॉल्ट नियमसंच uBlock Origin च्या डीफॉल्ट फिल्टरसेटशी संबंधित आहे:
- uBlock Origin's built-in filter lists
- uBlock Origin च्या बिल्ट-इन फिल्टर लिस्ट
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- पीटर लोवची जाहिरात आणि ट्रॅकिंग सर्व्हर यादी
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
तुम्ही पर्याय पृष्ठाला भेट देऊन अधिक नियम संच सक्षम करू शकता -- पॉपअप पॅनेलमधील _Cogs_ चिन्हावर क्लिक करा.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL पूर्णपणे घोषणात्मक आहे, म्हणजे फिल्टरिंगसाठी कायमस्वरूपी uBOL प्रक्रियेची गरज नाही, आणि CSS/JS इंजेक्शनवर आधारित सामग्री फिल्टरिंग ब्राउझरच्याच मदतीने विश्वासार्हपणे होते, विस्ताराद्वारे नव्हे. याचा अर्थ असा की सामग्री ब्लॉकिंग चालू असताना uBOL स्वतः CPU/मेमरी संसाधने वापरत नाही — uBOL चा सर्व्हिस वर्कर प्रोसेस फक्त तेव्हाच लागतो जेव्हा तुम्ही पॉपअप पॅनल किंवा पर्याय पृष्ठांशी संवाद साधता.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) ialah penyekat kandungan berasaskan MV3.
uBO Lite (uBOL) is an MV3-based content blocker.
Set peraturan lalai sepadan dengan set penapis lalai uBlock Origin:
@@ -10,21 +10,3 @@ Set peraturan lalai sepadan dengan set penapis lalai uBlock Origin:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL adalah deklaratif sepenuhnya, bermakna tidak ada keperluan untuk proses uBOL kekal untuk penapisan berlaku, dan penapisan kandungan berasaskan suntikan CSS/JS dilakukan sepenuhnya oleh penyemak imbas itu sendiri dan bukannya oleh sambungan. Ini bermakna uBOL sendiri tidak menggunakan sumber CPU/memori semasa penyekatan kandungan sedang berjalan -- proses pekerja perkhidmatan uBOL diperlukan _hanya_ apabila anda berinteraksi dengan panel timbul atau halaman pilihan.
uBOL tidak memerlukan kebenaran "baca dan ubah suai data" yang luas pada masa pemasangan, oleh itu keupayaan terhadnya di luar kotak berbanding dengan uBlock Origin atau penyekat kandungan lain yang memerlukan kebenaran "baca dan ubah suai data" yang luas pada masa pemasangan.
Walau bagaimanapun, uBOL membenarkan anda *dengan jelas* memberikan kebenaran lanjutan pada tapak tertentu pilihan anda supaya ia boleh menapis dengan lebih baik pada tapak tersebut menggunakan penapisan kosmetik dan suntikan skrip.
Untuk memberikan kebenaran lanjutan pada tapak tertentu, buka panel timbul dan pilih mod penapisan yang lebih tinggi seperti Optimum atau Lengkap.
Penyemak imbas kemudian akan memberi amaran kepada anda tentang kesan pemberian kebenaran tambahan yang diminta oleh sambungan pada tapak semasa dan anda perlu memberitahu penyemak imbas sama ada anda menerima atau menolak permintaan tersebut.
Jika anda menerima permintaan uBOL untuk mendapatkan kebenaran tambahan pada tapak semasa, ia akan dapat menapis kandungan dengan lebih baik untuk tapak semasa.
Anda boleh menetapkan mod penapisan lalai dari halaman pilihan 'uBOL'. Jika anda memilih mod Optimum atau Lengkap sebagai mod lalai, anda perlu memberikan uBOL kebenaran untuk membaca dan mengubah suai data pada semua tapak web.
Perlu diingat bahawa ini masih dalam proses, dengan matlamat akhir ini:
- Tiada kebenaran hos pada masa pemasangan -- kebenaran lanjutan diberikan secara eksplisit oleh pengguna pada asas setiap tapak.
- Deklaratif sepenuhnya untuk kebolehpercayaan dan kecekapan CPU/memori.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) er en *tillatelses-begrenset* MV3-basert innholdsblokkerer.
uBO Lite (uBOL) er en MV3-basert innholdsblokkerer.
Standardregelsettet tilsvarer standardfiltersettet til uBlock Origin:
@@ -7,24 +7,6 @@ Standardregelsettet tilsvarer standardfiltersettet til uBlock Origin:
- EasyPrivacy
- Peter Lowes Ad and tracking server list
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Du kan legge til flere regelsett ved å gå til innstillingssiden -- klikk _Tannhjul_-ikonet i oppsprettspanelet.
uBOL er fullstendig deklarativ, noe som betyr at det ikke er behov for en permanent uBOL-prosess for at filtreringen skal skje, og CSS/JS-injeksjonsbasert innholdsfiltrering utføres pålitelig av nettleseren selv i stedet for av utvidelsen. Dette betyr at uBOL selv ikke bruker CPU/minneressurser mens innholdsblokkering pågår -- uBOL's service worker-prosess kreves _bare_ når du samhandler med oppsprettspanelet eller innstillingssidene.
uBOL krever ikke bred "lese og endre data"-tillatelse under installasjonen, derav begrensede muligheter i utgangspunktet sammenlignet med uBlock Origin eller andre innholdsblokkerere som krever bred "lese og endre data"-tillatelse under installasjonen.
Men, uBOL lar deg *uttrykkelig* gi utvidede tillatelser på bestemte nettsteder du velger, slik at uBOL bedre kan filtrere på disse nettstedene ved bruk av kosmetisk filtrering og skriptlet-injeksjoner.
For å gi utvidede tillatelser på et gitt nettsted, åpne oppsprettspanelet og velg en høyere filtreringsmodus som Optimal eller Fullstendig.
Nettleseren vil da advare deg om effektene av å gi de ekstra tillatelsene som utvidelsen ber om på det gjeldende nettstedet, og du må fortelle nettleseren om du godtar eller avslår forespørselen.
Hvis du godtar forespørselen fra uBOL om ekstra tillatelser på det gjeldende nettstedet, vil uBOL være i stand til å filtrere innhold bedre for det gjeldende nettstedet.
Du kan angi standard filtreringsmodus fra innstillingssiden i uBOL. Hvis du velger Optimal eller Fullstendig modus som standard, må du gi uBOL tillatelsen til å lese og endre data på alle nettsteder.
Husk at dette fortsatt er et arbeid som pågår, med disse sluttmålene:
- Ingen brede vertstillatelser under installasjonen -- utvidede tillatelser gis uttrykkelig av brukeren på per-side-basis.
- Helt deklarativt for pålitelighet og CPU/minneeffektivitet.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is een *toestemmingsloze* MV3-gebaseerde inhoudsblokkeerder.
uBO Lite (uBOL) is een op MV3 gebaseerde inhoudsblokkeerder.
De standaard regelset komt overeen met de standaard filterset van uBlock Origin:
@@ -10,21 +10,3 @@ De standaard regelset komt overeen met de standaard filterset van uBlock Origin:
U kunt meer regelsets inschakelen door de optiespagina te bezoeken -- klik hiervoor op het _tandwielpictogram_ in het pop-uppaneel.
uBOL is volledig declaratief, wat betekent dat er geen permanent uBOL-proces voor de filtering nodig is, en inhoudsfiltering op basis van CSS/JS-injectie op een betrouwbare manier door de browser zelf wordt uitgevoerd in plaats van door de extensie. Dit betekent dat uBOL zelf geen CPU-/geheugenbronnen gebruikt terwijl inhoudsblokkering actief is -- het serviceworker-proces van uBOL is _alleen_ vereist als u met het pop-uppaneel of de optiespaginas werkt.
uBOL vereist geen brede toestemming voor het lezen en aanpassen van gegevens tijdens installatie, vandaar de beperkte ingebouwde mogelijkheden ervan in vergelijking met uBlock Origin of andere inhoudsblokkeerders die brede toestemmingen voor het lezen en aanpassen van gegevens vereisen tijdens installatie.
U kunt in uBOL echter *expliciet* uitgebreide toestemmingen verlenen op bepaalde websites van uw keuze, zodat het op die websites beter kan filteren via cosmetische filtering en scriptlet-injecties.
Om uitgebreide toestemmingen op een bepaalde website te verlenen, opent u het pop-uppaneel en kiest u een hogere filtermodus, zoals Optimaal of Volledig.
De browser waarschuwt u dan over de gevolgen van het verlenen van de door de extensie aangevraagde aanvullende toestemmingen op de huidige website, en u dient de browser te laten weten of u de aanvraag accepteert of weigert.
Als u de aanvraag van uBOL voor aanvullende toestemmingen op de huidige website accepteert, zal het inhoud voor de huidige website beter kunnen filteren.
U kunt de standaard filtermodus instellen vanaf de optiespagina van uBOL. Als u de modus Optimaal of Volledig als de standaardmodus kiest, dient u uBOL de toestemming voor het lezen en aanpassen van gegevens op alle websites te verlenen.
Onthoud dat dit nog werk in uitvoering is, met deze einddoelen:
- Geen brede host-toestemmingen tijdens installatie -- uitgebreide toestemmingen worden expliciet en per website verleend door de gebruiker.
- Volledig declaratief omwille van betrouwbaarheid en CPU-/geheugenefficiëntie.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) is an MV3-based content blocker.
The default ruleset corresponds to uBlock Origin's default filterset:
@@ -10,21 +10,3 @@ The default ruleset corresponds to uBlock Origin's default filterset:
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) ਇੱਕ *ਬਿਨਾਂ ਇਜਾਜ਼ਤਾਂ* ਵਾਲਾ MV3-ਅਧਾਰਿਤ ਸਮੱਗਰੀ ਬਲਾਕਰ ਹੈ।
uBO Lite (uBOL) is an MV3-based content blocker.
ਮੂਲ ਨਿਯਮ-ਸਮੂਹ uBlock Origin ਦੇ ਮੂਲ ਫਿਲਟਰ-ਸਮੂਹ ਨਾਲ ਸੰਬੰਧਿਤ ਹੈ:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) ਇੱਕ *ਬਿਨਾਂ ਇਜਾਜ਼ਤਾਂ* ਵਾਲਾ M
ਤੁਸੀਂ ਚੋਣਾਂ ਸਫ਼ੇ ਨੂੰ ਖੋਲ੍ਹ ਕੇ ਹੋਰ ਰੂਲ-ਸੈੱਟ ਸਮਰੱਥ ਕਰ ਕਦੇ ਹੋ -- ਪੌਪ-ਅੱਪ ਪੈਨਲ ਵਿੱਚ _Cogs_ icon ਨੂੰ ਕਲਿੱਕ ਕਰੋ।
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
ਜੇ ਤੁਸੀਂ ਮੌਜੂਦਾ ਸਾਈਟਾਂ ਉੱਤੇ ਹੋਰ ਇਜਾਜਤਾਂ ਲਈ uBOL ਦੀ ਬੇਨਤੀ ਨੂੰ ਮਨਜ਼ੂਰ ਕੀਤਾ ਤਾਂ ਇਹ ਮੌਜੂਦਾ ਸਾਈਟ ਬਾਰੇ ਵਧੀਆ ਫਿਲਟਰ ਸਮੱਗਰੀ ਨੂੰ ਸਮਰੱਥ ਕਰੇਗੀ।
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
ਯਾਦ ਰੱਖੋ ਕਿ ਇਹ ਕੰਮ ਹਾਲੇ ਵੀ ਜਾਰੀ ਹੈ, ਜਿਸ ਦੇ ਟੀਚੇ ਇਹ ਹਨ:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) to *niewymagający uprawnień* bloker treści oparty na MV3.
uBO Lite (uBOL) to bloker treści oparty na MV3.
Domyślny zestaw reguł odpowiada domyślnemu zestawowi filtrów uBlock Origin:
@@ -10,21 +10,3 @@ Domyślny zestaw reguł odpowiada domyślnemu zestawowi filtrów uBlock Origin:
Możesz włączyć więcej zestawów reguł, odwiedzając stronę opcji kliknij ikonę _koła zębatego_ w wyskakującym panelu.
uBOL jest całkowicie deklaratywny, co oznacza, że nie jest potrzebny stały proces uBOL w celu filtrowania, a filtrowanie treści oparte na wstrzykiwaniu CSS/JS jest wykonywane niezawodnie przez samą przeglądarkę, a nie przez rozszerzenie. Oznacza to, że sam uBOL nie zużywa zasobów procesora/pamięci, gdy trwa blokowanie treści proces Service Worker uBOL jest wymagany _tylko_ podczas interakcji z panelem wyskakującym lub stronami opcji.
uBOL w trakcie instalacji nie wymaga szerokich uprawnień do „odczytu i modyfikacji danych”, stąd jego ograniczone możliwości w porównaniu z uBlock Origin lub innymi blokerami treści, które w czasie instalacji wymagają szerokich uprawnień do „odczytu i modyfikacji danych”.
Jednakże uBOL umożliwia *jawnie* udzielanie rozszerzonych uprawnień na określonych wybranych witrynach, dzięki czemu może lepiej filtrować te witryny za pomocą filtrowania kosmetycznego i wstrzykiwania skryptletów.
Aby przyznać rozszerzone uprawnienia na danej witrynie, otwórz panel wyskakujący i wybierz wyższy tryb filtrowania, taki jak Optymalny lub Kompletny.
Przeglądarka wyświetli ostrzeżenie o skutkach przyznania dodatkowych uprawnień wymaganych przez rozszerzenie na bieżącej witrynie i będziesz musiał poinformować przeglądarkę, czy akceptujesz, czy odrzucasz żądanie.
Jeśli zaakceptujesz żądanie uBOL o dodatkowe uprawnienia na bieżącej witrynie, będzie on w stanie lepiej filtrować zawartość bieżącej witryny.
Możesz ustawić domyślny tryb filtrowania na stronie opcji uBOL. Jeśli tryb Optymalny lub Pełny zostanie wybrany jako domyślny, trzeba będzie przyznać uBOL uprawnienia do odczytu i modyfikacji danych na wszystkich stronach internetowych.
Należy pamiętać, że nadal trwają prace z następującymi celami końcowymi:
Brak szerokich uprawnień hosta w czasie instalacji rozszerzone uprawnienia są przyznawane jawnie przez użytkownika na podstawie poszczególnych witryn.
Całkowicie deklaratywna niezawodność i wydajność procesora/pamięci.

View File

@@ -1,30 +1,12 @@
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado no MV3 com menor permissão.
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado no MV3.
O conjunto de regras padrão corresponde ao conjunto de filtros padrão do uBlock Origin:
- Listas embutidas dos filtros do uBlock Origin
- EasyList
- EasyPrivacy
- Lista de servidores de anúncios e rastreadores do Peter Lowe
- Lista de servidores de anúncios e rastreamento por Peter Lowe
Você pode ativar mais conjuntos de regras visitando a página das opções — clique no ícone da _Engranagem_ no painel do popup.
Você pode ativar mais conjuntos de regras visitando a página de opções — clique no ícone da _Engranagem_ no painel do pop-up.
O uBOL é totalmente declarativo, significando que não há necessidade de um processo permanente do uBOL para a filtragem ocorrer e a filtragem de conteúdo baseada em injeção do CSS/JS é realizada confiavelmente pelo próprio navegador ao invés da extensão. Isto significa que o próprio uBOL não consome recursos de CPU/memória enquanto o bloqueio de conteúdo está em andamento -- o processo do service worker do uBOL _só_ é necessário quando você interage com o painel do pop-up ou as páginas das opções.
O uBOL não requer permissão ampla pra "ler e modificar dados" na hora da instalação, logo suas capacidades limitadas fora da caixa comparadas com o uBlock Origin ou outros bloqueadores de conteúdo requerem permissões amplas pra "ler e modificar dados" na hora da instalação.
Contudo, o uBOL permite a você garantir *explicitamente* permissões estendidas em sites específicos de sua escolha pra que possa filtrar melhor esses sites usando filtragem cosmética e injeções de scriptlet.
Pra conceder permissões estendidas num site dado, abra o painel do pop-up e escolha um modo de filtragem superior tal como Otimizado ou Completo.
O navegador então avisará você sobre os efeitos de garantir as permissões adicionais requisitadas pela extensão no site atual e você terá que dizer ao navegador se você aceita ou recusa a requisição.
Se você aceitar a requisição do uBOL por permissões adicionais no site atual ele será capaz de filtrar melhor o conteúdo do site atual.
Você pode definir o modo de filtragem padrão na página de opções do uBOL. Se você escolher o Modo Otimizado ou Completo como o modo padrão você precisará garantir ao uBOL a permissão de ler e modificar os dados em todos os sites.
Mantenha em mente que este ainda é um trabalho em progresso com estes objetivos finais:
- Sem permissões amplas do hospedeiro na hora da instalação -- as permissões estendidas são garantidas explicitamente pelo usuário numa base por site.
- Totalmente declarativo para confiabilidade e eficiência de CPU/memória.
O uBOL é totalmente declarativo, significando que não há necessidade de um processo permanente do uBOL para a filtragem ocorrer, e filtragem de conteúdo baseada em injeção de CSS/JS é realizada corretamente pelo próprio navegador ao invés da extensão. Isto significa que o uBOL em si não consome recursos de CPU/memória ao bloquear conteúdo -- o processo do service worker do uBOL _só_ é necessário quando você interage com o painel do pop-up ou as páginas de opções.

View File

@@ -1,30 +1,12 @@
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado no MV3 *sem permissões*.
O uBO Lite (uBOL) é um bloqueador de conteúdo baseado em MV3.
O conjunto de regras padrão corresponde ao conjunto de filtros padrão do uBlock Origin:
O conjunto de regras predefinido corresponde ao conjunto de filtros predefinido do uBlock Origin:
- Listas de filtros integrados do uBlock Origin
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
Pode ativar mais conjuntos de regras visitando a página de opções -- clique no ícone _Cogs_ na janela flutuante.
Pode ativar mais conjuntos de regras visitando a página de opções -- clique no ícone _Cogs_ no painel popup.
O uBOL é totalmente declarativo, o que elimina a necessidade de um processo ativo constante para a filtragem ocorrer. A injeção de CSS e JS para filtragem de conteúdo é efetuada de maneira confiável pelo navegador, não dependendo da extensão. Isso significa que o uBOL por si só não gasta recursos de CPU/memória enquanto o bloqueio de conteúdo está a acontecer -- o processo do trabalhador de serviço do uBOL é necessário apenas quando se interage com a janela flutuante ou as páginas de opções.
uBOL não requer ampla permissão de "ler e modificar dados" no momento da instalação, daí as suas capacidades limitadas de pronto a usar em comparação com uBlock Origin ou outros bloqueadores de conteúdo que requerem amplas permissões de "ler e modificar dados" no momento da instalação.
No entanto, o uBOL permite-lhe que *explicitamente* conceda permissões alargadas em websites específicos de sua escolha, para que possa filtrar melhor esses websites usando filtragem cosmética e injeções de scriptlet.
Para conceder permissões alargadas num determinado sítio web, abra a janela flutuante e escolha um modo de filtragem superior, como 'Ideal' ou 'Completo'.
O navegador irá avisá-lo sobre os efeitos da concessão das permissões adicionais solicitadas pela extensão no site atual, e terá que informar ao navegador se aceita ou recusa o pedido.
Se aceitar o pedido do uBOL para permissões adicionais no site atual, o mesmo poderá filtrar melhor o conteúdo do site atual.
Pode definir o modo de filtragem padrão na página de opções do uBOL. Se escolher o modo Ideal ou Completo como o modo predefinido, terá de conceder ao uBOL a permissão para ler e modificar dados em todos os sítios web.
Tenha em mente que este ainda é um trabalho em curso, com estes objetivos finais:
- Sem permissões amplas de anfitrião no momento da instalação -- permissões estendidas são concedidas explicitamente pelo utilizador numa base por site.
- Totalmente declarativo para fiabilidade e eficiência de CPU/memória
O uBOL é totalmente declarativo, o que significa que não é necessário um processo permanente do uBOL para que a filtragem ocorra, e a filtragem de conteúdos baseada em injeção de CSS/JS é realizada de forma fiável pelo próprio navegador, e não pela extensão. Isto significa que o próprio uBOL não consome recursos de CPU/memória enquanto o bloqueio de conteúdo está ativo -- o processo do service worker do uBOL é necessário apenas quando interage com o painel popup ou com as páginas de opções.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) este blocant de conținut experimental *fără permisiuni* bazat pe MV3.
uBO Lite (uBOL) este un blocker de conținut bazat pe MV3.
Setul de reguli implicit corespunde setului de filtre implicit al uBlock Origin:
Listele de filtre încorporate de uBlock Origin
- EasyList
- EasyPrivacy
- Oglas Peter Lowe i lista servera za praćenje
- -Lista de servere de anunț și de urmărire a lui Peter Lowe
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
Puteți activa mai multe seturi de reguli accesând pagina de opțiuni - faceți clic pe pictograma _Cogs_ din panoul pop-up.
uBOL este în întregime declarativ, ceea ce înseamnă că nu este nevoie de un proces uBOL permanent pentru ca filtrarea să aibă loc, iar filtrarea conținutului pe bază de injecție CSS/JS este realizată în mod sigur de browser în sine, mai degrabă decât de extensie. Aceasta înseamnă că uBOL în sine nu consumă resurse CPU/memorie în timp ce blocarea conținutului este în desfășurare -- procesul de lucru al serviciului uBOL este necesar _doar_ atunci când interacționați cu panoul pop-up sau cu paginile de opțiuni.
uBOL nu necesită permisiunii extinse de „citire și modificare a datelor” în momentul instalării, astfel capacitățile sale limitate din momentul instalării în comparație cu uBlock Origin sau alte blocare de conținut necesită permisiuni largi de „citire și modificare a datelor” în momentul instalării.
Cu toate acestea, uBOL vă permite să acordați *explicit* permisiuni extinse pe anumite site-uri alese de dvs., astfel încât să poată filtra mai bine pe acele site-uri folosind filtrarea cosmetică și injecțiile de scriptlet.
Pentru a acorda permisiuni extinse pe un anumit site, deschideți panoul pop-up și alegeți un mod de filtrare mai ridicat, cum ar fi Optimal sau Complet.
Browser-ul vă va avertiza apoi cu privire la efectele acordării permisiunilor suplimentare solicitate de extensie pe site-ul curent și va trebui să-i precizați browserului dacă acceptați sau refuzați cererea.
Dacă acceptați solicitarea uBOL pentru permisiuni suplimentare pe site-ul curent, acesta va putea filtra mai bine conținutul pentru site-ul curent.
Puteți seta modul implicit de filtrare din pagina de opțiuni a uBOL. Dacă alegeți modul optim sau complet ca implicit, va trebui să acordați lui uBOL permisiunea de a citi și modifica datele de pe toate site-urile web.
Rețineți că aceasta este în curs de desfășurare, cu aceste obiective finale:
- Fără permisiuni de gazdă largi în momentul instalării - permisiunile extinse sunt acordate în mod explicit de către utilizator pe bază de site.
- Complet declarativ pentru fiabilitate și eficiență CPU/memorie.

View File

@@ -1,4 +1,4 @@
uBO Lite (uBOL) — это блокировщик содержимого, *не требующий разрешений*, и основанный на MV3.
uBO Lite (uBOL) — это блокировщик веб-элементов на базе MV3.
Стандартный набор правил соответствует типовому набору фильтров uBlock Origin:
@@ -10,21 +10,3 @@ uBO Lite (uBOL) — это блокировщик содержимого, *не
Вы можете активировать больше списков правил на странице настроек -- нажмите на значок _Шестерёнки_ на всплывающей панели.
uBOL - полностью декларативный, т.е. для фильтрации не нужен постоянно выполняющийся uBOL процесс, а фильтрация контента, основанная на внедрении CSS/JS, производится непосредственно браузером. Это значит, что дополнение uBOL не расходует ресурсы ЦПУ/памяти, когда происходит блокировка рекламы -- служебный процесс uBOL запускается, _только_ когда вы вносите изменения на всплывающей панели или странице настроек.
uBOL не требует разрешение на полное "чтение и изменение данных" в момент установки, поэтому имеет ограниченные возможности по сравнению с uBlock Origin, и другими блокировщиками контента, которые требуют полное разрешение на "чтение и изменение данных" в момент установки.
Однако uBOL позволяет *намеренно* давать расширенные разрешения для определенных сайтов - по вашему усмотрению, чтобы эффективнее работать, используя косметическую фильтрацию и scriptlet-внедрения.
Для предоставления расширенных разрешений на текущем сайте - откройте всплывающую панель и выберите повышенный режим фильтрации: Оптимальный или Полный.
Далее браузер выдаст предупреждение об эффектах предоставления расширенных разрешений, запрошенных дополнением на текущем сайте, и надо будет выбрать: принять или отклонить этот запрос.
Если вы принимаете запрос uBOL на предоставление дополнительных разрешений, тогда дополнение сможет эффективнее фильтровать контент на текущем сайте.
Вы можете установить стандартный режим фильтрации на странице настроек uBOL. Если вы выбираете Оптимальный или Полный режим - режимом по умолчанию, необходимо предоставить uBOL разрешение на чтение и изменение данных на всех веб-сайтах.
Помните, что данный проект - в активной фазе разработки, преследующей следующие цели:
- Работа с ограниченными разрешениями при установке -- расширенные разрешения пользователь выдает по своему усмотрению, каждому сайту отдельно.
- Полностью декларативная работа - для надежности и эффективного использования ЦПУ/памяти.

View File

@@ -1,30 +1,12 @@
uBO Lite (uBOL) is a *permission-less* MV3-based content blocker.
uBO Lite (uBOL) යනු MV3-පාදක අන්තර්ගත අවහිර කරන්නා වේ.
The default ruleset corresponds to uBlock Origin's default filterset:
පෙරනිමි රීති කට්ටලය uBlock Origin හි පෙරනිමි පෙරහන් කට්ටලයට අනුරූප වේ:
- uBlock Origin's built-in filter lists
- EasyList
- EasyPrivacy
- Peter Lowes Ad and tracking server list
- uBlock Origin හි බිල්ට් පෙරහන් ලැයිස්තු
- පහසු ලැයිස්තුව
- පහසු පෞද්ගලිකත්වය
- පීටර් ලෝගේ දැන්වීම් සහ ලුහුබැඳීමේ සේවාදායක ලැයිස්තුව
You can enable more rulesets by visiting the options page -- click the _Cogs_ icon in the popup panel.
විකල්ප පිටුවට පිවිසීමෙන් ඔබට තවත් නීති කට්ටල සක්‍රීය කළ හැකිය -- උත්පතන පැනලයේ _Cogs_ නිරූපකය ක්ලික් කරන්න.
uBOL is entirely declarative, meaning there is no need for a permanent uBOL process for the filtering to occur, and CSS/JS injection-based content filtering is performed reliably by the browser itself rather than by the extension. This means that uBOL itself does not consume CPU/memory resources while content blocking is ongoing -- uBOL's service worker process is required _only_ when you interact with the popup panel or the option pages.
uBOL does not require broad "read and modify data" permission at install time, hence its limited capabilities out of the box compared to uBlock Origin or other content blockers requiring broad "read and modify data" permissions at install time.
However, uBOL allows you to *explicitly* grant extended permissions on specific sites of your choice so that it can better filter on those sites using cosmetic filtering and scriptlet injections.
To grant extended permissions on a given site, open the popup panel and pick a higher filtering mode such as Optimal or Complete.
The browser will then warn you about the effects of granting the additional permissions requested by the extension on the current site, and you will have to tell the browser whether you accept or decline the request.
If you accept uBOL's request for additional permissions on the current site, it will be able to better filter content for the current site.
You can set the default filtering mode from uBOL's options page. If you pick the Optimal or Complete mode as the default one, you will need to grant uBOL the permission to read and modify data on all websites.
Keep in mind this is still a work in progress, with these end goals:
- No broad host permissions at install time -- extended permissions are granted explicitly by the user on a per-site basis.
- Entirely declarative for reliability and CPU/memory efficiency.
uBOL සම්පූර්ණයෙන්ම ප්‍රකාශනාත්මකයි, එනම් පෙරීම සිදුවීමට ස්ථිර uBOL ක්‍රියාවලියක් අවශ්‍ය නොවන අතර, CSS/JS එන්නත්-පාදක අන්තර්ගත පෙරීම දිගුව මගින් නොව බ්‍රවුසරය විසින්ම විශ්වාසදායක ලෙස සිදු කරයි. මෙයින් අදහස් කරන්නේ අන්තර්ගත අවහිර කිරීම සිදුවෙමින් පවතින අතරතුර uBOL විසින්ම CPU/මතක සම්පත් පරිභෝජනය නොකරන බවයි -- ඔබ උත්පතන පැනලය හෝ විකල්ප පිටු සමඟ අන්තර් ක්‍රියා කරන විට uBOL හි සේවා සේවක ක්‍රියාවලිය _only_ අවශ්‍ය වේ.

Some files were not shown because too many files have changed in this diff Show More