Rewriting URL instead of blocking · 2018-05-18 18:17 by Hubert Figuière
Starting with Adblock Plus 3.2 for Chrome, Firefox and Opera (and development builds as of 184.108.40.2063), there is a new
$rewrite filter option to rewrite the URL of a resource instead of blocking it.
Internationalized domains in filters are now expected to be encoded as Punycode · 2018-05-18 17:00 by Sebastian Noack
Starting with Adblock Plus 3.2 (and development builds as of 220.127.116.110), domains given in filters are expected to be encoded as Punycode.
Adblock Plus 3.1 for Chrome, Firefox and Opera released · 2018-05-16 15:00 by Sebastian Noack
This release features the new $csp filter option which equips filter lists authors with yet another tool to counter ad blocking circumvention on some websites, as well as a mechanism for system administrators to pre-configure Adblock Plus on Firefox, along other improvements and bug fixes.
- Added the
$cspfilter option (issue 5241).
- Requests sent by Shared/Service Workers are now matched in the context of the document that caused the worker to spawn, i.e. requests sent from the worker are now also subject to document-based whitelisting and domain-specific filters (issue 6543).
- Users with corrupted storage are now notified and instructed to reinstall Adblock Plus (issue 6599).
- Fixed: Videos (and other media elements) remained hidden if they previously attempt to stream a blocked resource (e.g. a pre-roll ad) but then changed their URL (issue 5899).
- Fixed: Exception rules for element hiding emulation filters were considered invalid when adding custom filters (issue 6139).
- Improved performance of element hiding emulation filters (issue 6437).
- Requests sent by the browser itself or by Adblock Plus are no longer subject to request blocking (issue 6544). This is now consistent with the behavior on Firefox, and prevents a dysfunctional state in case of misconfiguration or overly greedy rules in filter lists.
- Added support for pre-configurable preferences (issue 6474).
- Prevented third-party style sheets from breaking element hiding emulation filters (issue 6382).
- Worked around the limitations of notifications on Firefox (issue 6496).
Behind the scenes of Adblock Plus’s new Settings page · 2018-04-25 14:00 by Jeen Low
Today we are happy to share our biggest update yet! With the release of Adblock Plus 3.0.3 on Chrome and Opera brings an all-new Settings page which allows users to control their online browsing even more easily.
Added support for the $csp filter option · 2018-04-21 17:30 by Dave Barker
Starting with Adblock Plus 3.1 (and development builds as of 18.104.22.1688) the
$csp filter option is supported. The
$csp filter option allows for the injection of additional Content Security Policies.
Adblock Plus 3.0.3 for Chrome, Firefox and Opera rolled out progressively · 2018-04-10 15:01 by Sebastian Noack
This is the first combined release for Chrome, Opera and Firefox since the troublesome migration to Firefox Web Extensions. This marks a major release for Chrome and Opera, notably including the redesigned Settings page, along with many other improvements. However, there isn’t as much an impact for Firefox users, updating from the previous version. It’s mostly a bug fix release for them.
This release will be rolled out progressively. Today, we started to update 5% of our existing Chrome users. New users installing Adblock Plus from the Chrome Web Store will get the latest version as well. If all goes well, we will push the update out to Firefox, Opera and the remaining Chrome users next week. The reason for rolling this release out in stages is that we want to ensure the new Settings page design is well received.
- Improved element hiding emulation filters.
- Fixed empty error message when adding invalid custom filter (issue 6417).
- Removed the social media buttons from the ABP icon menu (issue 5613).
- Replaced the Settings page with new user experience (issue 6403).
- Added an update page, announcing the new Settings page (issue 5943).
- Added an issue reporter for inaccurately blocked content (issue 5880).
- Started using user style sheets on Chrome 66 (respectively Opera 53) and above, in order to hide elements more reliably (issue 242).
- Fixed element hiding emulation filters on Chrome 50 (respectively Opera 37) and below (issue 5773).
- Made the “Block element” option unavailable when navigating to the Chrome Web Store (issue 6191).
- Worked around limitations of notifications on Opera (issue 5354).
- Fixed a bug causing pages to be rendered blank when Web Components are enabled (issue 6441).
- Fixed the “Block element” dialog on Firefox 51 (issue 6113).
- Fixed links in the mobile Settings page, seen on Android (issue 6199).
- Fixed: Message about whitelisted domain is shown repeatedly on the Settings page (issue 6420).
- Improved performance when adding large number of custom filters (issue 6440).
Update (2018-04-18): We proceeded with the progressive roll out, making the update available to all Chrome users. The update for Firefox and Opera will still follow.
Update (2018-04-21): Yesterday, we pushed out the update to Firefox users, but did a mistake which lead to releasing Adblock Plus 3.0.4, today. We also just pushed out the update to Opera users.
Adblock Plus 1.13.5 for Chrome and Opera released · 2018-01-26 15:20 by Sebastian Noack
This is an emergency release, addressing a limitation in Chromium which caused pages to appear blank, starting with Google Chrome 66 (and respective future versions of Opera).
After Chromium added support for user style sheets, Adblock Plus detected this feature and began using it automatically. Unfortunately this caused problems, since Chromium did not handle the very long CSS selector lists, that Adblock Plus injects, as well as Firefox does. This caused pages to be rendered blank (issue 6298). With this emergency release we prevent Adblock Plus from using user style sheets for now (issue 5695), but we’ll start using them again soon.
Adblock Plus 1.13.4 for Chrome and Opera released · 2017-09-26 15:39 by Hubert Figuière
This release features improvements to the emulation filters, which allow to block ads on Facebook again. It also includes some bug fixes and changes under the hood.
- Properly handle hiding emulation in dynamically generated content (issue 5000 and 5438).
- Properly select the element when selecting pseudo-elements style properties in hiding emulation filters (issue 5339).
- Fixed some issue with
:-abp-has()(issue 5436 and 5422).
- Fixed an issue that caused added custom filters to show up twice in the options (issue 4978).
- Improved user notifications (issue 5558, 5460 and 5459).
Adblock Plus 1.13.3 for Chrome and Opera released · 2017-07-12 11:57 by Dave Barker
This release features a number of ad blocking improvements, bug fixes and some changes under the hood.
- Added WebRTC connection blocking support, since those connections were being abused by some websites to serve advertising (issue 4455, 5087 and 5092).
- Added support for the new advanced
#?#element hiding filter syntax, which includes the new
:-abp-haspseudo-class (issue 5094, 5220 and 5117).
- Added a workaround to prevent websites from abusing
contentDocumentAPIs to bypass ad blocking (issue 4586 and 5207).
- Started allowing web requests not associated with a browser tab to be blocked (issue 5042).
- Started using the
webRequestAPI for the blocking of WebSocket connections instead of our workarounds when supported by the browser (issue 5027 and 5130).
- Fixed a bug which prevented the “Hide targeted messages?” notifications from being displayed until the browser was restarted (issue 5019 and 5023).
- Reduced the number of “Blocked script execution…” warnings that Adblock Plus causes (issue 4494).
New #?# syntax for advanced element hiding rules · 2017-06-19 17:21 by Hubert Figuière
Starting with Adblock Plus 1.13.3 for Chrome and Opera (and development builds as of 22.214.171.1242) there is a new and improved syntax which can be used for advanced element hiding filters. It allows for elements to be hidden based upon their contents using
:-abp-has. CSS property filters have also being adjusted to be consistent with the new syntax, so both those and
:-abp-has filters now use the
#?# option separator.
So for example here’s a standard element hiding filter:
Which with the new advanced syntax could be written as:
The overall syntax is the same, but
#?# filters have access to a few extensions implemented as CSS pseudo classes. This extra power comes with a cost however, the new
#?# filters are much slower and should only be used where necessary. The above example is bad therefore, since none of those extensions are being used. Filters using the new syntax must also be restricted to as few domains as possible, without any domain restrictions they are rejected outright.
So which CSS pseudo classes are supported?
:-abp-properties() (CSS property filters)
:-abp-properties() is a reworked syntax for the CSS property filter. The value of the
-abp-properties attribute becomes the argument passed to the pseudo-class selector. Your old filters will be converted automatically when loading the filter lists, and will work the same way. For example:
domain.com##[-abp-properties='background-color: rgb(0, 0, 0)']
domain.com#?#:-abp-properties(background-color: rgb(0, 0, 0))
Note the lack of quotes. As before, you can combine this into a more complex CSS selector.
With this change we introduced a new pseudo-class:
:-abp-has(selector). Inspired by the CSS Level 4 draft :has(), this pseudo-class selects an element if it contains something that matches the selector passed an argument.
domain.com#?#div.sidebar > div:-abp-has(> video.ad)
On the site “domain.com”, hide the element that has as direct descendant a
<video> element with the class “ad” and is a direct descendent of a
<div> that has the class “sidebar”. We want the enclosing element because it contain other things with want to hide.
domain.com#?#div.sidebar > div:-abp-has(> div.sidebartitle) > .adtext
On the site domain.com, hide the elements with the class “adtext”, that are direct descendent of a
<div> element that also has a direct descendent a
<div> with the class “sidebartitle”, and that is a direct descendent of a
<div> that has the class “sidebar”.
Note: It is recommended to not nest
:-abp-has() where possible, as that will further slow down element hiding. Also it is recommended that the selector inside a
:-abp-has() starts with a combinator like
~. Otherwise a lot of elements will be needlessly selected as more that one ancestor will match.