CSS property matching improvements · 2016-11-14 13:05 by Felix Dahlke
About a year ago, we introduced CSS property filters as a means of hiding elements based on their styles. Today, we have landed two improvements to this:
Case insensitive matching
This is a change in semantics; CSS properties will now always be matched in a case insensitive manner, to make it consistent with the way Adblock Plus matches URLs. This is unlikely to result in undesired behaviour as there shouldn’t be many use cases for case sensitive property matching.
Regular expression matching
Until now, CSS properties could only be matched using the simple URL matching syntax, which made it difficult to match property values in a fine-grained manner. To address this, properties can now optionally be matched using regular expressions. The default matching behaviour is still the same, to use regular expressions, a matching expression needs to start and end with
/, for example:
These improvements are available in Adblock Plus for Firefox as of 184.108.40.20629 and Adblock Plus for Chrome and Opera as of 220.127.116.112, and will presumably be released with the next stable version on each platform respectively.
Please note that we still consider CSS property filters an experimental feature, and therefore subject to change. Considering this, and the fact that CSS property filters are slower than regular element hiding rules, they should only be used as a last resort.
Adblock Plus 1.12.4 for Chrome, Opera and Safari released · 2016-10-26 14:06 by Dave Barker
- Stopped the “Block Element” dialog from suggesting filters based on huge URLs, since they often made Adblock Plus become unresponsive (issue 4330).
- WebSocket connections are now considered to be of type
$other(issue 4448). For more information see Wladimir’s blog post.
- Removed the features section from the first-run page (issue 4295, issue 4294).
- Fixed a bug relating to how the document domain is determined, especially after redirects (issue 4386).
- Added a workaround to fix
$sitekeywhitelisting for requests made directly after a redirection (issue 4483).
- Improved WebSocket blocking capabilities (issue 4372).
- Fixed YouTube ad blocking on Safari 6 (issue 4351).
Adblock Plus 1.12.2 for Chrome, Opera and Safari released · 2016-08-23 17:51 by Dave Barker
This is a minor release, focused on stability and preventing circumvention.
- Prevent websites from abusing WebSockets to serve adverts (issue 1727).
- Improved Element Hiding protections against circumvention (issue 4191, 4298).
- Fixed a bug that caused content in anonymous frames to be blocked even when the parent frame was whitelisted (issue 4150).
- Worked around an issue with MutationObservers which caused older versions of Chrome and Opera to hang for some websites (issue 4101).
- Added more versions of our icons that look sharper with the new Material Design (issue 4218).
- Removed an outdated workaround that caused some whitelisted elements to be hidden in anonymous frames (issue 4210).
- Fixed a bug that caused the options page to be sometimes opened multiple times when the experimental Content Blocking feature was enabled (issue 4199).
- Improved the conversion from Adblock Plus filters to Content Blocking rules for the experimental Content Blocking feature, making sure to block/whitelist all subdomains for filters starting with
- Fixed a typo that broke key-based whitelisting (issue 4300).
Adblock Plus 1.12.1 for Chrome, Opera and Safari released · 2016-06-28 12:56 by Dave Barker
This is a minor release, including some bug fixes and performance improvements.
- Further improved element hiding performance, reducing overall page load times (issue 4075).
- Fixed a bug that stopped Adblock Plus filter subscription links from working for old versions of Chrome and Opera (issue 4065).
- Fixed a regression, introduced with the previous release, that stopped adverts from being blocked on YouTube when using older versions of Safari that still relied on the Flash player (issue 4141).
- Fixed a minor bug when converting
$documentexception rules to Safari Content Blocking rules (issue 4076, issue 4072).
Adblock Plus 1.12 for Chrome, Opera and Safari released · 2016-06-01 15:03 by Sebastian Noack
This release features experimental Safari Content Blocking support. So if you’re on Safari 9, you can try out the new (faster) blocking mechanism now by enabling it in the options. But please read the announcement first; as that feature is still experimental and Content Blockers have some limitations, there are some caveats. However, Content Blockers will eventually completely replace the old mechanism we relied on so far on Safari.
There also have been some bug fixes and other improvements for all platforms which are listed below, and some changes under the hood which aren’t visible to the user.
- Improved performance of element hiding, reducing page load times (issue 235, issue 4038, issue 4036).
- Fixed a regression, introduced with the previous release, which caused the Adblock Warning Removal List to not be added anymore (issue 3772).
- Prevent websites from circumventing element hiding by removing or disabling the stylesheet (issue 3699).
- Prevent websites from showing previously blocked elements (issue 3840).
- Added an option to hide the Adblock Plus developer tools panel (issue 3796).
- Prevent websites from tricking users into adding subscriptions by simulating clicks on abp:subscribe links (issue 3828).
- Worked around a Chrome bug that broke the feedback functionality on blogger.com (issue 2687).
- Administrators deploying Adblock Plus via group policy can now configure additional subscriptions (issue 3801).
- Starting with this release, there are unified builds for Chrome and Opera, using the exact same code on both browsers (issue 3760).
- Added experimental support for Safari Content Blocking (see above, issue 3687).
- Fixed: Wrong domain was whitelisted by icon menu after navigating through the history (issue 3924).
Adblock Plus 1.11 for Chrome, Opera and Safari released · 2016-03-08 17:44 by Sebastian Noack
This release features the new developer tools panel which shows blockable items along with applied filters, and provides an easy way to create new filters for these items, on Chrome and Opera.
Another big change in this release: The “Block element” dialog is no longer injected into the page, but opened as a popup on Chrome and Opera, and as a new tab on Safari. This solved a couple issues, most notably a way that allowed websites to reliably detect whether Adblock Plus is installed.
- Significant improvements to the popup blocking mechanism on Chrome and Opera, in order to address some corner cases which have been exploited by some websites (issue 3651).
- Restricted the data send by the uninstall page. We respect your privacy! (issue 3649)
- Fixed: CSS property filters weren’t applied correctly when comma-separated lists of selectors were involved (issue 3654).
- Fixed: The “Block element” feature didn’t consider $genericblock exception rules (issue 3620, issue 3636).
“Block element” dialog now displayed as a popup window · 2016-02-18 17:14 by Dave Barker
We’ve been working on some changes to the “Block element” feature. These changes will be available in Adblock Plus 1.11 for Chrome, Opera and Safari and now in development builds as of 18.104.22.1684.
The “Block element” feature allows you to select elements on the current page and generate filters to block them. After selecting an element the “Block element” dialog is displayed which allows you to confirm the filters that should be added. For Chrome and Opera this dialog is now displayed as a popup window (issue 2426) instead of as part of the website itself. In Safari the dialog will open as a new tab instead. (This is because Safari unfortunately doesn’t provide an equivalent way for us to open popup windows.)
This change should resolve a number of issues with the “Block element” dialog, most importantly one that was being used by websites to reliably detect if Adblock Plus was installed.
Bringing "blockable items" to Chrome, introducing the Adblock Plus developer tools panel · 2016-02-03 18:08 by Sebastian Noack
Since we ported Adblock Plus to Chrome, we promised our users feature-parity with Adblock Plus for Firefox. While we are still not there, the probably most significant feature that has been missing on Chrome for a long time – but not anymore – is a way to view blockable items/requests along with applied filters.
For Chrome and Opera, we decided to implement “blockable items” as a developer tools panel (issue 154). Being a tool for advanced users, filter list authors and our own developers, we think that it belongs there. And integrating it with the developer tools gives a nice user experience.
The developer tools panel is now available in the development builds as of Adblock Plus 22.214.171.1243 for Chrome and Opera, and will be included in the next release, Adblock Plus 1.11. In order to use the developer tools panel, inspect the current page (
Ctrl + Shift + I) and click on the “Adblock Plus” panel. Unfortunately, Chrome currently doesn’t provide a way to open the developer tools panel programmatically, e.g. from our icon menu.
Also as opposed to “blockable items” on Firefox, we don’t record items in advance, to avoid performance penalties and additional memory usage while not using the developer tools panel. Therefore you have to (re)load the page, with the panel open, to see all items.
The items shown in the developer tools panel include:
- Web requests as seen by Adblock Plus. Blocked/Whitelisted requests are indicated red/green, with the responsible filter given in the right column. When moving the mouse over a request item, buttons – to block or whitelist the request – appear.
- Element hiding filters that match and hide any element on the current page. However, since Chrome doesn’t provide a way to detect actual element hiding hits, these items are simulated by observing the document for hidden elements that match the selector of any active element hiding filter, which might not give completely accurate results in rare situations.
- Document-based whitelisting including
ELEMHIDE, GENERICBLOCK and GENERICHIDE exception rules, that apply for any document on the current page. Note that if a
DOCUMENTexception rule applies, there won’t show any further items – as it pretty much disables Adblock Plus – for that document.
Adblock Plus 1.10.1 for Chrome, Opera and Safari released · 2016-02-03 12:16 by Sebastian Noack
This is an emergency bugfix release, fixing a regression that was introduced in the previous release and broke compatibility with Chrome 37, Opera 24, and earlier versions (issue 3580).
Besides that and some changes under the hood, this release fixes the following minor bugs:
- Subscription links caused the options page to be opened twice (issue 3153).
- The “Block element” option wasn’t shown in icon popup while page was loading (issue 3472).
Adblock Plus 1.10 for Chrome, Opera and Safari released · 2016-01-05 13:44 by Dave Barker
This update adds the new CSS property filter syntax which should give filter list authors an additional tool against the circumvention of Adblock Plus. We have also created a page which will be shown when Adblock Plus is uninstalled. We are hoping to gain insight into the overall user experience and what we can improve.
- Added support for the new CSS property filter syntax (issue 2397).
- Improved how the first run page looks on smaller screens (issue 1292).
- Added a feedback page that is displayed when Adblock Plus is uninstalled (issue 3269).
- Reintroduced the $ping filter option (issue 3452).
- Adapted for changes in Chrome 49 which allows for the context of web requests to be matched more reliably (issue 3453).
- Changed the way we detect the browser name and version (issue 3415).
- Avoid matching web requests with the type
OTHERwhen using the
$fontfilter option (issue 3454).