Pure GO library that implements AdGuard filtering rules syntax.
You can learn more about AdGuard filtering rules syntax from this article.
- Basic filtering rules
- Core blocking syntax
- Basic engine
- Basic rules validation (don't match everything, unexpected modifiers, etc)
- Domain modifier semantics: AdguardTeam/AdguardBrowserExtension#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 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 (AdguardTeam/CoreLibs#1241)
- $ping modifier (AdguardTeam/CoreLibs#1258)
TODO