웹페이지가 요청하지 않았는데도 브라우저가 알려준 모든 것을 보여줌
12 hours ago
5
이 페이지는 방문 직후 첫 밀리초 동안 브라우저가 넘긴 데이터만으로 위치, 기기, 브라우저, 언어, GPU, 배터리, 폰트, 사용자 선호 등을 보여주며, 익스플로잇이나 해킹 없이 공개 문서화된 표준 기능만 사용함
모든 요청 헤더의 IP 주소 를 ip-api.com · Free tier · CC-BY-SA 에 보내 도시와 인터넷 제공자 이름으로 바꾸며, 조회는 저장하지 않고 화면에는 일부 옥텟만 표시하지만 나머지도 알 수 있다고 명시함
폰트 지문 은 렌더링된 텍스트 너비로 설치 폰트를 감지하고, Electronic Frontier Foundation · Cover Your Tracks 는 브라우저 고유성을 확인하는 도구를 제공하며, 2014년 Princeton 연구는 상위 100,000개 웹사이트의 5%에서 캔버스 지문 을 발견함
페이지에서 실행하지는 않았지만, 단일 사용자 제스처로 마지막 복사 내용 읽기를 요청할 수 있는 Clipboard API , 배터리 잔량과 방전 시간으로 최대 30분 추적 가능성을 보인 “The Leaking Battery”, favicon으로 로그인 사이트를 감지하는 기법이 존재함
서버로 보낸 것은 도착 과 완료 두 개의 익명 이벤트뿐이고 cookies, localStorage, sessionStorage, IndexedDB, 서비스 워커 캐시에 아무것도 저장하지 않으며, 탭을 닫으면 방문자를 잊는다고 명시함
브라우저가 도착 직후 넘긴 정보
taken. 의 모든 관찰은 방문 직후 첫 밀리초 동안 방문자의 브라우저에서 나온 데이터이며, 익스플로잇·취약점·해킹 없이 공개 문서화된 표준 기능만 사용함
위치
모든 요청 헤더에 포함되는 IP 주소 를 ip-api.com · Free tier · CC-BY-SA 에 보내 도시와 인터넷 제공자 이름으로 변환함
조회는 일시적이며 양쪽 모두 저장하지 않고, 화면에는 IP의 첫 번째와 마지막 옥텟만 표시하지만 나머지도 알 수 있다고 명시함
GDPR에서는 추적에 쓰일 때 IP 주소가 개인정보로 간주될 수 있으며, taken.은 추적·보관·로그를 하지 않음
브라우저 API
폰트와 캔버스 지문
클립보드와 배터리
MDN · Clipboard API specification 에 따르면 클릭이나 탭 같은 단일 사용자 제스처로 페이지가 마지막으로 복사한 내용 읽기를 요청할 수 있음
마지막 복사 내용은 비밀번호, 주소, 초안 메시지일 수 있으며, taken.은 요청하지 않았지만 기능 자체는 최신 브라우저에 존재함
Olejnik, Englehardt, Narayanan의 2015년 논문 “The Leaking Battery”는 배터리 잔량과 방전 시간 조합만으로 쿠키나 계정 없이 최대 30분 동안 여러 웹사이트에서 방문자를 추적할 수 있음을 보였음
Firefox는 2016년에 해당 API를 제거했지만 Chrome과 Edge는 여전히 노출함
실행하지 않은 기법과 남기지 않은 데이터
로그인 사이트 감지
taken.은 실행하지 않았지만, 브라우저에 특정 서비스의 favicon URL을 로드하게 하고 성공·실패를 관찰해 어느 사이트에 로그인했는지 감지하는 기법이 문서화돼 있고 합법적이며 널리 배포돼 있음
로그인 상태와 로그아웃 상태에서 다른 이미지를 반환하는 차이를 이용하며, 허가 없이 Facebook, Google, X, GitHub, Reddit, LinkedIn 등 여러 서비스 로그인 여부를 알 수 있음
브라우저 안에서 계산한 바코드
카운트 아래에 표시되는 16개 선 은 GPU, 폰트, 화면 크기, 언어, 시간대, 운영체제, 브라우저, 색상 깊이에서 파생된 높이로 구성됨
같은 데이터는 같은 바코드를 만들고, 다른 방문자는 다른 바코드를 보게 되며, 계산은 브라우저 안에서만 일어나고 전송되지 않음
정확히 같은 지문을 가진 사람이 있으면 같은 바를 보겠지만 그 가능성은 작음
문장 생성 방식
모든 문장은 Matt가 직접 썼고, 실행 시점에 언어 모델이 문장을 쓰거나 고치지 않음
코드는 브라우저가 반환한 값에 따라 미리 작성된 문장 템플릿 중 하나를 고르며, 사람이 쓴 문장으로 다룰 수 없는 조건이면 아무 말도 하지 않도록 만들어짐
서버로 보낸 것
서버로 보낸 이벤트는 도착 과 완료 두 개의 익명 이벤트뿐이며, 쿠키·식별자·보관된 IP는 없음
서버는 각 요청의 본문을 버리고 아무것도 반환하지 않으며, 요청이 있었다는 전송 계층 기록은 호스팅 제공자의 기본 보관 기간인 보통 며칠 동안 로그에 남을 수 있음
대부분의 사이트는 광고업체, 지문 수집기, 세션 재생 도구, 태그 관리자에 수백 개의 추가 비컨을 보내지만, taken.은 자체 서버로 두 개만 보내고 그 사실을 알림
기기에 저장한 것
cookies, localStorage, sessionStorage, IndexedDB, 서비스 워커 캐시에 아무것도 저장하지 않음
화면에 보인 데이터는 브라우저 안에서 계산됐고, IP 지리 위치 조회와 두 개의 익명 이벤트를 제외하면 기기를 떠나지 않음
탭을 닫으면 taken.은 방문자를 잊으며, 소스 공개와 함께 “대부분의 페이지는 그렇게 말할 수 없다”고 마무리함
시리즈 맥락과 제작
Vol. I은 방문자가 머무는 동안 세계에서 일어난 일, Vol. II는 놓친 하늘, Vol. III는 발밑에 이미 있던 것, Vol. IV는 방문자 자신으로 점점 좁혀지는 구성을 가짐
페이지는 Matt 가 Rise Up Labs 에서 만들었고, 이후 에디션은 X 와 Bluesky 에 올라올 예정임
Homepage
Tech blog
웹페이지가 요청하지 않았는데도 브라우저가 알려준 모든 것을 보여줌
🔉 볼륨 줄이기
🔊 볼륨 키우기
🔇 음소거
⏭️ 다음 곡