추적 전쟁: 한 개발자가 모든 쿼리 문자열을 금지한 이유

디지털 감시가 만연한 시대에 URL은 단순한 위치 지정자를 넘어 추적 신호등이 되었다. utm_source부터 fbclid까지, 거대 플랫폼들은 종종 대상 사이트나 사용자의 동의 없이도 외부 링크에 긴 추적 파라미터 문자열을 추가한다.

웹 개발자 Chris Morgan은 최근 개인 웹사이트에서 무단 쿼리 문자열을 전면 금지하는 강경한 입장을 취했다. 이 조치는 Hacker News에서 웹 표준, 사용자 경험, 그리고 “독립 웹” 철학의 교차점에 대한 활발한 논쟁을 촉발했다.

쿼리 문자열 과다에 대한 반론

Morgan의 동기는 간단하다: 사용자에 대한 “남용”과 URL 오염에 대한 반감이다. 제3자 사이트가 다른 사이트를 가리키는 링크에 추적 파라미터를 추가하면, 본질적으로 목적지 URL을 자신들의 텔레메트리용으로 탈취하는 것이다.

Morgan이 말하길, 트래픽이 어디서 오는지 알고 싶다면 Referer 헤더를 확인하면 된다. 쿼리 문자열을 추가함으로써, 참조 사이트는 목적지에 서비스를 제공하는 것이 아니라, 링크가 수동으로 복사·공유될 때도 지속되는 영구적인 추천 기록을 만들게 된다.

이 “과다”는 단순히 미학적인 문제가 아니다. 많은 사용자는 추적 ID가 삽입돼 수천 글자에 달하는 링크를 공유하려다 좌절한다. 한 댓글자는 공유하기 전에 쿼리 파라미터를 제거하는 북마클릿을 활용한 실용적인 해결책을 제시했다:

(()=>navigator.clipboard.writeText(location.origin+location.pathname))();

기술 구현 및 “Sassy” 서버

Morgan은 Caddy 웹 서버의 설정 파일인 Caddyfile을 통해 이 금지를 구현했다. 대부분의 서버가 그렇듯 알 수 없는 파라미터를 단순히 무시하는 대신, 그의 사이트는 오류를 반환한다. 구체적으로 414 URI Too Long 응답을 사용했으며, 이는 기술적 정확성보다는 유머를 위한 것이라고 인정한다. 또한 파라미터 없이 뒤에 물음표만 남은 요청에 대한 특수 케이스도 포함시켰다.

표준 관점에서 이는 허용된다. 한 댓글자가 W3C 표준을 검토한 뒤 언급했듯, 쿼리 문자열은 본질적으로 ? 뒤에 오는 퍼센트 인코딩 문자열이다. URLSearchParams가 JavaScript에서 이를 파싱하는 표준 방법을 제공하지만, 서버는 최종적으로 이를 어떻게 처리할지 자유롭게 결정할 수 있다. 예상치 못한 쿼리 문자열에 대해서는 404 Not Found400 Bad Request가 기술적으로 적절한 응답이며, 이는 경로와 마찬가지로 URL API의 일부이다.

반론: 사용자 적대감 vs. 사이트 자율성

많은 이들이 이 조치를 “작은 웹”을 대담하게 되찾는 행위라며 찬사했지만, 다른 이들은 근본적으로 최종 사용자에게 적대적이라고 주장한다. 비판의 핵심은 사용자가 클릭하는 링크를 거의 제어하지 못한다는 점이다. 사용자가 Facebook이나 Instagram에서 자동으로 추적 ID가 추가된 링크를 클릭하면, 자신의 잘못이 아님에도 오류 페이지를 보게 된다.

비평가들은 이 접근법이 추적자를 처벌하기보다 추적의 피해자를 처벌한다고 주장한다. 제안된 대안은 다음과 같다:

  • Silent Stripping: 사용자에게 동일한 URL이지만 쿼리 문자열이 없는 상태로 리다이렉트한다.
  • Educational Interstitials: 추적 “gubbins”(잡동사니)이 발견되었음을 사용자에게 알리고, 깨끗한 링크를 제공하는 페이지를 표시한다.
  • Permissive Ignoring: 파라미터를 무시하고 콘텐츠를 제공한다. 이는 대부분의 웹에서 기본 동작이다.

더 넓은 철학적 분열

이 논의는 웹을 바라보는 방식에 깊은 긴장이 존재함을 드러낸다. 한쪽은 “자유방임” 관점이다: 웹은 허가가 필요 없는 하이퍼언어이며, 외부 링크 작성자는 원하는 대로 URL을 만들 수 있다. 이 관점에서 엄격함은 웹이 확장될 수 있게 한 느슨한 결합을 위배하는 “보수성”으로 여겨진다.

반대편은 웹을 주권적인 디지털 공간들의 집합으로 보는 관점이다. 이 틀 안에서 웹사이트 소유자는 서버 인터페이스를 정의할 절대적인 권리를 가진다. Morgan이 주장하듯, “내 웹사이트다: 내가 원하는 대로 할 수 있다.”

추적을 넘어: 쿼리 문자열의 유용성

쿼리 문자열이 추적 전용은 아니라는 점도 주목할 가치가 있다. 검색 질의, 페이지네이션, 특정 동적 콘텐츠 등에 필수적이다. 일부 사용자는 개인 정리를 위해 활용하기도 한다; 한 댓글자는 날짜 쿼리 문자열을 사용해 같은 페이지의 고유 아카이브를 북마크 관리자로 만들었다고 언급했다.

궁극적으로 쿼리 문자열 금지는 상징적인 행위다. 이는 산업 전반의 추적 흐름을 멈추지는 못하겠지만, 현대 웹의 보이지 않는 인프라에 대한 기술적 항의이며, 서버와 이를 운영하는 사람이 여전히 인터넷과 어떻게 상호작용할지 선택할 수 있음을 상기시킨다.

Sources