Google 이미지에서 이미지를 볼 때 실수로 "다른 이름으로 이미지 저장"또는 "이미지보기"를 클릭 할 수도 있습니다 (어떻게하면 다운로드 메시지가 표시됨). 그러면 해당 파일을 다운로드 할 것인지 묻는 창이 열립니다. 그러나 저장하기 전에 취소하면 여전히 "서버"쪽에서 다운로드 된 것으로 보입니까? 이 주제에 정통하지 않기 때문에 "서버"를 사용하면 해당 활동을 기록 / 저장할 수있는 모든 항목 만 다루게됩니다.
Google 이미지에서 이미지를 볼 때 실수로 "다른 이름으로 이미지 저장"또는 "이미지보기"를 클릭 할 수도 있습니다 (어떻게하면 다운로드 메시지가 표시됨). 그러면 해당 파일을 다운로드 할 것인지 묻는 창이 열립니다. 그러나 저장하기 전에 취소하면 여전히 "서버"쪽에서 다운로드 된 것으로 보입니까? 이 주제에 정통하지 않기 때문에 "서버"를 사용하면 해당 활동을 기록 / 저장할 수있는 모든 항목 만 다루게됩니다.
답변:
서버 측에서 볼 때 "브라우저 창에서보기위한 전송"과 "저장을위한 다운로드"사이 에는 기술적 인 차이 가 전혀 없습니다 .
서버가 다운로드를 위해 (작은) 미리보기와 (더 큰) 실제 이미지를 제공하고 액세스 한 이미지를 구별 할 수 있습니다. 그러나 이러한 파일에 대한 액세스, 요청의 IP 주소, 브라우저 소프트웨어의 일반적인 "ID 문자열"( 클라이언트의 의도는 아님 ) 만 등록하고 기록 할 수 있습니다 .
그러나 파일 액세스가 항상 클라이언트 컴퓨터와 사람의 상호 작용으로 인한 것은 아닙니다 . 한편으로, "다른 이름으로 이미지 저장 ..."을 사용하지 않더라도 브라우저는 이미지 및 기타 웹 사이트 데이터를 시스템에 저장합니다. 반면, 많은 브라우저는 탐색 속도를 높이기 위해 미리 "링크를 따라 가기"(즉, 다운로드!) 합니다. 이러한 파일을 고의적으로 액세스하지 않은 경우에도 브라우저 캐시는 이러한 방식으로 로컬 백업에 들어갈 수 있습니다!
마지막으로, "다른 이름으로 저장"을 사용하고 취소 (대상 파일 이름을 선택하지 않음)하면 사용중인 브라우저의 구현에 따라 다운로드가 시작되거나 시작되지 않을 수 있습니다.
curl https://www.google.com/ -H 'User-Agent: I am really a web browser, trust me' >> /dev/null
;)
이 주제에 정통하지는 않기 때문에 "서버"를 사용하는 것은 해당 활동을 기록 / 감시 / 저장할 수있는 모든 항목 만 다루고 있습니다.
HTTP 서버에 취소 된 다운로드가 표시되지 않지만 페이지에 이러한 이벤트를 모니터하는 Javascript 코드가있을 수 있습니다.
Javascript에는 이미지를 마우스 오른쪽 버튼으로 클릭하는 것을 감지하는 데 사용할 수있는 이벤트 핸들러가 있으며 팝업 메뉴에서 선택한 항목을 추측하기 위해 다른 마우스 움직임을 모니터링 할 수 있습니다. 그런 다음 스크립트는 정보를 서버에 즉시 보내거나 로컬 브라우저 저장소에 저장 한 후 나중에 보낼 수 있습니다.
특정 Google 이미지 검색의 경우 해당 페이지의 Javascript에는 마우스 이벤트를 수신하는 여러 핸들러가 있습니다. 그러나 코드가 난독 처리되어 어떤 종류의 모니터링을 수행하는지 쉽게 알 수 없습니다.
HEAD
HTTP 요청이 아닌 HTTP 요청 일 수 GET
있습니다.
이것은 서버에 따라 다릅니다.
서버는 다운로드가 시작될 때 등록 할 수 있습니다 (이름을 제안하기 때문에 알아야합니다).
또한 서버는 전송 된 바이트 수와 연결이 닫 혔을 때 및 그 시간을 추적 할 수 있습니다.
재개 된 다우로드 및 멀티 스레드 다운로드와 같은 다른 가능성도 있지만 서버는이 모든 것을 알고 기록 할 수 있습니다.
이미지를 마우스 오른쪽 버튼으로 클릭하고 다운로드하는 특정 경우 클라이언트 쪽 캐싱으로 인해 다운로드가 다운로드로 전혀 등록되지 않을 수 있습니다.
Content-Disposition: attachment; filename="…"
그래서 브라우저 프로그램 다운로드 프롬프트에서 다음 서버가 요청에 대해 알 다운로드를 취소하는 경우에도 - 심지어 다운로드가 중단 한 것을 구별 할 수 아마도합니다.
다운로드가 시작되지 않았으므로 원격 서버는 다운로드 활동을 인식하지 않아야합니다.
그러나 원격 서버 는 이미지 를 브라우저에 표시하기 위해 이미 다운로드했음을 알고 있으며 사본은 브라우저 캐시에 있습니다 ...
로컬 시스템을 직접 모니터링하는 "엔티티"는 해당 활동과 관련된 내용을 기록 할 수 있습니다.
Content-Disposition
헤더에는 실제 파일 이름이 포함됩니다.
Content-Disposition
헤더 로 대체 할 수 있으며 (이미 두 번 언급 했음) 먼저 요청을 해야합니다 . 또한 브라우저는 대상 디렉토리를 선택하기 전에 페이로드 다운로드를 시작할 수 있습니다.