How Does Browser Fingerprinting Work?