# What is firstpartysimulator.org? Cover Your Tracks' hop

> firstpartysimulator.org is an EFF domain. Cover Your Tracks loads it mid-test as a stand-in first-party site, so a hang there leaves the test running for ever.

Source: https://mosaicbrowser.com/blog/firstpartysimulator-org

## Why Cover Your Tracks sends you to firstpartysimulator.org

firstpartysimulator.org is an EFF domain. Cover Your Tracks loads it mid-test as a stand-in first-party site, so a hang there leaves the test running for ever.

![3: Three first-party sites, one tracker following you, beside a screenshot: a Mosaic leak test: every surface a site reads, checked from inside the profile page](https://mosaicbrowser.com/covers/firstpartysimulator-org.webp)

firstpartysimulator.org is a domain the Electronic Frontier Foundation runs for its Cover Your Tracks test. Partway through the test the browser is sent to firstpartysimulator.net, then there, then back to coveryourtracks.eff.org, because the test needs several different "ordinary websites" to see whether a tracker can follow you between them. If one of those hops hangs, the test never finishes, and nothing on screen says why.

We learned that from our own test runner, which had been reporting the hang as "the test was still running".

## What is firstpartysimulator.org for?

Cover Your Tracks, formerly Panopticlick, checks two things: how unique your fingerprint is, and whether your browser stops trackers. The second half cannot be measured on one site. A tracker is only a tracker if it recognises you on a second site, so the test plays both roles itself.

The EFF publishes the source, and its example configuration names every domain. Three are first-party stand-ins, in this order: `coveryourtracks.eff.org`, `firstpartysimulator.net` and `firstpartysimulator.org`. Three are the third parties embedded in each of them: `trackersimulator.org` as an ad server, `eviltracker.net` as a tracker and `do-not-tracker.org`, a tracker that publishes a Do Not Track policy. The route that walks the chain is called `/kcarter`:

```
coveryourtracks.eff.org/kcarter
  -> firstpartysimulator.net/kcarter
  -> firstpartysimulator.org/kcarter
  -> firstpartysimulator.org/kcarter?try2=true
  -> coveryourtracks.eff.org/results

```

Each page loads the three trackers. At the end the test counts how many loads of each tracker got through, and a tracker that got through on every page saw you on every site.

The fourth step loads the last first-party page a second time. The comment in the source says why: a second load is needed because of a change in how Privacy Badger checks for a site's Do Not Track policy, and it links the Privacy Badger issue that describes it.

Mosaic is a desktop app

Email yourself the link and open it on your computer.

[How it works: Machines that exist](https://mosaicbrowser.com/features/real-fingerprints)

## The address in our timeout message

Mosaic has a detection-test runner that opens public detectors inside a real profile and reads their verdicts. Cover Your Tracks is one of them. Its landing page runs nothing until you press "Test your browser", so the row has a `start` block that clicks the button by its visible label, then waits.

For a long time that wait was a fixed sleep, `actionSettleMs: 75000`, sitting under a comment that recorded the test had "finished inside 110s on this connection". The budget was known to be short on the day it was written, and the row came back `unread — the test was still running when the page was read`.

The repair was to poll for the result instead of sleeping: `start.actionReady`, a condition checked until it is true, with the old figure turned into a deadline. With it the row went to `pass — 18.28 bits of entropy, fingerprint unique`, ready at 34 seconds.

On the run after that change, the new timeout diagnostic printed where the tab actually was:

```
the tab is at https://firstpartysimulator.org/kcarter?try2=true (loading, visible, 0 chars)

```

That is the fourth hop of the chain, the second Privacy Badger load, and the domain was serving nothing. "Still running" had been hiding a stalled navigation to another host for as long as the row had existed. A longer sleep would never have fixed it, and a pass on another run would not have explained it.

## The ready check matched prose first

The first `actionReady` we wrote looked for the words "bits of identifying information" with no number. It fired at 42 seconds against the results page's own "How to read your report" section, text the page draws before any measurement lands. Requiring a number before "bits" fixed it, and it is the same pattern the extractor already used to read the score. The ready check and the extractor read one fact the same way.

By our own count, that is the fifth time our code has matched a word in a detector's prose instead of its verdict. The [randomized fingerprint post](https://mosaicbrowser.com/blog/cover-your-tracks-randomized) covers what the 18.28 bits mean for a profile. The wider habit of running a stock browser as the control next to a profile is in [automating fingerprint tests](https://mosaicbrowser.com/blog/automating-fingerprint-tests).

## If your own test hangs there

Check what can stop a request to firstpartysimulator.org or firstpartysimulator.net. A content blocker, a DNS filter or a proxy can refuse either one, or the EFF's server may be slow at that moment. Open the domain on its own in a new tab: if it does not load there, the test was never going to finish. A detector that hangs is a different problem from one that answers badly, which we wrote up separately in [a fingerprint demo that will not load](https://mosaicbrowser.com/blog/fingerprint-demo-not-loading).

## Questions

### What is firstpartysimulator.org?

An EFF domain used by Cover Your Tracks. It is the third of three stand-in websites the test sends you through, each with the same trackers embedded, to see whether those trackers recognise you from one site to the next.

### Is firstpartysimulator.org safe?

It belongs to the EFF and is part of Cover Your Tracks. Its name appears in the test's public source code next to coveryourtracks.eff.org, firstpartysimulator.net, trackersimulator.org, eviltracker.net and do-not-tracker.org.

### Why does the address bar change during Cover Your Tracks?

The test is a chain of page loads across three first-party domains, each embedding the same third-party trackers. It ends back on coveryourtracks.eff.org with the results.

### Why does Cover Your Tracks get stuck on firstpartysimulator.org?

If that domain does not answer, the chain stops there and the results page is never reached. An extension, a DNS filter or a proxy that blocks it will do the same.

## Related

['Randomized fingerprint' is the wrong goal on Cover Your Tracks](https://mosaicbrowser.com/blog/cover-your-tracks-randomized): Cover Your Tracks praises a randomized fingerprint, but values that change on every load are a signal too. Profiles need one stable, normal browser each.

[Running 49 fingerprint tests unattended, and what that takes](https://mosaicbrowser.com/blog/automating-fingerprint-tests): To automate browser fingerprint testing, tell a failed profile from a dead site, an unreadable page and your own bug. Our runner names each across 49 rows.

[fingerprint.com wouldn't load through our proxy, and that was a result](https://mosaicbrowser.com/blog/fingerprint-demo-not-loading): Through one residential exit the FingerprintJS demo hung; from the same Mac with no proxy it loaded. Our runner blamed itself. The exit was why.

[Browser fingerprint: what a site can read about your machine](https://mosaicbrowser.com/glossary/browser-fingerprint): A browser fingerprint is the set of values a site reads about your browser and computer, which together recognize you without cookies. What goes into one.









## Mosaic, on your own computer

The browser this blog is about: its own Chromium, fingerprints from real machines and a proxy exit per profile. Free holds 3 profiles. Pro is $49 a month for any number.

Mosaic is a desktop app

Email yourself the link and open it on your computer.
