diff options
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/UrlFilter.md | 91 | 
1 files changed, 91 insertions, 0 deletions
diff --git a/doc/UrlFilter.md b/doc/UrlFilter.md new file mode 100644 index 0000000..cea2397 --- /dev/null +++ b/doc/UrlFilter.md @@ -0,0 +1,91 @@ +## FilterDomain +Filter Domains are groups of domains that can point to one or more filter +rules. + +### Types +There are 4 Filter Domain types: +- AllowOnDomains - only match specified domains +- BlockOnDomains - match all but specified domains +- AllowOnAllDomains - match all domains +- BlockOnAllDomains - match no domains + +### JSON +    { +        "type" : "AllowOnDomains", +        "domains" : [ "example.com", "test.example.com" ], +        "rules" : [] +    } + +## FilterRule +Filter rules contain information on how a request should be modified. + +### "action" +- Whitelist - allow this request +- Blacklist - block this request +- Redirect - redirect this request +- SetHeader - apply a list of headers + +### "regexp", "contains", "endswith" + +### JSON +Allow all URLs that contain "waifu.png" +    { +        "action" : "Whitelist" +        "contains" : "waifu.png" +    } + +Block specific URL +    { +        "action" : "Blacklist" +        "equals" : "example.com/annoying-ad/masquerade/waifu.png" +    } + +Block all URLs that contain "banner.gif" +    { +        "action" : "Blacklist", +        "contains" : "banner.gif" +    } + +Redirect URLs containing "ads/annoying-spam.gif" to "waifu.tld/waifu.gif" +    { +        "action" : "Redirect" +        "contains" : "ads/annoying-spam.gif" +        "url" : "waifu.tld/waifu.gif" +    } + +Set some headers +    { +        "action" : "SetHeader" +        "header" : [ "DNT" : "1" ] +    } + +## QWebEngineUrlRequestInterceptor + +All network requests pass through the request interceptor. It gives the +following information: + +- firstPartyUrl - the page on which the request is made +- requestUrl - the url of the request +- requestMethod +- resourceType +- navigationType + +And provides the following methods: + +- block (bool shouldBlock) - can block the request +- redirect (const QUrl) - can redirect the requestUrl +- setHttpHeader - can set HTTP headers (such as user agent and do not track) + +### Example +This is a sample request made when loading DuckDuckGo: + +    firstPartyUrl=https://duckduckgo.com/ +    requestUrl=https://duckduckgo.com/o1635.css + +## How the filter works +When a requst comes in, the interceptor extracts the host of the request and +matches it against the list of FilterDomains. + +    firstPartyHost=duckduckgo.com +    requestHost=duckduckgo.com +  | 
