В общем случае есть механизмы, как совокупность всей доступной информации о пользователе в браузере, начиная с таки простых как ip адрес и заканчивая сбором комбинации установленного софта на машине, шрифтов, железа (память, процессор и диск на основе бенчмарков, gpu напрямую запрашивая параметры ускорителя) и багов, в том же pdf просмотрщике...
Пример - например используя кеш (можно определить по скорости ответа закешированы ли данные или нет) даже включившего прокси выявить (сейчас в приватном режиме кеш тоже чистится, но вроде бы как то через favicon до этой информации добираются)
https://habr.com/ru/articles/357238/
https://habr.com/ru/companies/oleg-bunin/articles/...
и прочее, что гуглится сразу - browser fingerprinting