How Does Web Fingerprinting Work?