Compare commits

..

No commits in common. "master" and "1.40.3b2" have entirely different histories.

1023 changed files with 32229 additions and 114910 deletions

View file

@ -1,14 +1,17 @@
blank_issues_enabled: false
contact_links:
- name: Support Forum
url: https://www.reddit.com/r/uBlockOrigin/
about: For support, questions, or help, visit /r/uBlockOrigin.
- name: uBlock Origin (uBO) Issues
url: https://github.com/uBlockOrigin/uBlock-issues/issues
about: Report issues with uBO in the uBO issue tracker.
- name: Filter List Issues
- name: Bug report
url: https://github.com/uBlockOrigin/uBlock-issues
about: Bugs and feature requests are now in a separate repository
- name: Questions and support
url: https://old.reddit.com/r/uBlockOrigin/
about: Answers to questions and other kinds of help support is provided on the subreddit r/uBlockOrigin
- name: Filter issues/website is broken
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-home/issues
about: Report issues specific to the Manifest Version 3 (MV3) variant in the uBOL issue tracker.
about: Please report any issues with specific websites to uAssets issue tracker
- name: New filter list
url: https://github.com/uBlockOrigin/uBlock-issues/blob/master/README.md#ublock-issues
about: Opening issues for adding new filter lists is now disallowed and such issues will be declined and closed
- name: Issues with Firefox 56 or older
url: https://github.com/gorhill/uBlock-for-firefox-legacy/issues
about: If you are using uBlock Origin for Firefox legacy, please write the issues to its issue tracker

View file

@ -1,7 +0,0 @@
[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

@ -1,50 +1,78 @@
name: uBO release
name: GitHub CI
on:
create:
branches: master
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:
contents: write # for creating release
name: Build packages
runs-on: ubuntu-slim
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Clone repository
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
persist-credentials: false
- name: Clone uAssets
run: |
tools/pull-assets.sh
git submodule update --depth 1 --init
# https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html
- name: Get release information
id: release_info
run: |
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%/${{ env.VERSION }}/g' .github/workflows/RELEASE.HEAD.md >> release.body.txt
echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- name: Create GitHub release
id: create_release
uses: softprops/action-gh-release@v2
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag_name: ${{ env.VERSION }}
name: ${{ env.VERSION }}
draft: true
tag_name: ${{ steps.release_info.outputs.VERSION }}
release_name: ${{ steps.release_info.outputs.VERSION }}
prerelease: true
body_path: release.body.txt
files: |
dist/build/uBlock0_${{ env.VERSION }}.chromium.zip
dist/build/uBlock0_${{ env.VERSION }}.firefox.xpi
- name: Build all 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

3
.gitignore vendored
View file

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

9
.gitmodules vendored
View file

@ -1,6 +1,3 @@
[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
[submodule "submodules/uAssets"]
path = submodules/uAssets
url = https://github.com/uBlockOrigin/uAssets.git

22
.jshintrc Normal file
View file

@ -0,0 +1,22 @@
{
"browser": true,
"devel": true,
"eqeqeq": true,
"esversion": 8,
"globals": {
"browser": false, // global variable in Firefox, Edge
"chrome": false, // global variable in Chromium, Chrome, Opera
"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,495 +0,0 @@
- [Improve `json-edit`-related scriptlets](https://github.com/gorhill/uBlock/commit/98d3e9500a)
- [Improve `trusted-create-html` scriptlet](https://github.com/gorhill/uBlock/commit/baffd32dab)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/2ce376cf1d)
- [Fix handling of `extraMatch` parameter in `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/a8ad95394d)
- [Improve `generateContentFn` helper scriptlet](https://github.com/gorhill/uBlock/commit/7d95c58408)
- [Improve `prevent-xhr` scriptlet](https://github.com/gorhill/uBlock/commit/168394440c)
- [Improve `proxyApplyFn` helper scriptlet](https://github.com/gorhill/uBlock/commit/18a8fc7675)
----------
# 1.69.0
- [Add `adthrive` shim](https://github.com/gorhill/uBlock/commit/b8bf0bbab4)
- [Add `elem.shadowRoot` fallback in `getShadowRoot`](https://github.com/gorhill/uBlock/commit/c8b42ea819) (by @antonok-edm)
- [Fix merging of uncommitted filters](https://github.com/gorhill/uBlock/commit/c8004c4b02)
- [Improve `urlskip` implementation](https://github.com/gorhill/uBlock/commit/41ced43f03)
- [Improve `set-attr`/`trusted-set-attr` scriptlets](https://github.com/gorhill/uBlock/commit/3f3d4768b6)
- [Improve `trusted-create-html` scriptlet](https://github.com/gorhill/uBlock/commit/3c7eb3497d)
- [Add Anti-AI Suggestions list](https://github.com/gorhill/uBlock/commit/a0a7a99675) (by @ryanbr)
- [Unescape unduly escaped `|` in regex-based domain options](https://github.com/gorhill/uBlock/commit/bb34a4b83b)
- [Mind id/class changes in generic cosmetic filtering surveyor](https://github.com/gorhill/uBlock/commit/c053361d30)
- [Fix `specifichide` option](https://github.com/gorhill/uBlock/commit/024019094f)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/1977196abe)
- [Add `nitropay_ads.js` shim](https://github.com/gorhill/uBlock/commit/6af8a457ed)
- [Improve scriptlets proxying `fetch`](https://github.com/gorhill/uBlock/commit/13612d1d29)
- [Improve google-ima shim](https://github.com/gorhill/uBlock/commit/3fc281adf1)
- [[firefox] Change minimum required version to 115](https://github.com/gorhill/uBlock/commit/d5793b83f2)
- [Fix regression in `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/be78200c2f)
- [Add `prevent-dialog` scriptlet](https://github.com/gorhill/uBlock/commit/fd12d01928)
----------
# 1.68.0
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/b46572e938)
- [Fix regression in `trusted-replace-argument` scriptlet](https://github.com/gorhill/uBlock/commit/2e509d42fc)
- [Add web-accessible resource for sensors analytics](https://github.com/gorhill/uBlock/commit/cd0f5be12c)
- [Fix custom prefixes unduly assigning trust to external lists](https://github.com/gorhill/uBlock/commit/b5f74456a4)
- [Improve `m3u-prune` scriptlet](https://github.com/gorhill/uBlock/commit/53d60ac36c)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/60e15cb6e1)
- [Fix regex-matching in `JSONPath`](https://github.com/gorhill/uBlock/commit/8491e9c476)
- [Ignore negated request types when validating `redirect` option](https://github.com/gorhill/uBlock/commit/50e898b847)
----------
# 1.67.0
- [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)
- [Use helper function to lookup safe cookie values](https://github.com/gorhill/uBlock/commit/79e10323ad)
- [Add `checked`/`unchecked` to `set-cookie`](https://github.com/gorhill/uBlock/commit/3e2171f550) (by @ryanbr)
- [Add `allowed`/`denied` to `set-local-storage-item`](https://github.com/gorhill/uBlock/commit/41c2258f91) (by @ryanbr)
- [Fix plain exceptions not overriding block filters using `header=` option](https://github.com/gorhill/uBlock/commit/1cb660b94e)
- [Improve various scriptlets](https://github.com/gorhill/uBlock/commit/56dfdd2568)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/db3dc69bcc)
- [Improve `remove-attr.js` scriptlet](https://github.com/gorhill/uBlock/commit/fb037e97d0)
- [Improve `trusted-replace-node-text` scriptlet](https://github.com/gorhill/uBlock/commit/4f0d1301ab)
----------
# 1.59.0
## Fixes / changes
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/84be9cde6d)
- [Improve `trusted-replace-node-text` scriptlet](https://github.com/gorhill/uBlock/commit/8afd9e233d)
- [Improve `set-constant` scriptlet](https://github.com/gorhill/uBlock/commit/77feb25c4d)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/e785b99338)
- [Improve `href-sanitizer` scriptlet](https://github.com/gorhill/uBlock/commit/66e3a1ad47)
- [Fix CSP/PP header injection in non-document resources](https://github.com/gorhill/uBlock/commit/c90f4933df)
- [Add `trusted-suppress-native-method` scriptlet](https://github.com/gorhill/uBlock/commit/97d11c03c2)
- [Add support for `$currentISODate$` in `trusted-set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/a3576ea651)
- [Add `essential` and `nonessential` to set-cookie](https://github.com/gorhill/uBlock/commit/37d31a82d8) (by @ryanbr)
- [Fix distance calculation in picker](https://github.com/gorhill/uBlock/commit/9569969b55)
- [Fix bad serialization of Date objects](https://github.com/gorhill/uBlock/commit/c154aaa69c)
- [Fix race condition when loading redirect/scriptlet resources](https://github.com/gorhill/uBlock/commit/896737d098)
- [Improve logging in `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/8eb3b19c69)
- [Add `:matches-prop()` pseudo CSS operator](https://github.com/gorhill/uBlock/commit/aca7674bac)
- [Improve `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/b4d8750f44)
- [Improve `trusted-replace-node-text` scriptlet](https://github.com/gorhill/uBlock/commit/cb0f65e035)
- [Improve `trusted-replace-(fetch|xhr)-response` scriptlets](https://github.com/gorhill/uBlock/commit/9072772f61)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/91ee5bdeae)
- [Add `isodate` as available placeholder for auto-comment](https://github.com/gorhill/uBlock/commit/d5208ee5dd)
- [Improve `trusted-replace-outbound-text` scriptlet](https://github.com/gorhill/uBlock/commit/fa6740a059)
- [Classify generic cosmetic filters with comma as highly generic](https://github.com/gorhill/uBlock/commit/8f81833efc)
- [Raise max buffer size for response body filtering](https://github.com/gorhill/uBlock/commit/82a3992896)
- [Trim end of class tokens in generic cosmetic filtering's surveyor](https://github.com/gorhill/uBlock/commit/8ea1bac80b)
- [Improve `trusted-set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/0e1e4b82c5)
----------
# 1.58.0
## Fixes / changes
- [Fallback to `requestAnimationFrame` when `requestIdleCallback` is not available](https://github.com/gorhill/uBlock/commit/59ffc96e89)
- [Improve `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/ee67cd6284)
- [Replace EasyDutch with AdGuard Dutch](https://github.com/gorhill/uBlock/commit/ca7d2ad61d)
- [Add checksum validation when loading trie buffers in selfie](https://github.com/gorhill/uBlock/commit/0e6d607484)
- [Catch exceptions in API calls for the sake of old Chromium versions](https://github.com/gorhill/uBlock/commit/bb479b0a66)
- [Add `accept`/`reject` to `set-local-storage-item`](https://github.com/gorhill/uBlock/commit/363ad6795c) (by @ryanbr)
- [Use raw string for regex patterns in python scripts](https://github.com/gorhill/uBlock/commit/923452b788)
- [Improve `noeval-if` scriptlet](https://github.com/gorhill/uBlock/commit/4d8ee35ef7)
- [Improve `trusted-set-local-storage-item` scriptlet](https://github.com/gorhill/uBlock/commit/2ccc3135c1)
- [Fix potential corruption when reading serialized data](https://github.com/gorhill/uBlock/commit/c098eb8625)
- [Improve `remove-[attr|class]` scriptlets](https://github.com/gorhill/uBlock/commit/91dfcbef2a)
- [Improve dashboard layout at high zoom factor](https://github.com/gorhill/uBlock/commit/6152f5269e)
- [Add a console pane to the logger](https://github.com/gorhill/uBlock/commit/3b4f02db21)
- [Improve `spoof-css` scriptlet](https://github.com/gorhill/uBlock/commit/277e90a4a7)
- [Fix bad date computation in auto-comment feature](https://github.com/gorhill/uBlock/commit/a5f6c35bb0)
- [Fix regression breaking import of `file://` lists](https://github.com/gorhill/uBlock/commit/c223a8cd39)
- [Add `trusted-replace-outbound-text` scriptlet](https://github.com/gorhill/uBlock/commit/21e1ee30ee)
- [Improve `[trusted-]set-cookie` scriptlets](https://github.com/gorhill/uBlock/commit/49ff7cffb1)
----------
# 1.57.2
## Fixes / changes
- [Fix stray lists in redesigned cache storage](https://github.com/gorhill/uBlock/commit/defd68ef7d)
----------
# 1.57.0
## Fixes / changes
- [Do not block large media resources when loaded as top-level document](https://github.com/gorhill/uBlock/commit/3919a16bb8)
- [Properly manage cache storage regarding managed user filters](https://github.com/gorhill/uBlock/commit/90ab1a76ab)
- [Improve `[trusted-]set-cookie` scriptlets](https://github.com/gorhill/uBlock/commit/11a48561e0)
- [Fixed Belgian and Nepali flags for Windows Chromium users](https://github.com/gorhill/uBlock/commit/499c80bd8a) (by @DandelionSprout)
- [Mind that `tabs.sendMessage` can throw](https://github.com/gorhill/uBlock/commit/3f7374c1f1)
- [Improve `set-cookie` scriptlet](https://github.com/gorhill/uBlock/commit/9146134874)
- [Append wildcard character only when filter starts & ends with `/`](https://github.com/gorhill/uBlock/commit/1cb190e102)
- [Fix failure to create popup logger window sometimes](https://github.com/gorhill/uBlock/commit/c8762945d9)
- [Improve json-prune-related scriptlets](https://github.com/gorhill/uBlock/commit/e7a0f8c781)
- [Support maximizing editor to viewport size](https://github.com/gorhill/uBlock/commit/664dd95700)
- [Add advanced setting to force popup panel orientation](https://github.com/gorhill/uBlock/commit/0d77ccded7)
- [Add checkboxes to "My filters" pane](https://github.com/gorhill/uBlock/commit/46ea5519c1)
- [Assume UTF-8 when no encoding can be looked up](https://github.com/gorhill/uBlock/commit/63acdcbdeb)
- [Fix issue with "My filters" pane on mobile](https://github.com/gorhill/uBlock/commit/24d94e559d)
- [Support aborting "Pick" mode in element picker](https://github.com/gorhill/uBlock/commit/a557f62112)
- [Remove sections with no lists in "Filter lists" pane](https://github.com/gorhill/uBlock/commit/0f4e50db07)
- [Add "Social widgets", "Cookie notices" sections in "Filter lists" pane](https://github.com/gorhill/uBlock/commit/21a76e32a1)
- [No longer disable generic cosmetic filters by default on mobile](https://github.com/gorhill/uBlock/commit/7a768e7b1a)
- [Improve `spoof-css` scriptlet](https://github.com/gorhill/uBlock/commit/603239970d)
- [Make asset updater compatible with non-persistent background page](https://github.com/gorhill/uBlock/commit/96704f2fda)
- [Move dragbar to the top of element picker dialog](https://github.com/gorhill/uBlock/commit/953c978d59)
- [Move "Quit" button to top bar in element picker](https://github.com/gorhill/uBlock/commit/6266c4718d)
- [Add advanced setting `requestStatsDisabled`](https://github.com/gorhill/uBlock/commit/e02ea69c86)
- [First lookup matching stock lists when importing URLs](https://github.com/gorhill/uBlock/commit/2b16a10b82)
- [Reset filter lists in worker when creating filters via "Block element"](https://github.com/gorhill/uBlock/commit/b0067b79d5)
- [Remove trusted-source requirement when using `badfilter`](https://github.com/gorhill/uBlock/commit/3c299b8632)
- [Redesign cache storage](https://github.com/gorhill/uBlock/commit/086766a924)
- [Don't match network filter-derived regexes against non-network URIs](https://github.com/gorhill/uBlock/commit/2262a129ec)
- [Remove obsolete trusted directives](https://github.com/gorhill/uBlock/commit/439a059cca)
- [Support logging details of calls to `json-prune-fetch-response`](https://github.com/gorhill/uBlock/commit/e527a8f9af)
- [Escape special whitespace characters in attribute values](https://github.com/gorhill/uBlock/commit/be3e366019)
----------
# 1.56.0
## Fixes / changes
- [Mind that multiple `uritransform` may apply to a single request](https://github.com/gorhill/uBlock/commit/2a5a444482)
- [Fix incorrect built-in filtering expression in logger](https://github.com/gorhill/uBlock/commit/9bff0c2f94)
- [Fix improper invalidation of valid `uritransform` exception filters](https://github.com/gorhill/uBlock/commit/21ec5a277c)
- [Improve `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/b22b3d729b)
- [Fix Chartbeat flicker control `div`'s](https://github.com/gorhill/uBlock/commit/397d6d47b9) (by @ryanbr)
- [Fix potential exfiltration of browsing history by a rogue list author through `permissions=`](https://github.com/gorhill/uBlock/commit/7b138b58c6)
- [Ignore event handler-related attributes in `set-attr` scriptlet](https://github.com/gorhill/uBlock/commit/3037ae5f04) (suggested by @distinctmondaylilac)
- [Fix potential exfiltration of browsing history by a rogue list author through `csp=`](https://github.com/gorhill/uBlock/commit/db5656f607) (reported by @distinctmondaylilac)
- [Output scriptlet logging information to the logger](https://github.com/gorhill/uBlock/commit/869a653fdf)
- [Fix decompiling of scriptlet parameters](https://github.com/gorhill/uBlock/commit/49dd68ef3d)
- [Add support for `extraMatch` in `trusted-click-element` scriptlet](https://github.com/gorhill/uBlock/commit/45e62c939f)
- [Remove minimum height constraint from "My filters" pane](https://github.com/gorhill/uBlock/commit/f624c835c2)
- [Unregister all scriptlets when disabling uBO on a specific site](https://github.com/gorhill/uBlock/commit/13dcd844a7)
- [Allow `uritransform` to process the hash part of a URL](https://github.com/gorhill/uBlock/commit/b19094339f)
- [Remember presentation state of "My rules" pane](https://github.com/gorhill/uBlock/commit/3d1b100646)
- [Fix improperly assembled `!#include` sublists](https://github.com/gorhill/uBlock/commit/0e00010b91)
- [Mark procedural filters with pseudo-elements selector as invalid](https://github.com/gorhill/uBlock/commit/757b8be9cd)
- [Prevent access to picker when "My filters" is not enabled](https://github.com/gorhill/uBlock/commit/bc641fc024)
- [Provide visual feedback when applying changes in "Filter lists" pane](https://github.com/gorhill/uBlock/commit/c4bb8a0f64)
- [Empty query parameters must still use `=`](https://github.com/gorhill/uBlock/commit/1cac61a9a4)
- [Add support to toggle no-scripting switch with keyboard shortcut](https://github.com/gorhill/uBlock/commit/936444883f)
- [Do not exceed rate-limited calls to `handlerBehaviorChanged()`](https://github.com/gorhill/uBlock/commit/63fe18a761)
- [Shield some code paths against potentially tampered global properties](https://github.com/gorhill/uBlock/commit/534d877e95) (in scriptlets)
- [Do not prevent applying changes when lists are updating](https://github.com/gorhill/uBlock/commit/f6b726136c)
- [Add `elements` vararg to `prevent-addEventListener` scriptlet](https://github.com/gorhill/uBlock/commit/060f9d68fc)
- [Do not use tab character as field separator](https://github.com/gorhill/uBlock/commit/a9eb9630cf) (in logger)
- [Prevent `:others()` from hiding `html` tag](https://github.com/gorhill/uBlock/commit/9a104bcbd2)
----------
# 1.55.0
## Fixes / changes
- [Discard repeating adjacent entries in the logger](https://github.com/gorhill/uBlock/commit/55e4cee6e8)
- [Mind drop events in filter expression field of logger](https://github.com/gorhill/uBlock/commit/c8b7d1a526)
- [Improve `xml-prune` scriptlet](https://github.com/gorhill/uBlock/commit/d7063a052f)
- [Fix message entries overflowing in logger](https://github.com/gorhill/uBlock/commit/49c8310e22)
- [Add support for `application/x-javascript` in `replace=` option](https://github.com/gorhill/uBlock/commit/abeadf18eb)
- [Extend support for differential updates to imported lists](https://github.com/gorhill/uBlock/commit/443c1f81e1)
- [Add detection of mismatched `!#if`-`!#endif` in linter](https://github.com/gorhill/uBlock/commit/9f4b31a96f)
- [Support links to update lists which are differential update-friendly](https://github.com/gorhill/uBlock/commit/5e3f9695b4)
- [Remove "Purge all caches" button from "Filter lists" pane](https://github.com/gorhill/uBlock/commit/bd7ce41224)
- [Add support for `all` list token in updater-link feature](https://github.com/gorhill/uBlock/commit/14926913f7)
- [Fix logging of broad exception filter `#@#+js()`](https://github.com/gorhill/uBlock/commit/4305ea9c0c)
- [Improve `no-xhr-if` scriptlet](https://github.com/gorhill/uBlock/commit/d01ad24291)
- [Ensure cache storage backend is selected before access](https://github.com/gorhill/uBlock/commit/bfa28b960e)
- [Fix popup panel rendering when embedded in logger](https://github.com/gorhill/uBlock/commit/4183ce477a)
- [Add visual hint in support information re. differential update](https://github.com/gorhill/uBlock/commit/7e44db763e)
- [Remove obsolete web accessible resources](https://github.com/gorhill/uBlock/commit/310bfec6a1)
- [Rename `urltransform` to `uritransform`](https://github.com/gorhill/uBlock/commit/cdc5e89f52)
- [Vertically expand/collapse in steps in dom inspector](https://github.com/gorhill/uBlock/commit/885bc3875b)
- [Reset the DOM inspector when URL in top context changes](https://github.com/gorhill/uBlock/commit/c744c87607)
- [Support shadow-piercing combinator `>>>` in `trusted-click-element`](https://github.com/gorhill/uBlock/commit/941077a25c)
- [Isolate DOM inspector layers from page context](https://github.com/gorhill/uBlock/commit/ee83a4304a)
- [Refactoring: Replace DOM events with broadcast channels](https://github.com/gorhill/uBlock/commit/67fb969572)
- [Support non-default sticky lists](https://github.com/gorhill/uBlock/commit/ea7d411bc2)
- [Add enableLazyLoad function](https://github.com/gorhill/uBlock/commit/a8cf08325d) (by @spazmodius )
- [Change frequency of save-to-storage blocking stats](https://github.com/gorhill/uBlock/commit/5a338b7210)
- [Improve `prevent-fetch` scriptlet](https://github.com/gorhill/uBlock/commit/6aeab2adbc)
- [Catch cases of `! Expires:` field with no value](https://github.com/gorhill/uBlock/commit/9ce958432d)
----------
# 1.54.0
## New
Differential update of filter lists, as a result of discussions at <https://github.com/AdguardTeam/FiltersCompiler/issues/192>. Resulting spec is [here](https://github.com/ameshkov/diffupdates).
![inkscape](https://github.com/gorhill/uBlock/assets/585534/3ee3567b-e24f-4d39-90e2-915b39a114fb)
The goal is to **NOT** be ranked among the "most popular projects" by bandwidth usage (as per [jsDelivr's public stats](https://www.jsdelivr.com/statistics)):
![jsDelivr stats](https://github.com/gorhill/uBlock/assets/585534/96c7e0fa-ffcc-4879-a01e-e340b4f0fa9e)
It is expected that differential updates will lower both requests and bandwidth usage.
To benefit the much shorter update period enabled by differential updates, you must let uBO auto-update the filter lists. Forcing a manual update will prevent differential updates until the next time a list auto-update.
## Fixes / changes
- [Enable path for native `has()` selector in Firefox](https://github.com/gorhill/uBlock/commit/c5724c1cce)
- [Allow scriptlets to be injected in `about:blank`](https://github.com/gorhill/uBlock/commit/3fd2588650)
- [Fix faulty `as` vararg in `set-constant` scriptlet](https://github.com/gorhill/uBlock/commit/c292a90b90)
- [Add support to redirect to `noop.json`](https://github.com/gorhill/uBlock/commit/bd8a91ed3a)
- [More improvements to the `google-ima` shim script](https://github.com/gorhill/uBlock/commit/c1d8f5908d) (by @kzar)
- [All exceptions filters are exempt from requiring a trusted source](https://github.com/gorhill/uBlock/commit/d2b8d990e6)
- [Add `trusted-set-session-storage-item` scriptlet](https://github.com/gorhill/uBlock/commit/f3d6a21e7a)
- [Allow the use of quotes in `set-cookie` scriptlet ](https://github.com/gorhill/uBlock/commit/7c562d0c5c)
- [Allow the use of quotes in `set-(local|session)-storage-item`](https://github.com/gorhill/uBlock/commit/decafc5cbf)
- [Add ability to trigger cookie removal on specific events](https://github.com/gorhill/uBlock/commit/ef311ddbec)
- [Ensure CSSTree does not hold a reference onto last parsed string](https://github.com/gorhill/uBlock/commit/1dba557c9a)
- [Lower minimum Expires value to 4h](https://github.com/gorhill/uBlock/commit/2360bc02f3)
- [Properly reset needle length in unserialized buffer](https://github.com/gorhill/uBlock/commit/8ed1ad9c9d)
- [Add additional flags to regional lists](https://github.com/gorhill/uBlock/commit/0962366524) (by @DandelionSprout)
- [Harden scriptlets which need to serialize function code into string](https://github.com/gorhill/uBlock/commit/7823d98070)
- [Reset `g` regexes before use in `rmnt`/`rpnt` scriptlets](https://github.com/gorhill/uBlock/commit/cdc3f66a6b)
- [Apply response filtering according to mime type](https://github.com/gorhill/uBlock/commit/6417f54299)
- [Add t/f to set-cookie](https://github.com/gorhill/uBlock/commit/4ab1c36ac9) (by @ryanbr)
- [Have `urltransform=` use the same syntax as `replace=`](https://github.com/gorhill/uBlock/commit/d7c99b46e6)
- [Implement network filter option `replace=`](https://github.com/gorhill/uBlock/commit/7c3e060c01) (Firefox only because [filterResponseData](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData#browser_compatibility))
- [Prevent evaluating the SNFE until fully loaded](https://github.com/gorhill/uBlock/commit/89b272775a)
- [Add support for differential update of filter lists](https://github.com/gorhill/uBlock/commit/d05ff8ffeb)
----------

View file

@ -1,31 +1,5 @@
# Contributions
# Submitting issues
Please refer to the sections below to find the appropriate destination for your contributions. Thank you for your support!
Submit on <https://github.com/uBlockOrigin/uBlock-issues/issues>.
---
### Translations
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 report your issues.
#### Support Forum
For support, questions, or assistance, please visit [/r/uBlockOrigin](https://www.reddit.com/r/uBlockOrigin/).
#### Filter List 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
For issues specifically about uBO, please use the [uBO issue tracker](https://github.com/uBlockOrigin/uBlock-issues/issues).
#### uBO Lite (uBOL) 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).
Issue tracker here is read-only for non-[prior contributors](https://github.com/gorhill/uBlock/graphs/contributors).

View file

@ -1,7 +1,10 @@
uBlock Origin (uBO)'s manifesto:
### This is uBlock's manifesto
The **user decides** what web content is acceptable in their browser.
1. The **user decides** what web content is acceptable or not in their browser.
The uBO project does not support Adblock Plus' _"Acceptable Ads Manifesto"_ because the _"Acceptable Ads"_ marketing campaign is the business plan of a for-profit entity.
The uBlock project does not support Adblock Plus' _"Acceptable Ads Manifesto"_,
because the _"Acceptable Ads"_ marketing campaign is really the business
plan of a for-profit entity.
Users are the best placed to know what is or is not acceptable to them. uBO's sole purpose is to give users the means to enforce their choices.
Users are best placed to know what is or is not acceptable to them. uBlock's
sole purpose is to give users the means to enforce their own choices.

154
Makefile
View file

@ -1,25 +1,15 @@
# https://stackoverflow.com/a/6273809
run_options := $(filter-out $@,$(MAKECMDGOALS))
.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
.PHONY: all clean test lint chromium firefox npm dig \
compare maxcost medcost mincost modifiers record wasm
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/*)
sources := $(wildcard assets/resources/* src/* src/*/* src/*/*/* src/*/*/*/*)
platform := $(wildcard platform/* platform/*/*)
assets := $(wildcard submodules/uAssets/* \
submodules/uAssets/*/* \
submodules/uAssets/*/*/* \
submodules/uAssets/*/*/*/*)
all: chromium firefox npm
@ -29,12 +19,6 @@ dist/build/uBlock0.chromium: tools/make-chromium.sh $(sources) $(platform) $(ass
# Build the extension for Chromium.
chromium: dist/build/uBlock0.chromium
dist/build/uBlock0.opera: tools/make-opera.sh $(sources) $(platform) $(assets)
tools/make-opera.sh
# Build the extension for Opera.
opera: dist/build/uBlock0.opera
dist/build/uBlock0.firefox: tools/make-firefox.sh $(sources) $(platform) $(assets)
tools/make-firefox.sh all
@ -44,16 +28,20 @@ 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
# Dev tools
node_modules:
npm install
lint: npm
cd dist/build/uBlock0.npm && npm run lint
init: node_modules
test: npm
cd dist/build/uBlock0.npm && npm run test
lint: init
npm run lint
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
dist/build/uBlock0.dig: tools/make-nodejs.sh $(sources) $(platform) $(assets)
tools/make-dig.sh
@ -64,111 +52,13 @@ dig: dist/build/uBlock0.dig
dig-snfe: dig
cd dist/build/uBlock0.dig && npm run snfe $(run_options)
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-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-firefox: ubol-codemirror dist/build/uBOLite.firefox
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
# Update submodules.
update-submodules:
tools/update-submodules.sh
clean:
rm -rf dist/build tmp/node_modules node_modules
rm -rf dist/build tmp/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) \
notes="See release notes at https://github.com/gorhill/uBlock/releases"
# 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
# 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:

237
README.md
View file

@ -1,185 +1,152 @@
[![Badge Commits]][Commit Rate]
[![Badge Issues]][Issues]
[![Badge Localization]][Crowdin]
[![Badge License]][License]
[![Badge NPM]][NPM]
[![Badge Mozilla]][Mozilla]
[![Badge Chrome]][Chrome]
[![Badge Edge]][Edge]
[![Commit rate](https://img.shields.io/github/commit-activity/m/gorhill/ublock?label=Commits)](https://github.com/gorhill/uBlock/commits/master)
[![Issues](https://img.shields.io/github/issues/uBlockOrigin/uBlock-issues)](https://github.com/uBlockOrigin/uBlock-issues/issues)
[![Crowdin](https://d322cqt584bo4o.cloudfront.net/ublock/localized.svg)](https://crowdin.com/project/ublock)
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://github.com/gorhill/uBlock/blob/master/LICENSE.txt)
[![NPM](https://img.shields.io/npm/v/@gorhill/ubo-core)](https://www.npmjs.com/package/@gorhill/ubo-core)
[![Mozilla Add-ons](https://img.shields.io/amo/rating/ublock-origin?label=Firefox)](https://addons.mozilla.org/firefox/addon/ublock-origin/)
[![Chrome Web Store](https://img.shields.io/chrome-web-store/rating/cjpalhdlnbpafiamejdnhcphjbkeiagm?label=Chrome)](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm)
***
***
<h1 align="center">
<sub>
<img src="https://github.com/gorhill/uBlock/blob/master/src/img/ublock.svg" height="38" width="38">
<img src="https://raw.githubusercontent.com/gorhill/uBlock/master/doc/img/icon38@2x.png" height="38" width="38">
</sub>
uBlock Origin (uBO)
uBlock Origin
</h1>
| 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.
<p align="center">
<sup> <!-- Pronounciation -->
pronounced <i>you-block origin</i> (<code>/ˈjuːˌblɒk/</code>) — <i>you</i> decide what enters your browser.
</sup>
<br>
<sub><a href="https://github.com/gorhill/uBlock/wiki/uBlock-Origin-is-completely-unrelated-to-the-web-site-ublock.org"><b>BEWARE!</b> uBlock Origin is (and has always been) COMPLETELY UNRELATED to the web site <code>ublock.org</code></a>.</sub>
</p>
***
uBlock Origin (uBO) is a CPU and memory-efficient [wide-spectrum content blocker][Blocking] for Chromium and Firefox. It blocks ads, trackers, coin miners, popups, annoying anti-blockers, malware sites, etc., by default using [EasyList][EasyList], [EasyPrivacy][EasyPrivacy], [Peter Lowe's Blocklist][Peter Lowe's Blocklist], [Online Malicious URL Blocklist][Malicious Blocklist], and uBO [filter lists][uBO Filters]. There are many other lists available to block even more. Hosts files are also supported. uBO uses the EasyList filter syntax and [extends][Extended Syntax] the syntax to work with custom rules and filters.
<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://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>
<a href="https://microsoftedge.microsoft.com/addons/detail/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>
<br><sub><a href="https://twitter.com/gorhill/status/1033706103782170625">Do <b>not</b> use uBlock Origin along with other similarly-purposed blockers</a>.</sub>
<br><sub>See below for <a href="#installation">more installation options.</a></sub>
</p>
You may easily unselect any preselected filter lists if you think uBO blocks too much. For reference, Adblock Plus installs with only EasyList, ABP filters, and Acceptable Ads enabled by default.
***
It is important to note that using a blocker is **NOT** [theft]. Do not fall for this creepy idea. The _ultimate_ logical consequence of `blocking = theft` is the criminalization of the inalienable right to privacy.
**An efficient blocker add-on for various browsers. Fast, potent, and lean.**
Ads, "unintrusive" or not, are just the visible portion of the privacy-invading means entering your browser when you visit most sites. **uBO's primary goal is to help users neutralize these privacy-invading methods** in a way that welcomes those users who do not wish to use more technical means.
uBlock Origin is **NOT** an "ad blocker": [it is a wide-spectrum blocker](https://github.com/gorhill/uBlock/wiki/Blocking-mode) -- 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_](https://easylist.github.io/#easylist), [_EasyPrivacy_](https://easylist.github.io/#easyprivacy), [_Peter Lowes ad/tracking/malware servers_](https://pgl.yoyo.org/adservers/policy.php), [_Online Malicious URL Blocklist_](https://gitlab.com/curben/urlhaus-filter#urlhaus-malicious-url-blocklist), and uBlock Origin's [own filter lists](https://github.com/uBlockOrigin/uAssets/tree/master/filters).
***
* [Documentation](#documentation)
* [Purpose & General Info](#philosophy)
* [Installation](#installation)
* [Firefox](#firefox)
* [Thunderbird](#thunderbird)
* [Chromium](#chromium)
* [All Programs](#all-programs)
* [Enterprise Deployment](#enterprise-deployment)
* [Firefox](#firefox--firefox-for-android)
* [Microsoft Edge](#microsoft-edge)
- [Safari (macOS)](#safari-macos)
* [Release History](#release-history)
* [Translations](#translations)
* [About](#about)
* [Privacy policy](https://github.com/gorhill/uBlock/wiki/Privacy-policy)
* [Wiki](https://github.com/gorhill/uBlock/wiki)
## Documentation
<table>
<thead>
<tr>
<th>Basic Mode</th>
<th>Advanced Mode</th>
</tr>
</thead>
<tbody>
<tr>
<td>The <a href="https://github.com/gorhill/uBlock/wiki/Quick-guide:-popup-user-interface">simple popup user interface</a> for an install-it-and-forget-it type of installation that is configured optimally by default.</td>
<td>The <a href="https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-quick-guide">advanced popup user interface</a> includes a point-and-click firewall that is configurable on a per-site basis.</td>
</tr>
<tr>
<td align="center" valign="top"><a href="https://github.com/gorhill/uBlock/wiki/Quick-guide:-popup-user-interface"><img src="https://user-images.githubusercontent.com/585534/232531044-c4ac4dd5-0b60-4c1e-aabb-914be04b846c.png"/></a></td>
<td align="center" valign="top"><a href="https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-quick-guide"><img src="https://user-images.githubusercontent.com/585534/232531439-a8f81cc3-6622-45c4-8b32-7348cecf6e98.png"/></a></td>
</tr>
</tbody>
</table>
Basic mode | Advanced-user mode
:----------:|:------------------:
[Popup user interface](https://github.com/gorhill/uBlock/wiki/Quick-guide:-popup-user-interface) | [A point-and-click firewall which can be configured on a per-site basis](https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-quick-guide)
<a href="https://github.com/gorhill/uBlock/wiki/Quick-guide:-popup-user-interface"><img src="https://user-images.githubusercontent.com/585534/84045360-b10ee580-a976-11ea-9e91-29c2107b47c2.png" /></a><br><sup>.<br>.</sup> | <a href="https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-quick-guide"><img src="https://user-images.githubusercontent.com/585534/84045366-b1a77c00-a976-11ea-9121-e8c8f35c66c8.png" /></a><br><sup>Configure as you wish:<br>picture shows 3rd-party scripts and frames blocked by default everywhere</sup>
Visit the [Wiki][Wiki] for documentation.
Visit the [uBlock Origin's wiki](https://github.com/gorhill/uBlock/wiki) for documentation.
For support, questions, or help, visit [/r/uBlockOrigin][Reddit].
For support/questions/help, there is [/r/uBlockOrigin](https://www.reddit.com/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](https://adblockplus.org/en/filters). uBlock Origin [extends](https://github.com/gorhill/uBlock/wiki/Filter-syntax-extensions) the syntax and is designed to work with custom rules and filters. Furthermore, advanced mode allows uBlock Origin to work in [default-deny mode](https://github.com/gorhill/uBlock/wiki/Dynamic-filtering:-default-deny), which mode will cause [all 3rd-party network requests](https://requestpolicycontinued.github.io/#what-are-cross-site-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](https://twitter.com/LeaVerou/status/518154828166725632). 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](https://github.com/gorhill/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_, _ABP filters_ and _Acceptable Ads_ enabled by default.
## Installation
[Required Permissions][Permissions]
#### Firefox
[Firefox Add-ons][Mozilla]
[Development Builds][Beta]
uBO [works best][Works Best] on Firefox and is available for desktop and Android versions.
#### Thunderbird
[Thunderbird Add-ons][Thunderbird]
In Thunderbird, uBlock Origin does not affect emails, just feeds.
Feel free to read [about the extension's required permissions](https://github.com/gorhill/uBlock/wiki/Permissions).
#### Chromium
[Chrome Web Store][Chrome]
You can install the latest version [manually](https://github.com/gorhill/uBlock/tree/master/dist#install), from the [Chrome Web Store](https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm), or from the [Opera add-ons](https://addons.opera.com/extensions/details/ublock/).
[Microsoft Edge Add-ons][Edge] (Published by [Nicole Rolls][Nicole Rolls] until version 1.62. Ownership transfer at version 1.64.)
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_](https://chrome.google.com/webstore/detail/ublock-origin-dev-build/cgbcahbpdhpcegmbfconppldiemgcoii).
[Opera Add-ons][Opera]
It is expected that uBlock Origin is compatible with any Chromium-based browsers.
[Development Builds][Chrome Dev]
#### Firefox / Firefox for Android
uBO should be compatible with any Chromium-based browser.
[Firefox Add-ons web site](https://addons.mozilla.org/addon/ublock-origin/).
#### All Programs
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](https://github.com/gorhill/uBlock/blob/master/dist/README.md#for-beta-version)
Do **NOT** use uBO with any other content blocker. uBO [performs][Performance] as well as or better than most popular blockers. Other blockers can prevent uBO's privacy or anti-blocker-defusing features from working correctly.
uBlock Origin is compatible with [SeaMonkey](http://www.seamonkey-project.org/), [Pale Moon](https://www.palemoon.org/), and possibly other browsers based on Firefox: for installation, see [Install / Firefox legacy](https://github.com/gorhill/uBlock/blob/master/dist/README.md#firefox-legacy).
[Manual Installation][Manual Installation]
uBO may also be installed as a [Debian package](https://packages.debian.org/stable/source/ublock-origin):
#### Enterprise Deployment
- Firefox 56-: `apt-get install xul-ext-ublock-origin`
- Firefox 55+: `apt-get install webext-ublock-origin`
[Deploying uBO][Deployment]
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](https://addons.mozilla.org/addon/ublock-origin/).
#### Microsoft Edge
Publisher: [Nik Rolls](https://github.com/nikrolls/uBlock-Edge).
Chromium-based Edge: Stable version available in [Microsoft Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/odfafepnkmbhccpbejgmiehpchacaeak).
#### Safari (macOS)
Developer: [@el1t](https://github.com/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](https://www.debugbear.com/blog/chrome-extension-performance-2021#how-do-ad-blockers-and-privacy-tools-affect-browser-performance) 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:
- [Deploying uBlock Origin](https://github.com/gorhill/uBlock/wiki/Deploying-uBlock-Origin)
- Firefox: [Deploying uBlock Origin for Firefox with CCK2 and Group Policy](http://decentsecurity.com/ublock-for-firefox-deployment/) (external)
- Google Chrome: [Managing Google Chrome with adblocking and security](https://decentsecurity.com/ublock-for-google-chrome-deployment/) (external)
## Release History
[Releases Page][Releases]
## Translations
Help translate uBO via [Crowdin][Crowdin].
See the [releases pages](https://github.com/gorhill/uBlock/releases) for a history of releases and highlights for each release.
## About
[Manifesto][Manifesto]
[uBlock Origin's manifesto](MANIFESTO.md).
[Privacy Policy][Privacy Policy]
Free. Open source. For users by users. No donations sought.
[GPLv3 License][License]
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.
Free. Open-source. For users by users. No donations sought.
You can contribute by helping translate uBlock Origin [on Crowdin](https://crowdin.net/project/ublock).
If you ever want to contribute something, think about the people working hard to maintain the filter lists you are using, which are available to use by all for free.
## License
<!----------------------------------------------------------------------------->
[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-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://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://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm
[Reddit]: https://www.reddit.com/r/uBlockOrigin/
[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
[Manifesto]: MANIFESTO.md
[License]: LICENSE.txt
[Nicole Rolls]: https://github.com/nicole-ashley
<!---------------------------------[ Internal ]-------------------------------->
[Manual Installation]: https://github.com/gorhill/uBlock/tree/master/dist#install
[Extended Syntax]: https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#extended-syntax
[Privacy Policy]: https://github.com/gorhill/uBlock/wiki/Privacy-policy
[uBO Filters]: https://github.com/uBlockOrigin/uAssets/tree/master/filters
[Permissions]: https://github.com/gorhill/uBlock/wiki/Permissions
[Commit Rate]: https://github.com/gorhill/uBlock/commits/master
[Works Best]: https://github.com/gorhill/uBlock/wiki/uBlock-Origin-works-best-on-Firefox
[Deployment]: https://github.com/gorhill/uBlock/wiki/Deploying-uBlock-Origin
[Blocking]: https://github.com/gorhill/uBlock/wiki/Blocking-mode
[Releases]: https://github.com/gorhill/uBlock/releases
[Issues]: https://github.com/uBlockOrigin/uBlock-issues/issues
[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
[Badge Commits]: https://img.shields.io/github/commit-activity/m/gorhill/ublock?label=Commits
[Badge Mozilla]: https://img.shields.io/amo/rating/ublock-origin?label=Firefox
[Badge License]: https://img.shields.io/badge/License-GPLv3-blue.svg
[Badge Chrome]: https://img.shields.io/chrome-web-store/rating/cjpalhdlnbpafiamejdnhcphjbkeiagm?label=Chrome
[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
[GPLv3](https://github.com/gorhill/uBlock/blob/master/LICENSE.txt).

View file

@ -1,87 +0,0 @@
## Renamed/removed assets
For convenience, list of commits of renamed/removed assets, so that they can be
more easily found.
Use the _Before_ link to browse the repo before the rename/removal of assets.
#### 2022-10-28
Removed:
- ./doc/
Git:
- After: https://github.com/gorhill/uBlock/tree/ba637bb22e48f98383b9f1191a0c30e965475068
- Commit: https://github.com/gorhill/uBlock/commit/ba637bb22e48f98383b9f1191a0c30e965475068
- Before: https://github.com/gorhill/uBlock/tree/6c046ed95cd02d023453c66f766159f6410ae7f7
#### 2022-05-08
Removed:
- ./src/css/popup.css
- ./src/js/popup.js
- ./src/popup.html
Git:
- After: https://github.com/gorhill/uBlock/tree/cef36518edd4d6ca4b3278493cb93329b0833408
- Commit: https://github.com/gorhill/uBlock/commit/cef36518edd4d6ca4b3278493cb93329b0833408
- Before: https://github.com/gorhill/uBlock/tree/cef36518edd4d6ca4b3278493cb93329b0833408
#### 2021-07-16
Moved:
- ./platform/chromium/ => ./platform/common/
Git:
- After: https://github.com/gorhill/uBlock/tree/a4aced69dc814befcbb57ff1cc04bee307f2c131
- Commit: https://github.com/gorhill/uBlock/commit/a4aced69dc814befcbb57ff1cc04bee307f2c131
- Before: https://github.com/gorhill/uBlock/tree/ec7db30b2f4ff492ebc2a87ded28afa74aa50948
#### 2019-09-19
Removed:
- ./platform/safari/*
Git:
- After: https://github.com/gorhill/uBlock/tree/149b5cf59cc760fa98c9753f4b4ec12d4b884d9a
- Commit: https://github.com/gorhill/uBlock/commit/149b5cf59cc760fa98c9753f4b4ec12d4b884d9a
- Before: https://github.com/gorhill/uBlock/tree/917f3620e0c08b722bbd4d400bca2735d9f6975f
#### 2014-11-24
Moved:
- ./meta/crx/ => ./platform/chromium/
Git:
- After: https://github.com/gorhill/uBlock/tree/a430e526b6b72182a07cca94822861da7fbdf77b
- Commit: https://github.com/gorhill/uBlock/commit/a430e526b6b72182a07cca94822861da7fbdf77b
- Before: https://github.com/gorhill/uBlock/tree/266f62914fab3a9ae5d01fa808b9e7a68e948777
#### 2014-11-09
Moved:
- ./*.html => ./src/
- ./*.sh => ./tools/
- ./_locales/ => ./src/_locales/
- ./assets => ./src/assets/
- ./css/ => ./src/css/
- ./img/ => ./src/img/
- ./js/ => ./src/js/
- ./lib/ => ./src/lib/
Git:
- After: https://github.com/gorhill/uBlock/tree/5b79bf353647a4dad9d4968d0f246582744f07bc
- Commit: https://github.com/gorhill/uBlock/commit/5b79bf353647a4dad9d4968d0f246582744f07bc
- Before: https://github.com/gorhill/uBlock/tree/96c4e2e2565ffbd7d413ed7721d9610772b03859

View file

@ -1,996 +0,0 @@
{
"assets.json": {
"content": "internal",
"updateAfter": 13,
"contentURL": [
"https://raw.githubusercontent.com/gorhill/uBlock/master/assets/assets.dev.json",
"assets/assets.dev.json"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/ublock/assets.dev.json",
"https://ublockorigin.pages.dev/ublock/assets.dev.json",
"https://cdn.jsdelivr.net/gh/gorhill/uBlock@master/assets/assets.dev.json",
"https://cdn.statically.io/gh/gorhill/uBlock/master/assets/assets.dev.json"
]
},
"public_suffix_list.dat": {
"content": "internal",
"updateAfter": 19,
"contentURL": [
"https://publicsuffix.org/list/public_suffix_list.dat",
"assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat"
]
},
"ublock-badlists": {
"content": "internal",
"updateAfter": 29,
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/badlists.txt",
"assets/ublock/badlists.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/badlists.txt",
"https://ublockorigin.pages.dev/filters/badlists.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badlists.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/badlists.txt"
]
},
"ublock-filters": {
"content": "filters",
"group": "default",
"parent": "uBlock filters",
"title": "uBlock filters Ads",
"tags": "ads",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/filters.txt",
"assets/ublock/filters.min.txt",
"assets/ublock/filters.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/filters.min.txt",
"https://ublockorigin.pages.dev/filters/filters.min.txt",
"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": {
"content": "filters",
"group": "default",
"parent": "uBlock filters",
"title": "uBlock filters Badware risks",
"tags": "malware security",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/badware.txt",
"assets/ublock/badware.min.txt",
"assets/ublock/badware.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt",
"https://ublockorigin.pages.dev/filters/badware.min.txt",
"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"
},
"ublock-privacy": {
"content": "filters",
"group": "default",
"parent": "uBlock filters",
"title": "uBlock filters Privacy",
"tags": "privacy",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/privacy.txt",
"assets/ublock/privacy.min.txt",
"assets/ublock/privacy.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/privacy.min.txt",
"https://ublockorigin.pages.dev/filters/privacy.min.txt",
"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": {
"content": "filters",
"group": "default",
"parent": "uBlock filters",
"title": "uBlock filters Unbreak",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/unbreak.txt",
"assets/ublock/unbreak.min.txt",
"assets/ublock/unbreak.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/unbreak.min.txt",
"https://ublockorigin.pages.dev/filters/unbreak.min.txt",
"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": {
"content": "filters",
"group": "default",
"parent": "uBlock filters",
"title": "uBlock filters Quick fixes",
"contentURL": [
"https://ublockorigin.github.io/uAssets/filters/quick-fixes.txt",
"assets/ublock/quick-fixes.min.txt",
"assets/ublock/quick-fixes.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.min.txt",
"https://ublockorigin.pages.dev/filters/quick-fixes.min.txt",
"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": {
"content": "filters",
"group": "ads",
"off": true,
"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"
},
"adguard-mobile": {
"content": "filters",
"group": "ads",
"off": true,
"title": "AdGuard Mobile Ads",
"tags": "ads mobile",
"ua": "mobile",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist": {
"content": "filters",
"group": "ads",
"title": "EasyList",
"tags": "ads",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist.txt",
"assets/thirdparties/easylist/easylist.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist.txt",
"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": {
"content": "filters",
"group": "privacy",
"off": true,
"title": "AdGuard/uBO URL Tracking Protection",
"tags": "privacy",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/privacy-removeparam.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/privacy-removeparam.txt",
"https://ublockorigin.pages.dev/filters/privacy-removeparam.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy-removeparam.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/privacy-removeparam.txt"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"block-lan": {
"content": "filters",
"group": "privacy",
"off": true,
"title": "Block Outsider Intrusion into LAN",
"tags": "privacy security",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/lan-block.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/lan-block.txt",
"https://ublockorigin.pages.dev/filters/lan-block.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/lan-block.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/lan-block.txt"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"easyprivacy": {
"content": "filters",
"group": "privacy",
"title": "EasyPrivacy",
"tags": "privacy",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easyprivacy.txt",
"assets/thirdparties/easylist/easyprivacy.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easyprivacy.txt",
"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": {
"content": "filters",
"group": "malware",
"title": "Online Malicious URL Blocklist",
"contentURL": [
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt",
"assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt"
],
"cdnURLs": [
"https://curbengh.github.io/malware-filter/urlhaus-filter-ag-online.txt",
"https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt",
"https://malware-filter.pages.dev/urlhaus-filter-ag-online.txt"
],
"supportURL": "https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist"
},
"curben-phishing": {
"content": "filters",
"group": "malware",
"off": true,
"title": "Phishing URL Blocklist",
"contentURL": "https://malware-filter.gitlab.io/phishing-filter/phishing-filter.txt",
"cdnURLs": [
"https://curbengh.github.io/phishing-filter/phishing-filter.txt",
"https://malware-filter.gitlab.io/phishing-filter/phishing-filter.txt",
"https://phishing-filter.pages.dev/phishing-filter.txt"
],
"supportURL": "https://gitlab.com/malware-filter/phishing-filter#phishing-url-blocklist"
},
"adguard-cookies": {
"content": "filters",
"group": "annoyances",
"group2": "cookies",
"parent": "AdGuard/uBO Cookie Notices",
"off": true,
"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"
},
"ublock-cookies-adguard": {
"content": "filters",
"group": "annoyances",
"group2": "cookies",
"parent": "AdGuard/uBO Cookie Notices",
"off": true,
"title": "uBlock filters Cookie Notices",
"tags": "annoyances cookies",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt",
"https://ublockorigin.pages.dev/filters/annoyances-cookies.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances-cookies.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances-cookies.txt"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"fanboy-cookiemonster": {
"content": "filters",
"group": "annoyances",
"group2": "cookies",
"parent": "EasyList/uBO Cookie Notices",
"off": true,
"title": "EasyList Cookie Notices",
"tags": "annoyances cookies",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-cookies.txt",
"https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-cookies.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-cookies.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-cookies.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-cookies.txt",
"https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"ublock-cookies-easylist": {
"content": "filters",
"group": "annoyances",
"group2": "cookies",
"parent": "EasyList/uBO Cookie Notices",
"off": true,
"title": "uBlock filters Cookie Notices",
"tags": "annoyances cookies",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt",
"https://ublockorigin.pages.dev/filters/annoyances-cookies.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances-cookies.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/filters/annoyances-cookies.txt"
],
"supportURL": "https://github.com/uBlockOrigin/uAssets"
},
"adguard-social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"parent": null,
"off": true,
"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"
},
"fanboy-social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"parent": null,
"off": true,
"title": "EasyList Social Widgets",
"tags": "annoyances social",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-social.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-social.txt",
"https://secure.fanboy.co.nz/fanboy-social_ubo.txt"
],
"supportURL": "https://easylist.to/"
},
"fanboy-thirdparty_social": {
"content": "filters",
"group": "annoyances",
"group2": "social",
"off": true,
"title": "Fanboy Anti-Facebook",
"tags": "privacy",
"contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt",
"supportURL": "https://github.com/ryanbr/fanboy-adblock/issues"
},
"adguard-popup-overlays": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Popup Overlays",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-mobile-app-banners": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"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"
},
"adguard-other-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Other Annoyances",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"adguard-widgets": {
"content": "filters",
"group": "annoyances",
"parent": "AdGuard Annoyances",
"off": true,
"title": "AdGuard Widgets",
"tags": "annoyances",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"easylist-annoyances": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Other Annoyances",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-annoyances.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-chat": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Chat Widgets",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-chat.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"fanboy-ai-suggestions": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList AI Widgets",
"tags": "annoyances",
"preferred": true,
"contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-ai.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-ai.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-ai.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-ai.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-ai.txt"
],
"supportURL": "https://github.com/easylist/easylist#fanboy-lists"
},
"easylist-newsletters": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Newsletter Notices",
"tags": "annoyances",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-newsletters.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-newsletters.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-newsletters.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-newsletters.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-newsletters.txt"
],
"supportURL": "https://easylist.to/"
},
"easylist-notifications": {
"content": "filters",
"group": "annoyances",
"parent": "EasyList Annoyances",
"off": true,
"title": "EasyList Notifications",
"tags": "annoyances",
"preferred": true,
"contentURL": [
"https://ublockorigin.github.io/uAssets/thirdparties/easylist-notifications.txt"
],
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-notifications.txt",
"https://ublockorigin.pages.dev/thirdparties/easylist-notifications.txt",
"https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-notifications.txt",
"https://cdn.statically.io/gh/uBlockOrigin/uAssetsCDN/main/thirdparties/easylist-notifications.txt"
],
"supportURL": "https://easylist.to/"
},
"ublock-annoyances": {
"content": "filters",
"group": "annoyances",
"off": true,
"title": "uBlock filters Annoyances",
"tags": "annoyances",
"contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances.txt",
"cdnURLs": [
"https://ublockorigin.github.io/uAssetsCDN/filters/annoyances.min.txt",
"https://ublockorigin.pages.dev/filters/annoyances.min.txt",
"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": {
"content": "filters",
"group": "multipurpose",
"updateAfter": 13,
"off": true,
"title": "Dan Pollocks hosts file",
"tags": "ads privacy security",
"contentURL": "https://someonewhocares.org/hosts/hosts",
"supportURL": "https://someonewhocares.org/hosts/"
},
"plowe-0": {
"content": "filters",
"group": "multipurpose",
"updateAfter": 13,
"title": "Peter Lowes Ad and tracking server list",
"tags": "ads privacy security",
"preferred": true,
"contentURL": [
"https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext",
"assets/thirdparties/pgl.yoyo.org/as/serverlist.txt",
"assets/thirdparties/pgl.yoyo.org/as/serverlist"
],
"supportURL": "https://pgl.yoyo.org/adservers/"
},
"ALB-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇦🇱al 🇽🇰xk: Adblock List for Albania",
"tags": "ads albania shqipja",
"lang": "sq",
"contentURL": "https://raw.githubusercontent.com/AnXh3L0/blocklist/master/albanian-easylist-addition/Albania.txt",
"supportURL": "https://github.com/AnXh3L0/blocklist"
},
"ara-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR",
"tags": "ads arabic اَلْعَرَبِيَّةُ‎",
"lang": "ar kab",
"contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=98"
},
"BGR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇧🇬bg: Bulgarian Adblock list",
"tags": "ads bulgarian България macedonian Македонија",
"lang": "bg mk",
"contentURL": "https://stanev.org/abp/adblock_bg.txt",
"supportURL": "https://stanev.org/abp/"
},
"CHN-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇨🇳cn 🇹🇼tw: AdGuard Chinese (中文)",
"tags": "ads chinese 中文",
"lang": "ug zh",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/224.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"CZE-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇨🇿cz 🇸🇰sk: EasyList Czech and Slovak",
"tags": "ads czech česká slovak slovenská",
"lang": "cs sk",
"contentURL": "https://raw.githubusercontent.com/tomasko126/easylistczechandslovak/master/filters.txt",
"supportURL": "https://github.com/tomasko126/easylistczechandslovak"
},
"DEU-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇩🇪de 🇨🇭ch 🇦🇹at: EasyList Germany",
"tags": "ads german deutschland luxembourgish lëtzebuerg romansh",
"lang": "de dsb hsb lb rm",
"contentURL": [
"https://easylist.to/easylistgermany/easylistgermany.txt",
"https://easylist-downloads.adblockplus.org/easylistgermany.txt"
],
"supportURL": "https://forums.lanik.us/viewforum.php?f=90"
},
"EST-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇪🇪ee: Eesti saitidele kohandatud filter",
"tags": "ads estonian",
"lang": "et",
"contentURL": "https://ubo-et.lepik.io/list.txt",
"supportURL": "https://github.com/sander85/uBO-et"
},
"FIN-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇫🇮fi: Adblock List for Finland",
"tags": "ads finnish",
"lang": "fi",
"contentURL": "https://raw.githubusercontent.com/finnish-easylist-addition/finnish-easylist-addition/gh-pages/Finland_adb.txt",
"supportURL": "https://github.com/finnish-easylist-addition/finnish-easylist-addition"
},
"FRA-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇫🇷fr 🇨🇦ca: AdGuard Français",
"tags": "ads french",
"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"
},
"GRC-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇬🇷gr 🇨🇾cy: Greek AdBlock Filter",
"tags": "ads greek",
"lang": "el",
"contentURL": "https://www.void.gr/kargig/void-gr-filters.txt",
"supportURL": "https://github.com/kargig/greek-adblockplus-filter"
},
"HRV-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters",
"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": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇭🇺hu: hufilter",
"tags": "ads hungarian",
"lang": "hu",
"contentURL": "https://cdn.jsdelivr.net/gh/hufilter/hufilter@gh-pages/hufilter-ublock.txt",
"supportURL": "https://github.com/hufilter/hufilter"
},
"IDN-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇮🇩id 🇲🇾my: ABPindo",
"tags": "ads indonesian malay",
"lang": "id ms",
"contentURL": "https://raw.githubusercontent.com/ABPindo/indonesianadblockrules/master/subscriptions/abpindo.txt",
"supportURL": "https://github.com/ABPindo/indonesianadblockrules"
},
"IND-0": {
"content": "filters",
"group": "regions",
"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 sat si ta te",
"contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt",
"supportURL": "https://github.com/mediumkreation/IndianList"
},
"IRN-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇮🇷ir: PersianBlocker",
"tags": "ads af ir persian pashto tajik tj",
"lang": "fa ps tg",
"contentURL": [
"https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt",
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt"
],
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/MasterKia/PersianBlocker@main/PersianBlocker.txt",
"https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt"
],
"supportURL": "https://github.com/MasterKia/PersianBlocker"
},
"ISL-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇮🇸is: Icelandic ABP List",
"tags": "ads icelandic",
"lang": "is",
"contentURL": "https://raw.githubusercontent.com/brave/adblock-lists/master/custom/is.txt",
"supportURL": "https://github.com/brave/adblock-lists/issues"
},
"ISR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇮🇱il: EasyList Hebrew",
"tags": "ads hebrew",
"lang": "he",
"contentURL": "https://raw.githubusercontent.com/easylist/EasyListHebrew/master/EasyListHebrew.txt",
"supportURL": "https://github.com/easylist/EasyListHebrew"
},
"ITA-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇮🇹it: EasyList Italy",
"tags": "ads italian",
"lang": "fur it lij sc",
"contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=96"
},
"JPN-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇯🇵jp: AdGuard Japanese",
"tags": "ads japanese 日本語",
"lang": "ja",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt",
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"KOR-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇰🇷kr: List-KR",
"tags": "ads korean 한국어",
"lang": "ko",
"contentURL": "https://cdn.jsdelivr.net/gh/List-KR/List-KR@latest/filter-uBlockOrigin.txt",
"supportURL": "https://github.com/List-KR/List-KR#readme"
},
"LTU-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇱🇹lt: EasyList Lithuania",
"tags": "ads lithuanian",
"lang": "lt",
"contentURL": "https://raw.githubusercontent.com/EasyList-Lithuania/easylist_lithuania/master/easylistlithuania.txt",
"cdnURLs": [
"https://cdn.jsdelivr.net/gh/EasyList-Lithuania/easylist_lithuania@master/easylistlithuania.txt",
"https://cdn.statically.io/gh/EasyList-Lithuania/easylist_lithuania/master/easylistlithuania.txt"
],
"supportURL": "https://github.com/EasyList-Lithuania/easylist_lithuania"
},
"LVA-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇱🇻lv: Latvian List",
"tags": "ads latvian",
"lang": "lv",
"contentURL": "https://raw.githubusercontent.com/Latvian-List/adblock-latvian/master/lists/latvian-list.txt",
"supportURL": "https://github.com/Latvian-List/adblock-latvian"
},
"MKD-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇲🇰mk: Macedonian adBlock Filters",
"tags": "ads macedonian",
"lang": "mk",
"contentURL": "https://raw.githubusercontent.com/DeepSpaceHarbor/Macedonian-adBlock-Filters/master/Filters",
"supportURL": "https://github.com/DeepSpaceHarbor/Macedonian-adBlock-Filters"
},
"NLD-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇳🇱nl 🇧🇪be: AdGuard Dutch",
"tags": "ads afrikaans be belgië frisian dutch flemish nederlands netherlands nl sr suriname za",
"lang": "af fy nl",
"contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt",
"cdnURLs": null,
"supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters"
},
"NOR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇳🇴no 🇩🇰dk 🇮🇸is: Dandelion Sprouts nordiske filtre",
"tags": "ads norwegian danish icelandic",
"lang": "nb nn no da is",
"contentURL": [
"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"
],
"supportURL": "https://github.com/DandelionSprout/adfilt"
},
"POL-0": {
"content": "filters",
"group": "regions",
"parent": "🇵🇱pl: Oficjalne Polskie Filtry",
"off": true,
"title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin",
"tags": "ads polish polski",
"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"
},
"POL-3": {
"content": "filters",
"group": "regions",
"parent": "🇵🇱pl: Oficjalne Polskie Filtry",
"off": true,
"title": "🇵🇱pl: CERT.PL's Warning List",
"tags": "malware polish polski",
"lang": "szl pl",
"contentURL": "https://hole.cert.pl/domains/v2/domains_ublock.txt",
"supportURL": "https://cert.pl/lista-ostrzezen/"
},
"ROU-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇷🇴ro 🇲🇩md: Romanian Ad (ROad) Block List Light",
"tags": "ads romanian română moldavian moldovenească молдовеняскэ",
"lang": "ro",
"contentURL": [
"https://raw.githubusercontent.com/tcptomato/ROad-Block/master/road-block-filters-light.txt"
],
"supportURL": "https://github.com/tcptomato/ROad-Block"
},
"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 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",
"https://cdn.statically.io/gh/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt",
"https://raw.githubusercontent.com/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt"
],
"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",
"off": true,
"title": "🇪🇸es 🇦🇷ar 🇲🇽mx 🇨🇴co: EasyList Spanish",
"tags": "ads aragonese basque catalan spanish español galician guarani",
"lang": "an ast ca cak es eu gl gn trs quz",
"contentURL": "https://easylist-downloads.adblockplus.org/easylistspanish.txt",
"supportURL": "https://forums.lanik.us/viewforum.php?f=103"
},
"spa-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇪🇸es 🇦🇷ar 🇧🇷br 🇵🇹pt: AdGuard Spanish/Portuguese",
"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"
},
"SVN-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇸🇮si: Slovenian List",
"tags": "ads slovenian slovenski",
"lang": "sl",
"contentURL": "https://raw.githubusercontent.com/betterwebleon/slovenian-list/master/filters.txt",
"supportURL": "https://github.com/betterwebleon/slovenian-list"
},
"SWE-1": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇸🇪se: Frellwit's Swedish Filter",
"tags": "ads swedish svenska",
"lang": "sv",
"contentURL": "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Filter.txt",
"cdnURLs": [
"https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/swefilter/swefilter.min.txt",
"https://cdn.jsdelivr.net/gh/lassekongo83/Frellwits-filter-lists@swefilter/swefilter.min.txt"
],
"supportURL": "https://github.com/lassekongo83/Frellwits-filter-lists"
},
"THA-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇹🇭th: EasyList Thailand",
"tags": "ads thai ไทย",
"lang": "th",
"contentURL": "https://raw.githubusercontent.com/easylist-thailand/easylist-thailand/master/subscription/easylist-thailand.txt",
"supportURL": "https://github.com/easylist-thailand/easylist-thailand"
},
"TUR-0": {
"content": "filters",
"group": "regions",
"off": true,
"title": "🇹🇷tr: AdGuard Turkish",
"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"
},
"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",
"group": "regions",
"off": true,
"title": "🇻🇳vn: ABPVN List",
"tags": "ads vietnamese việt",
"lang": "vi",
"contentURL": "https://raw.githubusercontent.com/abpvn/abpvn/master/filter/abpvn_ublock.txt",
"supportURL": "https://abpvn.com/"
}
}

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

137
dist/README.md vendored
View file

@ -1,103 +1,78 @@
# INSTALL
## INSTALL
## Chromium
### Chromium
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*.
- 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*.
The extension will now be available in your Chromium/Chromium-based browser.
The extension will now be available in your chromium/chromium-based browser.
**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.
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
## Firefox
### Firefox
Compatible with Firefox 52 and beyond.
Compatible with Firefox 52 and beyond.
### For Stable Release Version
#### For stable release version
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>
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>
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.
- 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
### 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
```
When you uninstall the extension, Firefox deletes this file, and all your settings will be lost.
On Linux, the settings are saved in a JSON file located at `~/.mozilla/firefox/[profile name]/browser-extension-data/uBlock0@raymondhill.net/storage.js`.
### Firefox Legacy
When you uninstall the extension, Firefox deletes that file, so all your settings are lost when you uninstall.
Compatible with Firefox 24-56, [Pale Moon](https://www.palemoon.org/), and [SeaMonkey](https://www.seamonkey-project.org/).
### Firefox legacy
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.
Compatible with Firefox 24-56, [Pale Moon](https://www.palemoon.org/) and [SeaMonkey](http://www.seamonkey-project.org/).
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>
- 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
Your uBlock Origin settings are preserved even after uninstalling the addon.
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>
- 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
```
Your uBlock Origin settings are kept intact even after you uninstall the addon.
## Build Instructions (for Developers)
On Linux, the settings are saved in a SQlite file located at `~/.mozilla/firefox/[profile name]/extension-data/ublock0.sqlite`.
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/`
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](https://github.com/gorhill/uBlock) and [uAssets](https://github.com/uBlockOrigin/uAssets) repositories in the same parent directory
- `git clone https://github.com/gorhill/uBlock.git`
- `git clone https://github.com/uBlockOrigin/uAssets.git`
- Set path to uBlock: `cd uBlock`
- The official version of uBO is in the `master` branch
- `git checkout master`
- Build the plugin:
- Chromium: `./tools/make-chromium.sh`
- Firefox webext: `./tools/make-firefox.sh all`
- Firefox legacy:
- `git checkout firefox-legacy`
- `./tools/make-firefox-legacy.sh all`
- Load the result of the build into your browser:
- Chromium: load the unpacked extension folder `/uBlock/dist/build/uBlock0.chromium/` in Chromium to use the extension.
- Firefox: drag-and-drop `/uBlock/dist/build/uBlock0.firefox.xpi` or `/uBlock/dist/build/uBlock0.firefox-legacy.xpi` into Firefox.

192
dist/chromium/publish-beta.py vendored Executable file
View file

@ -0,0 +1,192 @@
#!/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 distutils.version import StrictVersion
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 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 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,49 +0,0 @@
Səmərəli bir əngəlləyici: yaddaş və prosessor yükünü artırmadığı halda digər məşhur əngəlləyicilərlə müqayisədə minlərlə daha çox filtri dəstəkləyir.
Proqramın səmərəliliyinə dair ümumi əyani məlumat: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
İstifadə: Açılan pəncərədəki böyük açar düyməsi uBlock₀-u cari veb-saytda işə salmaq/dayandırmaq üçündür. Bu zaman uBlock₀ bütün veb-saytlarda deyil, yalnız cari veb-saytda işə düşür/dayandırılır.
***
Uyuşqan olmaqla yanaşı, uBlock₀ adi reklam əngəlləyicisindən fərqli olaraq domen adlarının olduğu faylları oxuya və yarada bilir.
Standart rejimdə aşağıdakı filtr siyahıları yüklənəcək və tətbiq olunacaq:
- EasyList
- Peter Lowe-dan reklam serverləri siyahısı
- EasyPrivacy
- Zərərli domenlər
Əlavə olaraq aşağıdakı siyahıları da seçə bilərsiniz:
- Fanboy-dan izləmə serverlərinin genişləndirilmiş siyahısı
- Dan Pollock-dan veb-domenlər faylı
- hpHosts reklam və izləmə serverləri siyahısı
- MVPS veb-domenləri
- Spam404
- Və bir çox başqaları
Təbii ki, hər yeni seçilən filtrlər siyahısı yaddaş yükünü də artırır. Buna baxmayaraq, Fanboy-dan iki əlavə siyahı və hpHosts reklam və izləmə serverləri siyahısını seçsəniz belə, uBlock₀ digər məşhur reklam əngəlləyicilərindən fərqli olaraq yaddaşda daha az yer tutur.
Həmçinin nəzərə alın ki, əlavə siyahıların bəzisini -- xüsusən tərkibində domen adları olan siyahıları seçdikdə, veb-saytın düzgün yüklənməməsi ehtimalı da artır.
***
Əvvəldən quraşdırılmış filtr siyahıları olmadan, uBlock₀ heç bir işə yaramır. Ona görə də, əgər siz həqiqətən bir töfhə vermək istəyirsinizsə, hər kəsin istifadəsinə pulsuz təqdim olunan filtr siyahılarını yorulmadan dəstəkləyən insanlar haqqında düşünün.
***
Pulsuz.
Ümumi lisenziyalı (GPLv3) açıq mənbə kodu.
İstifadəçilər tərəfindən istifadəçilər üçün.
Github-a qoşulan iştirakçılarımız: https://github.com/gorhill/uBlock/graphs/contributors
Crowdin-ə qoşulan iştirakçılarımız: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Layihəyə edilmiş dəyişikliklərin siyahısı:
https://github.com/gorhill/uBlock/releases

View file

@ -1,33 +1,51 @@
uBlock Origin (uBO) is a CPU and memory-efficient wide-spectrum content blocker that blocks ads, trackers, coin miners, popups, annoying anti-blockers, etc., using the following list of filters, enabled by default:
An efficient blocker: Fast, potent and lean, and yet can load and enforce thousands more filters than other popular blockers out there.
- EasyList (ads)
- EasyPrivacy (tracking)
- Peter Lowe's Blocklist
- Online Malicious URL Blocklist
- uBO filter lists
Illustrated overview of its efficiency: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Usage: The big power button in the popup is to permanently disable/enable uBlock for the current web site. It applies to the current web site only, it is not a global power button.
***
Flexible, it's more than an "ad blocker": it can also read and create filters from hosts files.
Out of the box, these lists of filters are loaded and enforced:
- EasyList
- Peter Lowes Ad server list
- EasyPrivacy
- Malware domains
More lists are available for you to select if you wish:
- EasyList Cookie List
- Fanboy's Annoyance List
- AdGuard Annoyances
- Fanboys Enhanced Tracking List
- Dan Pollocks hosts file
- hpHostss Ad and tracking servers
- MVPS HOSTS
- Spam404
- And many others
Additionally, you can point-and-click to block JavaScript locally or globally, create your own global or local rules to override entries from filter lists, and many more advanced features.
Of course, the more filters enabled, the higher the memory footprint. Yet, even after adding Fanboy's two extra lists, hpHostss Ad and tracking servers, uBlock Origin still has a lower memory footprint than other very popular blockers out there.
Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file.
***
Free. Open source with public license (GPLv3). For users by users. No donations sought.
Free.
Open source with public license (GPLv3)
For users by users.
If you ever 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 help contribute by translating uBO on Crowdin.
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.
***
[Documentation](https://github.com/gorhill/uBlock#ublock-origin-ubo)
[Release Notes](https://github.com/gorhill/uBlock/releases)
[Support Forum on Reddit](https://www.reddit.com/r/uBlockOrigin/)
[Contributors on GitHub](https://github.com/gorhill/uBlock/graphs/contributors)
[Contribute on Crowdin](https://crowdin.com/project/ublock)
Documentation:
https://github.com/gorhill/uBlock#ublock-origin
Project change log:
https://github.com/gorhill/uBlock/releases
Contributors @ GitHub:
https://github.com/gorhill/uBlock/graphs/contributors
Contributors @ Crowdin:
https://crowdin.net/project/ublock

View file

@ -1,49 +0,0 @@
An efficient blocker: easy on memory and CPU footprint, and yet can load and enforce thousands more filters than other popular blockers out there.
Illustrated overview of its efficiency: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Usage: The big power button in the popup is to permanently disable/enable uBlock for the current web site. It applies to the current web site only, it is not a global power button.
***
Flexible, it's more than an "ad blocker": it can also read and create filters from hosts files.
Out of the box, these lists of filters are loaded and enforced:
- EasyList
- Peter Lowes Ad server list
- EasyPrivacy
- Malware domains
More lists are available for you to select if you wish:
- Fanboys Enhanced Tracking List
- Dan Pollocks hosts file
- hpHostss Ad and tracking servers
- MVPS HOSTS
- Spam404
- And many others
Of course, the more filters enabled, the higher the memory footprint. Yet, even after adding Fanboy's two extra lists, hpHostss Ad and tracking servers, uBlock still has a lower memory footprint than other very popular blockers out there.
Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file.
***
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.
***
Free.
Open source with public license (GPLv3)
For users by users.
Contributors @ Github: https://github.com/gorhill/uBlock/graphs/contributors
Contributors @ Crowdin: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Project change log:
https://github.com/gorhill/uBlock/releases

View file

@ -1,49 +0,0 @@
Ефикасен блокер: лесен на меморија и процесор, но сепак може да вчита и да наметне илјадници филтри повеќе од другите популарни блокери.
Илустриран преглед на ефикасноста: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Користење: Големото копче за "струја" во попапот се користи за трајно да се исклучи/уклучи уБлок за моменталниот веб сајт. Се однесува само на моменталниот веб-страница, не е копче за глобално вклучување/исклучување.
***
Флексибилно, може да биде повеќе од само "блокирач на реклами": може исто да чита и прави филтери од хост фајлови.
Без подесување, овие списоци на филтри се вчитуваат и се присилуваат:
- EasyList (ИзиЛиста)
- Peter Lowes Ad server list (Peter Lowes листа на рекламни сервери)
- EasyPrivacy (ЛеснаПриватност)
- Домени на малвер
Повеќе листи се достапни за вас да ги одберете ако сакате:
- Fanboys Enhanced Tracking List
- Dan Pollocks hosts file
- hpHostss Ad and tracking servers
- MVPS HOSTS
- Spam404
- и много други
Се разбира, што повеќе филтри се enabled, поголема ќе биде зафатената меморија. Yet, even after adding Fanboy's two extra lists, hpHostss Ad and tracking servers, uBlock still has a lower memory footprint than other very popular blockers out there.
Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file.
***
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.
***
Бесплатно.
Отворен изворен код со јавна лиценза (ГПЛв3)
За корисници од корисници.
Соработници @ Гитхаб: https://github.com/gorhill/uBlock/graphs/contributors
Преведување @ Crowdin: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Project change log:
https://github.com/gorhill/uBlock/releases

View file

@ -1,49 +0,0 @@
An efficient blocker: easy on memory and CPU footprint, and yet can load and enforce thousands more filters than other popular blockers out there.
Illustrated overview of its efficiency: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Usage: The big power button in the popup is to permanently disable/enable uBlock for the current web site. It applies to the current web site only, it is not a global power button.
***
Flexible, it's more than an "ad blocker": it can also read and create filters from hosts files.
Out of the box, these lists of filters are loaded and enforced:
- EasyList
- Peter Lowes Ad server list
- EasyPrivacy
- Malware domains
More lists are available for you to select if you wish:
- Fanboys Enhanced Tracking List
- Dan Pollocks hosts file
- hpHostss Ad and tracking servers
- MVPS HOSTS
- Spam404
- And many others
Of course, the more filters enabled, the higher the memory footprint. Yet, even after adding Fanboy's two extra lists, hpHostss Ad and tracking servers, uBlock still has a lower memory footprint than other very popular blockers out there.
Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file.
***
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.
***
Free.
Open source with public license (GPLv3)
For users by users.
Contributors @ Github: https://github.com/gorhill/uBlock/graphs/contributors
Contributors @ Crowdin: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Project change log:
https://github.com/gorhill/uBlock/releases

View file

@ -1,49 +0,0 @@
An efficient blocker: easy on memory and CPU footprint, and yet can load and enforce thousands more filters than other popular blockers out there.
Illustrated overview of its efficiency: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Usage: The big power button in the popup is to permanently disable/enable uBlock for the current web site. It applies to the current web site only, it is not a global power button.
***
Flexible, it's more than an "ad blocker": it can also read and create filters from hosts files.
Out of the box, these lists of filters are loaded and enforced:
- EasyList
- Peter Lowes Ad server list
- EasyPrivacy
- Malware domains
More lists are available for you to select if you wish:
- Fanboys Enhanced Tracking List
- Dan Pollocks hosts file
- hpHostss Ad and tracking servers
- MVPS HOSTS
- Spam404
- And many others
Of course, the more filters enabled, the higher the memory footprint. Yet, even after adding Fanboy's two extra lists, hpHostss Ad and tracking servers, uBlock still has a lower memory footprint than other very popular blockers out there.
Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file.
***
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.
***
Free.
Open source with public license (GPLv3)
For users by users.
Contributors @ Github: https://github.com/gorhill/uBlock/graphs/contributors
Contributors @ Crowdin: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Project change log:
https://github.com/gorhill/uBlock/releases

View file

@ -1,49 +0,0 @@
Kizuizi kinachofaa: nyepesi kwenye kumbukumbu na nyayo za CPU, na bado inawezapakia na kuamrisha maelfu ya vichujio kuliko vizuizi vingine.
Kielelezo cha ufanisi wake: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Utumiaji: Kitufe kikubwa cha nishati kinalemaza/kuwezesha kabisa uBlock kwenye tovuti ya sasa. Inatekelezeka kwenye tovutio ya sasa pekee, si kitufe cha kila mahali.
***
Inawezabadilishwa, na ni zaidi ya "kizuizi cha matangazo": inawezasoma na kuunda vichujio kutoka faili za wenyeji.
Punde inapoanza kutumiwa, vichujio hivi vinapakiwa na kuamrishwa:
- EasyList
-Orodha ya Peter Lowe ya seva za matangazo
- EasyPrivacy
- Vikoa vya programu-hasidi
Orodha zaidi zinawezateuliwa iwapo unataka:
- Orodha fuatiliaji yake Fanboy iliyoboreshwa
- Faili yake Dan Pollock ya wenyeji
- seva za hpHosts za matangazo na ufuatiliaji
- Wenyeji wa MVPS
- Spam404
- Na mengineo
Inajulikana kuwa unavyowezesha vichujio zaidi, ndipo kumbukumbu inavyotumika zaidi. Hata hivyo, hata baada ya kuongeza orodha mbili anuwai za Fanboy, seva za hpHosts za matangazo, na za ufuatiliaji, uBlock bado inatumia kumbukumbu kidogo kuliko vizuizi vingine vinavyopatikana kule nje.
Pia, unahamasishwa kuwa kuteua baadhi ya orodha hizi huenda kukaongeza hatari ya tovuti kuvunjika -- sana sana zile orodha ambazo hutumika kama faili za wenyeji.
***
Bila orodha setiawali za vichujio, kiendelezi hiki sii kitu. Kwa hivyo, iwapo ungependa kuchangia kitu cha maana, fikiria wale wanaotia bidii kudumisha orodha za vichujio unayotumia, na zilizofanywa huria kwa kila mmoja.
***
Huru
Programu huria yenye leseni ya umma (GPLv3)
Na watumiaji kwa watumiaji
Wachangiaji @ Github: https://github.com/gorhill/uBlock/graphs/contributors
Wachangiaji @ Crowdin: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Batli ya mabadiliko ya mradi:
https://github.com/gorhill/uBlock/releases

View file

@ -1,49 +0,0 @@
An efficient blocker: easy on memory and CPU footprint, and yet can load and enforce thousands more filters than other popular blockers out there.
Illustrated overview of its efficiency: https://github.com/gorhill/uBlock/wiki/uBlock-vs.-ABP:-efficiency-compared
Usage: The big power button in the popup is to permanently disable/enable uBlock for the current web site. It applies to the current web site only, it is not a global power button.
***
Flexible, it's more than an "ad blocker": it can also read and create filters from hosts files.
Out of the box, these lists of filters are loaded and enforced:
- EasyList
- Seznam oglaševalskih strežnikov Peter Lowe
- EasyPrivacy
- Malware domains
More lists are available for you to select if you wish:
- Fanboys Enhanced Tracking List
- Dan Pollocks hosts file
- hpHostss Ad and tracking servers
- MVPS HOSTS
- Spam404
- And many others
Of course, the more filters enabled, the higher the memory footprint. Yet, even after adding Fanboy's two extra lists, hpHostss Ad and tracking servers, uBlock still has a lower memory footprint than other very popular blockers out there.
Also, be aware that selecting some of these extra lists may lead to higher likelihood of web site breakage -- especially those lists which are normally used as hosts file.
***
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.
***
Free.
Open source with public license (GPLv3)
For users by users.
Contributors @ Github: https://github.com/gorhill/uBlock/graphs/contributors
Contributors @ Crowdin: https://crowdin.net/project/ublock
***
It's quite an early version, keep this in mind when you review.
Project change log:
https://github.com/gorhill/uBlock/releases

321
dist/firefox/publish-signed-beta.py vendored Executable file
View file

@ -0,0 +1,321 @@
#!/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 distutils.version import LooseVersion
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 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, 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
#
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))
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).decode()
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.
#
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 LooseVersion(ext_version) > LooseVersion(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)
with open(updates_json_filepath, 'w') as f:
f.write(updates_json)
f.close()
# Automatically git add/commit if needed.
# - 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,17 +1,13 @@
{
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.69.1.4",
"browser_specific_settings": {
"gecko": {
"strict_min_version": "115.0"
}
},
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.69.1b4/uBlock0_1.69.1b4.firefox.signed.xpi"
}
]
"addons": {
"uBlock0@raymondhill.net": {
"updates": [
{
"version": "1.40.3.1",
"browser_specific_settings": { "gecko": { "strict_min_version": "60" } },
"update_link": "https://github.com/gorhill/uBlock/releases/download/1.40.3b1/uBlock0_1.40.3b1.firefox.signed.xpi"
}
]
}
}
}
}

13
dist/firefox/updates.template.json vendored Normal file
View file

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

2
dist/version vendored
View file

@ -1 +1 @@
1.70.0
1.40.3.2

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View file

@ -0,0 +1,31 @@
Steps, roughly:
Capture Task Manager using SimpleScreenRecorder
Launch reference benchmark
Stop and save capture once reference benchmark completes
Extract/crop/scale area to OCR (the CPU figures)
avconv -i ublock-cpu.webm -r 4 -vsync 1 -vf "[in] crop=40:86:310:100 [T1], [T1] scale=160:360 [out]" -t 2400 img/img-%04d.png
Execute tesseract custom script:
./tessall
`all.txt` contains a csv of the results.
Paste in spreadsheet. Etc.
`tessal` script:
#!/bin/sh
rm all.txt
echo
for i in img/img*.png; do
echo -ne '\r' $i
b=`basename $i .png`
tesseract $i out -psm 6 digits 1>/dev/null 2>&1
cat out.txt | perl -p -000 -e 's/(\d+)\s+/\1,/g' | perl -pe 's/,$/\n/' >> all.txt
done

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 225 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
doc/img/abp-abe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 475 KiB

BIN
doc/img/abp-obr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
doc/img/abp-own-mem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
doc/img/acid3test-mem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
doc/img/df-dd-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

BIN
doc/img/df-dd-02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
doc/img/df-dd-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

BIN
doc/img/df-qg-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
doc/img/df-qg-02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
doc/img/df-qg-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
doc/img/df-qg-04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
doc/img/df-qg-05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
doc/img/df-qg-06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
doc/img/df-qg-07.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
doc/img/df-qg-08.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
doc/img/df-qg-09.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
doc/img/df-qg-10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
doc/img/df-qg-11.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

BIN
doc/img/df-qg-12.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
doc/img/df-tut-01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
doc/img/df-tut-02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

BIN
doc/img/df-tut-03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

BIN
doc/img/df-tut-04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
doc/img/df-tut-05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
doc/img/df-tut-06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 41 KiB

BIN
doc/img/hn-abp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

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