Skip to content

Enhanced Tracking Protection (ETP)

lmarceau edited this page Jan 4, 2023 · 19 revisions

Enhanced Tracking Protection (ETP)

In Firefox for iOS, we have content blocking to help reduce ads and help stop advertisers from tracking browsing activity. In the application, this feature is called Enhanced tracking protection or ETP. There’s different types of trackers that are blocked with this content blocking feature (social trackers, cross-site trackers, cryptominers, fingerprint trackers). How we know which trackers to block is by using lists that we get from a service called Shavar. Since we're using WebKit in Firefox for iOS, we format those files in a certain way so WebKit can block content. This document aims to clarify what is ETP, how we format the files to enable this feature, how we use them in code and what WebKit expects from us.

Feature overview

There's more than one way to access the ETP settings in the application. One way is by navigating to a website and clicking on the lock icon in the URL bar.

Screen Shot 2023-01-04 at 10 16 38 AM

This will give you a menu to discover this specific site tracking protection. It will tell you whether the connection to the site is secure, and if ETP is on for this website.

Screen Shot 2023-01-04 at 10 20 01 AM

From there, you can open the Protection Settings where you can select either the Standard protection level or the Strict protection level. You can also access the Protection Settings under settings from the hamburger menu.

Screen Shot 2023-01-04 at 10 19 06 AM

Standard mode is what is selected by default. The difference between the two is mostly that we third-party block cookies in standard mode for social, advertisers and analytics trackers but we block all for those same trackers in strict mode. In both protection level we block all cryptominers and fingerprinters. This will be explained more in debt later.

Where do we use it in code

How do we generate those files

Where do we get the raw files from (shavar files)

What is input/output

What is unless domain, trigger and action

block vs block-all (strict/standard/how are they used in each files)

Load type third party only

How do we take entity list to generate unless domain

Why we don't have content blocking

Clone this wiki locally