Open AndriusA opened 5 years ago
For network filters, there are still a few rule options that are not supported, wrt https://github.com/brave/ad-block/issues/217
popunder
, popup
- ad-blocker does not directly interact with popup/popunder blockingcsp
inline-script
- inline scripts are normally blocked through CSPmatch-case
- all rules are considered case insensitive (#242)all
- depends on popup
, inline-script
, inline-font
I noticed uBlock have added some new features like $to
or a new alias for $domain: $from
, and expanded regex support, so I made this quick table to compare uBlock features (from their wiki) Brave doesn't partially or completely support.
Most of these incompatibilities are already mentioned here and other issues, but I also added workarounds I use to fix the limitations on my side. Just a reminder of how Brave is doing against uBlock in 2023, 4 years after this issue was opened.
Some of these features might not seem too relevant or used even today, but since Brave uses uBlock lists as default they are important to support, because when you put all the unsupported rules together, they represent an important amount of rules Brave is currently ignoring, which obviously reduce the potential of Brave to reduce tracking and avoid bad popups and all that in many websites.
Feature | If Partial, What's currently not supported | Examples | Workarounds | |
---|---|---|---|---|
⚠️ | removeparam | regex | *$removeparam=/^utm_/ |
|
⚠️ | domain | entity | $domain=brave.* |
|
from= (alias) |
$from=brave.com |
|||
regex | $domain=/img[a-z]{3,7}\\.test/ |
|||
Note: regex is not limited to $domain , $from or $to , can be used in scriptlet Injection and cosmetics filters as well. |
/img[a-z]{3,5}\\.buzz/##+js(nowoif) /example\\.(?!com)/##body > * |
|||
❌ | to | Note: supports both entity and regex | *$from=cgpress.org\|cgchannel.*\|/sidefx/ ↵ ,to=/disqus/\|google.*\|gstatic.com |
|
❌ | denyallow | Note: supports entity only | *$script,3p,denyallow=google.com\|gstatic ↵ .com\|recaptcha.net,domain=domain1.com\|domain2.* |
CSP |
❌ | all | \|\|brave.com^$all |
||
❌ | popup popunder |
*$popup,domain=jessehakanen.net - Test*$popunder,domain=ptcong.com - Demo |
CSP Window-Close-if.js window.open-defuser.js (nowoif) Other Scriptlet Injections, like 'abort-on-', acis... etc. |
|
❌ | method | \|\|brave.com^$method=post\|get |
||
❌ | strict1p strict3p |
|||
❌⚠️ | inline-script inline-font |
Note: it uses CSP to do the job | \|\|example.com^$inline-script \|\|example.com^$inline-font |
CSP |
❌⚠️ | empty mp4 |
Note: converted internally to: redirect=empty and redirect=noopmp4-1s |
\|\|example.com^$empty \|\|example.com^$mp4 |
plain and simple $redirect |
⚠️= Partial
❌= Not supported
❌⚠️= Rule won't be supported, but they are internally converted to something Brave already supports like $csp and $redirect
A few options are not currently handled from easylist and easyprivacy:
popup
- Include pages opened in a new tab or windowgenerichide
- Used to prevent applying global element rules on a page (e.g.@@||example.com^$generichide
)document
- Used to whitelist the page itself (e.g.@@||example.com^$document
)webrtc
- Include or exclude connections opened via RTCPeerConnection instances to ICE serverselemhide
- Used to prevent element rules from applying on a page (e.g.@@||example.com^$elemhide
)genericblock
- Used to prevent applying global blocking rules on a page (e.g.@@||example.com^$genericblock
)