Skip to content

Instantly share code, notes, and snippets.

@ahounsel
Last active July 26, 2019 00:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahounsel/2c07211304fc903040bac3e6cb5f51ca to your computer and use it in GitHub Desktop.
Save ahounsel/2c07211304fc903040bac3e6cb5f51ca to your computer and use it in GitHub Desktop.
Schema for DoH Experiment #7

Attributes

Telemetry Key Measurement Description Data Collection Category Tracking Bug
usesComcastMalwareFilter boolean; true if testprotectedbrowsing.xfinity.com successfully resolves, false otherwise. Collected once when the browser starts. Category 1 1553700
usesComcastParentalFilter boolean; true if testparentalcontrols.xfinity.com successfully resolves, false otherwise. Collected once when the browser starts. Category 1 1553700
blocksExampleAdultSite boolean; true if exampleadultsite.com doesn't resolve to 146.112.255.155, false otherwise. This is a test domain for OpenDNS's parental controls, and it publicly listed. Collected once when the browser starts. Category 1 1553700
usesGoogleSafeSearch boolean; true if Google resolves to the same IP address as the "safe search" version of the website, false otherwise. Collected once when the browser starts. Category 1 1553700
usesYouTubeSafeSearch boolean; true if YouTube resolves to the same IP address as the "safe search" version of the website, false otherwise. Collected once when the browser starts. Category 1 1553700
notInPSL integer; counts the number of unique domains visited by the user while the browser was last open that do not have a public suffix. Collected once when the browser starts. Category 2 1553700
pslResolvesLocal integer; counts the number of unique domains visited by the user while the browser was last open that have a public suffix but resolve to an RFC 1918 address. Collected once when the browser starts. Category 2 1553700
uniqueDomains integer; counts the total number of unique domains visited by the user while the browser was last open. Collected once when the browser starts. Category 2 1553700

OR

Telemetry Key Measurement Description Data Collection Category Tracking Bug
stateKey (enter,installed,loaded,ineligible) depending on the state of the study Category 1 1553700
@tdsmith
Copy link

tdsmith commented Jul 10, 2019

How often are these pings sent? What's the relationship between when the domains are resolved and when the pings are sent? For the counts, do the pings contain a running total over the course of the experiment, or only observations made since the last ping?

@ahounsel
Copy link
Author

ahounsel commented Jul 11, 2019

Thanks Tim. At a high level, this is how the addon works:

  • When the browser starts, the addon automatically resolves the canary domains, the "safe search" domain names and normal domain names for Google/YouTube/Bing, and exampleadultsite.com. Boolean values are then updated in local storage for resolvesCanaryDomains, usesSafeSearch, and resolvesBlocklistDomains.
  • As users browse websites, counters are updated in local storage for notInPSL, pslResolvesLocal, and uniqueDomains.

The values are read from local storage and sent with a ping when the browser restarts. As such, each ping contains observations made since the last ping.

Let me know if you have any other questions.

@tdsmith
Copy link

tdsmith commented Jul 11, 2019

Thanks! Got it, the addon sends pings at browser launch. Does the addon send a ping when the study expires or is removed? I'm wondering about the case where a user doesn't close the browser for the duration of the study.

One more question: how are you counting unique domains? Is a domain a hostname, eTLD+1, or something else?

@ahounsel
Copy link
Author

By "unique domain", I mean an FQDN. For example, if google.com and mail.google.com were visited by a user, I would count those as 2 unique domains.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment