$ fingerprint@info:~ echo $AUDIOCONTEXT
The Web Audio API provides a powerful and versatile system for controlling audio on the Web, allowing developers to
choose audio sources, add effects to audio, create audio visualizations, apply spatial effects (such as panning) and much more.
The Web Audio API involves handling audio operations inside an audio context, and has been designed to allow
modular routing. Basic audio operations are performed with audio nodes, which are linked together to form an
audio routing graph. Several sources — with different types of channel layout — are supported even within a single context.
This modular design provides the flexibility to create complex audio functions with dynamic effects.
For more details see, e.g., MDN web docs
AudioContext Fingerprinting scripts were found in the wild by Steven Englehardt during his study Online Tracking: A 1-million-site Measurement and Analysis (2016). The tracking scripts use OscillatorNodes to create periodic waveforms, such as a sine wave or a triangle wave. The output is passed to different nodes, such as AnalyserNodes, ScriptProcessorNodes, DynamicsCompressorNodes, which process, analyze or alter the incoming audio signals. Intermediate and final outputs are hashed and used as fingerprint. The crafted audio signals depend on the client's browser and system. Clients with different software and hardware shield differences in the created system-dependent audio signals, but the same client will shield the same results.
$ fingerprint@info:~ run audiocontext-demo
AudioContext properties Hash: | Hit the button above to start the test. |
---|---|
DynamicsCompressor (sum of buffer values): | Hit the button above to start the test. |
DynamicsCompressor (hash of full buffer): | Hit the button above to start the test. |
OscillatorNode Hash: | Hit the button above to start the test. |
Hybrid of OscillatorNode/DynamicsCompressor Hash: | Hit the button above to start the test. |
Overall AudioContext Fingerprint: | Hit the button above to start the test. |
Click this button to start the Audio Fingerprinting Test.
Click this button to start the Audio Fingerprinting Test.
Click this button to start the Audio Fingerprinting Test.
Click this button to start the Audio Fingerprinting Test.
Click this button to start the Audio Fingerprinting Test.