uBlock Origin - An efficient blocker for Chromium and Firefox. Fast and lean.
Go to file
Raymond Hill bde3164eb4
Add support for `1P`, `3P`, `header=` filter options and other changes
New filter options
==================

Strict partyness: `1P`, `3P`
----------------------------

The current options 1p/3p are meant to "weakly" match partyness, i.e. a
network request is considered 1st-party to its context as long as both the
context and the request share the same base domain.

The new partyness options are meant to check for strict partyness, i.e. a
network request will be considered 1st-party if and only if both the context
and the request share the same hostname.

For examples:

- context: `www.example.org`
- request: `www.example.org`
- `1p`: yes, `1P`: yes
- `3p`: no,  `3P`: no

- context: `www.example.org`
- request: `subdomain.example.org`
- `1p`: yes, `1P`: no
- `3p`: no,  `3P`: yes

- context: `www.example.org`
- request: `www.example.com`
- `1p`: no, `1P`: no
- `3p`: yes,  `3P`: yes

The strict partyness options will be visually emphasized in the editor so as
to prevent mistakenly using `1P` or `3P` where weak partyness is meant to be
used.

Filter on response headers: `header=`
-------------------------------------

Currently experimental and under evaluation. Disabled by default, enable by
toggling `filterOnHeaders` to `true` in advanced settings.

Ability to filter network requests according to whether a specific response
header is present and whether it matches or does not match a specific value.

For example:

    *$1p,3P,script,header=via:1\.1\s+google

The above filter is meant to block network requests which fullfill all the
following conditions:

- is weakly 1st-party to the context
- is not strictly 1st-party to the context
- is of type `script`
- has a response HTTP header named `via`, which value matches the regular
  expression `1\.1\s+google`.

The matches are always performed in a case-insensitive manner.

The header value is assumed to be a literal regular expression, except for
the following special characters:

- to anchor to start of string, use leading `|`, not `^`
- to anchor to end of string, use trailing `|`, not `$`
- to invert the test, use a leading `!`

To block a network request if it merely contains a specific HTTP header is
just a matter of specifying the header name without a header value:

    *$1p,3P,script,header=via

Generic exception filters can be used to disable specific block `header=`
filters, i.e. `@@*$1p,3P,script,header` will override the block `header=`
filters given as example above.

Dynamic filtering's `allow` rules override block `headers=` filters.

Important: It is key that filter authors use as many narrowing filter options
as possible when using the `header=` option, and the `header=` option should
be used ONLY when other filter options are not sufficient.

More documentation justifying the purpose of `header=` option will be
provided eventually if ever it is decided to move it from experimental to
stable status.

To be decided: to restrict usage of this filter option to only uBO's own
filter lists or "My filters".

Changes
=======

Fine tuning `queryprune=`
-------------------------

The following changes have been implemented:

The special value `*` (i.e. `queryprune=*`) means "remove all query
parameters".

If the `queryprune=` value is made only of alphanumeric characters
(including `_`), the value will be internally converted to regex  equivalent
`^value=`. This ensures a better future compatibility with AdGuard's
`removeparam=`.

If the `queryprune=` value starts with `!`, the test will be inverted. This
can be used to remove all query parameters EXCEPT those who match the
specified value.

Other
-----

The legacy code to test for spurious CSP reports has been removed. This
is no longer an issue ever since uBO redirects to local resources through
web accessible resources.

Notes
=====

The following new and recently added filter options are not compatible with
Chromium's manifest v3 changes:

- `queryprune=`
- `1P`
- `3P`
- `header=`
2020-11-23 08:22:43 -05:00
.github Update ISSUE_TEMPLATE.md 2018-04-15 13:55:07 -04:00
assets Make json-prune scriptlet also trap Response.json() calls 2020-11-08 08:45:33 -05:00
dist Make Firefox dev build auto-update 2020-11-21 10:35:21 -05:00
doc Update CPU chart image with name ublock instead of μblock (#3566) 2018-03-02 06:47:47 -05:00
docs Incrementally improve static filtering parser 2020-11-07 13:20:02 -05:00
platform Fine tune port connection code 2020-11-13 08:32:51 -05:00
src Add support for `1P`, `3P`, `header=` filter options and other changes 2020-11-23 08:22:43 -05:00
tools Remove reference to resources.txt 2020-10-02 10:42:38 -04:00
.gitignore git ignore ./tmp/ 2016-04-05 07:55:22 -04:00
.jshintrc Remove obsolete entry 2019-12-01 09:00:00 -05:00
.travis.yml Restore old version; just ignore travis spurious warnings 2020-04-09 10:04:06 -04:00
CONTRIBUTING.md Update CONTRIBUTING.md 2018-04-15 11:52:41 -04:00
LICENSE.txt first commit 2014-06-23 18:42:43 -04:00
MANIFESTO.md Update MANIFESTO.md 2015-03-12 23:22:30 +00:00
README.md Fix typo as per https://github.com/uBlockOrigin/uBlock-issues/issues/1191 2020-08-03 10:39:17 -04:00

README.md

Build Crowdin License


uBlock Origin

pronounced you-block origin (/ˈjuːˌblɒk/) — you decide what enters your browser.
English, Chinese (中文), Korean (한국어), Português (Brasil)

BEWARE! uBlock Origin is (and has always been) COMPLETELY UNRELATED to the web site ublock.org.


An efficient blocker add-on for various browsers. Fast, potent, and lean.

uBlock Origin is NOT an "ad blocker": it is a wide-spectrum blocker -- which happens to be able to function as a mere "ad blocker". The default behavior of uBlock Origin when newly installed is to block ads, trackers and malware sites -- through EasyList, EasyPrivacy, Peter Lowes ad/tracking/malware servers, Online Malicious URL Blocklist, and uBlock Origin's own filter lists.

Documentation

Basic mode Advanced-user mode
Popup user interface A point-and-click firewall which can be configured on a per-site basis

.
.

Configure as you wish:
picture shows 3rd-party scripts and frames blocked by default everywhere

Visit the uBlock Origin's wiki for documentation.

For support/questions/help, there is /r/uBlockOrigin on Reddit.

Philosophy

uBlock Origin (or uBlock₀) is not an ad blocker; it's a general-purpose blocker. uBlock Origin blocks ads through its support of the Adblock Plus filter syntax. uBlock Origin extends the syntax and is designed to work with custom rules and filters. Furthermore, advanced mode allows uBlock Origin to work in default-deny mode, which mode will cause all 3rd-party network requests to be blocked by default, unless allowed by the user.

That said, it's important to note that using a blocker is NOT theft. Don't fall for this creepy idea. The ultimate logical consequence of blocking = theft is the criminalisation of the inalienable right to privacy.

Ads, "unintrusive" or not, are just the visible portions of privacy-invading apparatus entering your browser when you visit most sites nowadays. uBlock Origin's main goal is to help users neutralize such privacy-invading apparatus — in a way that welcomes those users who don't wish to use more technical, involved means (such as uMatrix).

EasyList, EasyPrivacy, Peter Lowe's, Online Malicious URL Blocklist and uBO's own lists are enabled by default when you install uBlock Origin. Many more lists are readily available to block trackers, analytics, and more. Hosts files are also supported.

Once you install uBlock Origin, you may easily un-select any of the pre-selected filter lists if you think uBlock Origin blocks too much. For reference, Adblock Plus installs with only EasyList enabled by default.

Installation

Feel free to read about the extension's required permissions.

Chromium

You can install the latest version manually, from the Chrome Web Store, or from the Opera add-ons.

There is also a development version in the Chrome Web Store if you want to test uBlock Origin with the latest changes: see uBlock Origin dev build.

It is expected that uBlock Origin is compatible with any Chromium-based browsers.

Firefox / Firefox for Android

Firefox Add-ons web site.

There is also a development version if you want to test uBlock Origin with the latest changes: for installation, see Install / Firefox webext / For beta version

uBlock Origin is compatible with SeaMonkey, Pale Moon, and possibly other browsers based on Firefox: for installation, see Install / Firefox legacy.

uBO may also be installed as a Debian package:

  • Firefox 56-: apt-get install xul-ext-ublock-origin
  • Firefox 55+: apt-get install webext-ublock-origin

There is no guarantee the package will be available on your specific platform -- in which case, you will have to install from Firefox Add-ons web site.

Microsoft Edge

Publisher: Nik Rolls.

Chromium-based Edge: Stable version available in Microsoft Edge Add-ons.

Safari (macOS)

Developer: @el1t.

Development version available at https://github.com/el1t/uBlock-Safari#ublock-originfor-safari.

Warning: It is not possible for extensions like uBlock Origin to work with Safari 13+. See https://github.com/el1t/uBlock-Safari/issues/158.

Note that issues specific to the Safari fork are the responsibility of the current maintainer, I have no control over the code base of the fork.

Note for all browsers

To benefit from uBlock Origin's higher efficiency, it's advised that you don't use other content blockers at the same time (such as Adblock Plus, AdBlock). uBlock Origin will do as well or better than most popular ad blockers. Other blockers can also prevent uBlock Origin's privacy or anti-blocker-defusing features from working properly.

Deploying

Below is documentation to assist administrators in deploying uBlock Origin:

Release History

See the releases pages for a history of releases and highlights for each release.

About

uBlock Origin's manifesto.

Free. Open source. For users by users. No donations sought.

Without the preset lists of filters, this extension is nothing. So if ever you really do want to contribute something, think about the people working hard to maintain the filter lists you are using, which were made available to use by all for free.

You can contribute by helping translate uBlock Origin on Crowdin.

License

GPLv3.