Overview

July 7, 2023 · View on GitHub

These domains were identified by crawling the top sites on the internet, and looking for 3rd party resource requests that are on several different sites which set cookies or access browser APIs known to be used in fingerprinting.

  • Domain and entity data is automatically generated using the Tracker Radar Detector

  • Domains: Automatically generated domain data files.

  • Entities: Automatically generated data on entities or companies that control the domain.

  • Build data: Static files used to build the domain data files. This includes data on privacy policies, surrogate definitions, categories, and more.

  • Breakage data: Static files defining broken sites or requests that can cause breakage.

Development

  • The domain and entity data is automatically generated using Tracker Radar Detector.
  • New development and bug fixes, other than broken sites, are handled internally.

Domains

The domain data is stored as individual region-specific JSON files. We crawl the most popular domains for each given region. The resulting domain data is stored in region-specific subdirectories within the domains directory:

Region CodeRegion
USUnited States
AUAustralia
CACanada
CHSwitzerland
DEGermany
FRFrance
GBGreat Britain
NLNetherlands
NONorway

Domains are grouped by their domain name and IDNA encoded.

Each domain is defined using the following fields:

domainThe domain of the third party request
resourcesResources to match for a given domain
surrogatesReplacement code for specific domain scripts to prevent website breakage
ownerEntity (usually a company) that control this domain
sourceThe organizations of processes which identified the domain
prevalencePercentage of top sites that request this domain
fingerprintingLikelihood this domain is fingerprinting users
cookiesPercentage of the top sites that have cookies set by this domain
performancePerformance impact of loading this domain
categoriesAn array of categories describing the purpose of this domain
typesRequest types this domain has used
cnamesAn array of subdomains that include DNS CNAMES redirecting to this domain
nameserversAn array of name servers for this domain

Resources

An array of regexes to match against the full URL of significant third-party requests made to this domain. Significant is any resource detected to be using a browser API used for fingerprinting or setting/getting cookies.

ruleA regex to match against the request URL
cookiesPercentage of the top sites that have cookies set by this third-party domain
fingerprintingLikelihood this third-party domain is using browser APIs to uniquely identify users
apisA list of browser APIs accessed by this resource which are commonly used in fingerprinting
prevalencePercentage of the top sites where this resource was seen
cnamesA list of DNS CNAMEs that redirected to this resource
responseHashesA list of SHA256 response body hashes seen for this resource
exampleSitesAn optional list of examples sites where a resource was found
firstPartyCookiesA dictionary of cookies this resource sets in the first party context (via document.cookie). Keys are cookie names, values are objects described in the "First-party cookies" table below.
firstPartyCookiesSentA dictionary of first party cookies whose values are sent to this resource. Keys are cookie names, values are the prevalence for that cookie.
First-party cookies
ttlThe median number of seconds in the future this cookie is set to expire. null if the cookie is a session cookie.
lengthAverage string length of the cookie value.
prevalenceProportion of pages that this cookie is set on.
uniquenessNumber of distinct values seen divided by number of times seen. 1 means that values are always unique, 0 means it is a constant.

Breaking

An optional array of resources that can cause breakage if blocked.

ruleA regex to match against the request URL
domainsAn optional list of domains that this breaking rule applies to
typesAn optional list of request types that this breaking rule applies to

Surrogates

An optional array of resources and replacement function names to prevent site breakage.

ruleA regex to match against the request URL
replaceWithName of replacement function to serve in place to avoid site breakage (NOTE: These are not currently included in the Tracker Radar data)

Source

An array of the organizations or processes which identified the domain. Currently the only value in all domains is DDG, but more may be added in the future.

Owner

Entity (a company or organization) that controls each domain. Each entity may have the following fields defined:

nameThe name of the entity
urlThe primary website of the entity (if available)
privacyPolicyThe privacy policy URL for the entity (if available)
displayNameA shortened entity name without company suffixes

Domain

The domain that should be matched against third-party requests.

Prevalence [0-1]

The percentage of the top sites that request this third-party domain.

cookies [0-1]

The percentage of the top sites that have cookies set by this third-party domain.

Fingerprinting [0-3]

The likelihood this third-party domain is using browser APIs to uniquely identify users.

0No use of browser API's
1Some use of browser API’s, but not obviously for tracking purposes
2Use of many browser API’s, possibly for tracking purposes
3Excessive use of browser API’s, almost certainly for tracking purposes

Performance

Performance impact of a domain.

cacheHow frequently do resources need to be re-downloaded? This is derived from the cache-control, expires and pragma headers.
timeHow long do requests take to load? The time from when request is made until it is fully downloaded.
sizeHow big is it? This is the encoded size (actual transferred size) including headers.
cpuHow much overhead does executing the code incur? This is derived from CPU time spent on script parsing, compiling and evaluation on the main thread.

Each of these fields is assigned a value from 1-3, where 1 is little to no performance impact, and 3 is high impact. The delta between values representing an order of magnitude difference.

Categories

Categories assigned to each domain, attempting to describe its observed purpose or intent. See categories for the full list.


Entities

A list of companies and their properties. One file per company.

Each entity is defined using the following fields:

OwnerThe name of another entity that owns this entity if any
PropertiesA list of domains owned by this entity
NameName of the entity
PrevalenceThe percent of sites this entity is found on

Build data

/static

Data files used to regenerate the Tracker Radar

FileUse
categorized_trackersCSV file with domains and which categories they belong to
breakingBroken site data used for identifying whole sites or requests that cause breakage, described in detail below.

/generated

Generated files created while building Tracker Radar

FileUse
api_fingerprint_weightsAn object mapping browser APIs to their likelihood to be used for fingerprinting. Higher weight means that an API is more likely to be used for fingerprinting
data_by_siteData keyed down to site. Currently this contains information on the API calls attributed to scripts.
tracking-parametersAn object listing how prevalent a parameter is used in third party requests and cookies.

Tracking parameters

Tracking parameters are found by generating parameter values, and adding these to the crawl site URLs. When crawl data is processed these generated values can be found in cookies and third party requests.

  • totalSites - total number of sites processed
  • params - an object listing request and cookie tracking for each parameter. Keys in the params object are the parameter name.
    • prevalence - percent of totalSites that this parameter was seen in cookies or third party requests
    • exampleSites - list of example sites where either requests or cookies were found
    • requests3p
      • prevalence - percent of totalSites where this parameter was seen in a third party request
      • entities - top 10 entities using this parameter in requests
      • domains - top 10 domains using this parameter in requests
    • cookies
      • prevalence - percent of totalSites where this parameter was seen in a cookie
      • firstParty - count of first party cookies with this parameter
      • thirdParty - count of third party cookies with this parameter
      • entities - top 10 entities using this parameter in cookies
      • domains - top 10 domains using this parameter in cookies

Breakage data

/static/breaking

We use three breakage files: two temporary breakage files meant for quick fixes and one long-term breakage file for requests.

Temporary breakage data

Temporary breakage data is meant for quick fixes to address major site breakage. Temporary breakage entries will have a corresponding issue to find a long-term solution.

NameUse
breaking_sites_tempUsed to indicate that an entire site is breaking
breaking_requests_tempUsed to identify specific requests or resources that can cause breakage

Long-term breakage data

NameUse
breaking_requests_longtermUsed to identify specific requests or resources that can cause breakage

Breakage data formats

Request

NameUse
ruleA regex rule that will match on the request. These should be as specific as possible to fix the issue.
domainsAn optional list of domains that this breaking rule should apply to.
requestTypesAn optional list of request types that this breaking rule should apply to.
reason
  • category: List of breakage categories
  • links: List of links back to pull request where this breaking entry was added or changed

Site

The site breaking entries are key/value mapping a site domain to a breakage category.

NameUse
KeyDomain of the site identified to be broken
Valuebreakage category

Breakage categories

Categories defining the site or request breakage type.

CategoryDescription
VideoVideos don't load or have issues playing
ImagesImages don't load
CommentsMissing comment sections
ContentSite is missing useful content
LinksLinks or site navigation is broken
LoginBroken site login
PaywallSite asks to disable tracker blocking
OtherAnything that doesn't fit in an existing category