검색 결과가 이름을 밝힌 페이지로 곧장 연결되는 경우는 드물다. 클릭은 리디렉터, 동의를 위한 중간 페이지, 로그인 서비스를 거칠 수 있으며 각 홉은 단독으로 실패할 수 있는 별도의 요청이다. Safari의 Network 탭은 그 순서를 보이게 유지하지만, 클릭 전에 기록을 시작했을 때만 그렇다. 유용한 증거는 처음 실패한 URL이지 결과에 표시된 주소가 아니다.

클릭 전에 기록 시작하기

탭에서 Web Inspector를 열고 검색 결과를 건드리기 전에 Network로 전환한다. Preserve Log를 켜면 페이지를 교체하는 탐색을 넘어 목록이 남는다. 기존 항목을 지우고 정확히 한 번 클릭한다. 페이지가 로드된 뒤 시작한 기록은 필요한 요청을 이미 잃은 상태다.

개인 데이터가 없는 페이지를 쓰고, 비교하는 동안 브라우저 프로필과 VPN 상태를 바꾸지 않는다. 둘 중 하나를 중간에 바꾸면 두 경로는 비교할 수 없게 된다.

리디렉션을 순서대로 읽기

행을 위에서 아래로 읽고 상태 코드를 따라간다. Location이 다른 호스트를 가리키는 301이나 302는 목적지가 아니라 홉이다. 그 뒤의 요청은 자체 이름 조회, TLS 핸드셰이크, 정책 검사를 갖는 새 탐색이다. 콘텐츠가 도착하기 전에 클릭이 몇 개의 호스트를 건드리는지 세어 본다.

WebKit의 Network 탭 안내서는 요청 기록과 Preserve Log 옵션이 어떻게 동작하는지 설명하므로, 희소한 목록을 해석하기 전에 읽을 만하다. 빠진 행은 보통 기록이 늦게 시작되었거나 service worker가 캐시에서 응답했다는 뜻이며, 브라우저가 홉을 건너뛰었다는 뜻이 아니다.

직접 탐색과 비교하기

같은 프로필과 네트워크에서 의도한 최종 페이지로 직접 입력하거나 붙여넣어 두 번째 패스를 한다. 두 목록이 갈라지는 첫 행부터 비교한다. 클릭 경로가 직접 경로가 결코 닿지 않는 중간에서 실패한다면 문제는 그 중간에 있다. 둘 다 같은 origin에 도달하는데 하나만 거부된다면 계정 상태나 요청 세부가 더 나은 단서다.

두 기록을 타임스탬프와 함께 나란히 둔다. 시간 차이는 인과의 증거가 아니지만 다음에 어느 서비스를 조사할지 좁혀 준다. 실패한 각 행이 어느 호스트의 것인지 적어 두는데, 같은 브라우저 증상이라도 단계마다 소유자가 다르기 때문이다. 직접 패스도 실패한다면 클릭 경로는 차별 요인이 아니다.

실패 단계를 정확히 지목하기

행의 오류 문구는 사이트가 차단되었다는 일반적인 주장보다 구체적이다. 이름 해석 실패, 끝나지 않는 연결, TLS 오류, HTTP 상태는 서로 다른 소유자를 가진 네 개의 다른 단계다. 그 단계를 일반적 실패가 아니라 말로 기록하면 에스컬레이션 대상이 분명해진다.

StageWhat the row showsWho owns it
Name resolutionNo address, request never startsResolver or local DNS policy
ConnectionAddress known, transport never completesRoute, firewall or upstream reachability
TLSHandshake error or certificate warningInterception, clock or certificate trust
HTTPA status code comes backOrigin, gateway or account policy

Ping과 traceroute는 호스트에 대한 단서를 더할 수 있지만 브라우저의 리디렉션 체인을 재생하지도, HTTPS 요청의 성공을 증명하지도 않는다. 호스트에 대한 성공적인 ping이 같은 호스트의 TLS 오류와 함께 존재할 수도 있다. 웹 요청 기록을 주 증거로 두고 이후 네트워크 시험은 보조 세부로 다룬다.

토큰을 흘리지 않고 추적 공유하기

추적을 내보내거나 붙이기 전에 모든 URL, 헤더, 쿼리 매개변수를 검토한다. 리디렉션 체인은 세션 식별자, 이메일 주소, 동의 상태, 서명된 링크를 자주 옮긴다. 그 값은 바꾸거나 잘라 내고, 조사에 꼭 필요한 origin, 상태, 시각은 남긴다.

처음 실패한 요청, 그 앞의 홉, 리디렉션 상태를 넘긴다. 이 세 가지가 있으면 다음 사람이 전체 추적을 읽거나 계정을 건드리지 않고 경로를 재현할 수 있다.

관련 글