toolkit

아무것도 업로드되지 않습니다. 확인하는 방법은 다음과 같습니다

모든 파일 변환 사이트에는 어딘가에 개인정보 보호 문구가 있습니다. 그것을 검증할 방법을 주는 곳은 거의 없습니다. 이 페이지는 그 방법을 제공합니다. 아래의 확인 절차는 각각 30초 정도 걸리고, 지금 쓰고 있는 브라우저 외에는 아무것도 필요하지 않으며, 우리가 거짓말을 한다면 즉시 드러날 것입니다.

주장의 정확한 내용

여기서 파일을 변환할 때 그 파일의 바이트는 어디로도 전송되지 않습니다. 디코더와 인코더는 브라우저가 한 번 다운로드한 뒤 사용 중인 프로세서에서 로컬로 실행하는 WebAssembly 모듈입니다. 이 사이트의 코드에는 파일 내용이 도달할 업로드 엔드포인트가 없습니다. 애초에 작성된 적이 없기 때문입니다.

이것은 좁은 주장이고, 의도적으로 좁습니다. 파일에 관한 주장입니다. 페이지가 네트워크 요청을 전혀 하지 않는다는 주장은 아닙니다. 사이트가 무엇을 보내는지는 아래 섹션에 나열해 두었습니다. 그것을 숨기는 페이지라면 첫 번째 주장도 믿을 가치가 없을 것이기 때문입니다.

직접 확인하기: 네트워크 탭

이 사이트의 아무 도구나 여세요. 무엇이든 변환하기 전에 F12(Mac에서는 Cmd+Option+I)를 눌러 개발자 도구를 열고 ‘네트워크’ 탭을 선택합니다. ‘로그 보존’ 항목이 있으면 체크하세요.

이제 파일을 끌어다 놓고 변환하세요. 목록을 지켜보면 해당 포맷의 WebAssembly 모듈(예: heic_bg.wasm)이 이 도메인에서 처음 한 번 다운로드되는 것은 보이지만, 파일을 반대 방향으로 실어 가는 것은 전혀 보이지 않습니다. 크기로 정렬하거나 목록을 Fetch/XHR로 필터링해 보세요. 업로드가 있다면 파일 크기만큼의 바이트를 페이로드에 담은 요청으로 나타나야 하고, 이 패널에서 그것을 숨길 방법은 없습니다.

없다는 것 자체가 핵심입니다. 업로드하는 변환 사이트는 여기서 그 사실을 감출 수 없습니다. 브라우저는 페이지가 하는 모든 요청을, 페이지가 보여 주고 싶지 않은 것까지 보고하기 때문입니다.

더 강한 확인: 네트워크 끄기

네트워크 탭은 페이지가 무엇을 했는지 보여 줍니다. 이 방법은 페이지가 무엇을 할 수 있는지 보여 줍니다. 아무 도구 페이지를 연 뒤 Wi-Fi를 끊거나 에어플레인 모드를 켜고 파일을 변환하세요. 그대로 동작합니다.

한 가지 솔직한 주의 사항이 있습니다. 어떤 포맷의 첫 변환은 그 포맷의 WebAssembly 모듈을 받아와야 하므로, 오프라인으로 가기 전에 연결된 상태에서 한 번 변환해 두세요. 그렇지 않으면 모듈이 아직 캐시에 없습니다. 그 뒤로는 전부 로컬에서 돌아가며, 오프라인 상태를 유지하는 것이 어떤 약속으로도 할 수 없는 방식으로 그것을 증명합니다.

직접 하지 않아도 되는 확인

여기의 모든 페이지는 Content Security Policy(CSP) 헤더와 함께 전송됩니다. 이 페이지가 무엇이든 보낼 수 있는 유일한 대상의 목록이며, 우리가 아니라 브라우저가 강제합니다. 같은 네트워크 탭에서 어느 페이지든 응답 헤더를 열면 우리의 정책을 읽을 수 있습니다.

이것이 중요한 이유는 약속이 아니라 제약이기 때문입니다. 이 사이트의 JavaScript가 사진을 그 정책에 없는 서버로 보내려 하면 브라우저가 요청을 거부하고 위반을 기록합니다. ‘아무것도 업로드되지 않는다’를 평판으로 믿는 것이 아니라 기계로 확인할 수 있게 하는 것이 바로 이 정책입니다.

사이트가 보내는 것

이 점을 솔직하게 밝히는 것이 이 페이지의 목적입니다. 운영 사이트인 privatetoolkit.org는 Google Analytics를 불러오며, 이것은 어떤 페이지가 조회되었고 세계 어느 지역에서 왔는지 대략 보고합니다. Google Signals와 광고 개인 맞춤 설정은 모두 꺼져 있습니다. 페이지에 방문자가 있었다는 것은 알지만 파일에 관해서는 아무것도 받지 않고 받을 수도 없습니다. 변환 코드와 분석 코드는 서로 닿지 않기 때문입니다.

사이트에는 광고 슬롯도 있지만, 이 글을 쓰는 시점에는 완전히 꺼져 있어 광고 스크립트가 전혀 로드되지 않습니다. 다시 켜진다면 한 네트워크의 배너 하나가 될 것이고, 광고라고 표시될 것입니다.

이것이 전체 목록입니다. 계정 시스템도 없고, 분석이 설정하는 것 외에 우리가 설정하는 쿠키도 없고, 파일 저장소도 없습니다. 저장할 것도 없습니다. 파일이 도착하지 않기 때문입니다.

이 설계가 요구하는 비용

‘기기에서 실행된다’를 공짜처럼 파는 것은 정직하지 않습니다. 사용 중인 프로세서가 작업하므로 긴 동영상은 실제로 시간이 걸리고, 매우 큰 파일은 담을 만큼의 메모리가 필요합니다. 서버 팜이라면 더 빨랐을 것입니다. 서버에서는 가능한 일부 변환은 브라우저에서 아예 불가능합니다.

그리고 컨테이너 변환은 코덱이 아니라 컨테이너를 바꿉니다. iPhone의 HEVC 동영상은 HEVC 디코더가 없는 컴퓨터에서 여전히 재생되지 않는 MP4가 됩니다. 나중에 쓸모없다는 것을 알게 될 성공을 보고하는 대신, 그런 일이 생기면 그렇다고 말합니다.

자주 묻는 질문

개발자가 아니어도 정말 직접 확인할 수 있나요?

예. 네트워크 탭 확인은 패널을 열고 목록을 보는 일입니다. 코드를 읽는 것이 아니라 무언가가 있는지 없는지를 보는 것입니다. 오프라인 확인은 그보다 더 간단합니다. Wi-Fi를 끄고 도구가 여전히 동작하는지 보면 됩니다.

변환 후 파일이 삭제되나요?

삭제할 것이 없습니다. 파일은 서버에 도달하지 않으므로 우리가 보관하거나 지울 사본이 어디에도 없습니다. 대부분의 변환 사이트는 이 질문에 보존 기간으로 답하지만, 여기서의 정직한 답은 그 질문 자체가 성립하지 않는다는 것입니다.

파일 크기 제한이 있나요?

우리가 두는 제한은 없습니다. 실질적인 한계는 사용 중인 기기의 메모리입니다. 변환하는 동안 파일이 거기에 담기기 때문입니다. 변환에 우리 비용이 들지 않으므로 과금을 이유로 상한을 두는 것도 없습니다.

오프라인에서도 동작하나요?

예, 원하는 포맷의 WebAssembly 모듈을 한 번 받아온 뒤에는 동작합니다. 온라인 상태에서 그 종류의 파일을 하나 변환해 두면 그 뒤로는 네트워크를 꺼도 도구가 계속 동작합니다.

WebAssembly 모듈 자체가 파일을 어딘가로 보내지 않는다는 것은 어떻게 알 수 있나요?

같은 Content Security Policy가 모듈에도 적용됩니다. 모듈은 페이지 안에서 실행되며 똑같이 강제되는 허용 대상 목록에 묶여 있습니다. 다른 곳으로 보내려는 어떤 시도도 브라우저가 차단하고 위반으로 기록합니다.