Awesome
AdGuard content blocking library
Pure GO library that implements AdGuard filtering rules syntax.
You can learn more about AdGuard filtering rules syntax from this article.
TODO:
- Basic filtering rules
- Core blocking syntax
- Basic engine
- Basic rules validation (don't match everything, unexpected modifiers, etc)
- Domain modifier semantics: https://github.com/AdguardTeam/AdguardBrowserExtension/issues/1474
- TLD support: https://kb.adguard.com/en/general/how-to-create-your-own-ad-filters#wildcard-for-tld
- Benchmark basic rules matching
- Hosts matching rules
- /etc/hosts matching
- $badfilter support for host-blocking network rules
- Memory optimization
- Tech document
- Cosmetic rules
- Basic element hiding and CSS rules
- Proper CSS rules validation
- ExtCSS rules
- ExtCSS rules validation
- Scriptlet rules
- JS rules
- Basic element hiding and CSS rules
- Proxy implementation
- Simple MITM proxy example
- Add cosmetic filters to the proxy example
- Handling cosmetic modifiers $elemhide, $generichide, $jsinject
- (!) Server certificate verification - it should pass badssl.com/dashboard/
- Use fetch metadata to detect the content type: https://www.w3.org/TR/fetch-metadata/
- Unit tests coverage
- Fix TODOs
- Proxy - handle CSP (including <meta> tags with CSP)
- Proxy - proper blocking page code
- Proxy - unblocking via a temporary cookie
- Proxy - content script caching
- Proxy - content script compression
- Proxy - brotli support (see here)
- Content script - babel plugin
- Content script - apply ExtCSS rules
- Content script - styles protection
- Content script - JS unit tests
- Content script - GO unit tests
- HTML filtering rules
- Advanced modifiers
- $important
- $replace
- $csp
- $cookie
- $redirect
- $badfilter
- $badfilter (https://github.com/AdguardTeam/CoreLibs/issues/1241)
- $ping modifier (https://github.com/AdguardTeam/CoreLibs/issues/1258)
How to use
TODO