다운로드는 언제 등록됩니까?


21

Google 이미지에서 이미지를 볼 때 실수로 "다른 이름으로 이미지 저장"또는 "이미지보기"를 클릭 할 수도 있습니다 (어떻게하면 다운로드 메시지가 표시됨). 그러면 해당 파일을 다운로드 할 것인지 묻는 창이 열립니다. 그러나 저장하기 전에 취소하면 여전히 "서버"쪽에서 다운로드 된 것으로 보입니까? 이 주제에 정통하지 않기 때문에 "서버"를 사용하면 해당 활동을 기록 / 저장할 수있는 모든 항목 만 다루게됩니다.


4
누구에 의해 등록 되었습니까? 많은 로그 분석 소프트웨어 (예 : awstats, goaccess)는 특정 접미사 (.zip, .pdf ...)가있는 파일을 다운로드하는 것으로 간주합니다. 확장명 목록은 일반적으로 구성 할 수 있습니다. 다른 소프트웨어는 다른 접근 방식을 사용할 수 있습니다.
— jjmontes

답변:


52

서버 측에서 볼 때 "브라우저 창에서보기위한 전송"과 "저장을위한 다운로드"사이 에는 기술적 인 차이 가 전혀 없습니다 .

서버가 다운로드를 위해 (작은) 미리보기와 (더 큰) 실제 이미지를 제공하고 액세스 한 이미지를 구별 할 수 있습니다. 그러나 이러한 파일에 대한 액세스, 요청의 IP 주소, 브라우저 소프트웨어의 일반적인 "ID 문자열"( 클라이언트의 의도는 아님 ) 만 등록하고 기록 할 수 있습니다 .

그러나 파일 액세스가 항상 클라이언트 컴퓨터와 사람의 상호 작용으로 인한 것은 아닙니다 . 한편으로, "다른 이름으로 이미지 저장 ..."을 사용하지 않더라도 브라우저는 이미지 및 기타 웹 사이트 데이터를 시스템에 저장합니다. 반면, 많은 브라우저는 탐색 속도를 높이기 위해 미리 "링크를 따라 가기"(즉, 다운로드!) 합니다. 이러한 파일을 고의적으로 액세스하지 않은 경우에도 브라우저 캐시는 이러한 방식으로 로컬 백업에 들어갈 수 있습니다!

마지막으로, "다른 이름으로 저장"을 사용하고 취소 (대상 파일 이름을 선택하지 않음)하면 사용중인 브라우저의 구현에 따라 다운로드가 시작되거나 시작되지 않을 수 있습니다.


12
도대체 : "다른 이름으로 저장"은 취소 여부와 상관없이 다운로드를 시작하거나 시작하지 않을 수 있습니다. 브라우저에 이미 이미지가있는 경우 서버에서 다시 요청하는 이유 ( "캐시 없음"힌트 등).
— minnmass

6
실제로 HTTP 헤더 측면에서 차이 가있을 수 있습니다 : 브라우저의보기, 다운로드를 나타냅니다 . Content-Dispositioninlineattachment
— Uwe Keim

13
@UweKeim 실제로 서버의 힌트입니다. 일반적으로 브라우저는 브라우저를 따르지만 서버는 클라이언트가 실제로 브라우저인지 또는이 헤더를 존중할지 여부를 판단 할 방법이 없습니다. curl https://www.google.com/ -H 'User-Agent: I am really a web browser, trust me' >> /dev/null;)
— ElmoVanKielmo

1
... 그리고 그것이 이론적 인 것 이상임을 보여주기 위해 PDF를 고려하십시오. 지금까지는 브라우저에서 다운로드로 취급했지만 최신 브라우저는 직접 브라우저를 표시 할 수 있습니다.
— MSalters

1
URL 등이 브라우저 캐시에없는 경우 브라우저 는 다운로드 를 시작합니다. 그렇지 않으면 브라우저는 파일 이름, 문서 형식 또는 저장할 파일 내용이 있는지를 알 수있는 방법이 없습니다. 브라우저는 서버에 일종의 요청을 발행하지만 서버 는 원하는 것을 "계산"합니다.
— Christopher Schultz

7

이 주제에 정통하지는 않기 때문에 "서버"를 사용하는 것은 해당 활동을 기록 / 감시 / 저장할 수있는 모든 항목 만 다루고 있습니다.

HTTP 서버에 취소 된 다운로드가 표시되지 않지만 페이지에 이러한 이벤트를 모니터하는 Javascript 코드가있을 수 있습니다.

Javascript에는 이미지를 마우스 오른쪽 버튼으로 클릭하는 것을 감지하는 데 사용할 수있는 이벤트 핸들러가 있으며 팝업 메뉴에서 선택한 항목을 추측하기 위해 다른 마우스 움직임을 모니터링 할 수 있습니다. 그런 다음 스크립트는 정보를 서버에 즉시 보내거나 로컬 브라우저 저장소에 저장 한 후 나중에 보낼 수 있습니다.

특정 Google 이미지 검색의 경우 해당 페이지의 Javascript에는 마우스 이벤트를 수신하는 여러 핸들러가 있습니다. 그러나 코드가 난독 처리되어 어떤 종류의 모니터링을 수행하는지 쉽게 알 수 없습니다.


1
"다른 이름으로 대상 저장"은 일반적으로 파일 이름, 유형, 크기를 얻기 위해 서버에 접속합니다. 아마도 HEADHTTP 요청이 아닌 HTTP 요청 일 수 GET있습니다.
— 벤 Voigt

@BenVoigt는 "다른 이름으로 대상 저장"과 "다른 이름으로 이미지 저장"간에 큰 차이가 있습니다. 하나는 링크 용이고 다른 하나는 이미 표시되어 이전에 다운로드 된 이미지 용입니다.
— 요셉

@Josef : 맞습니다. 그러나 OP가 캐시에 이미 들어있는 내용으로 자신을 제한하고 싶다는 것을 나타내는 질문에는 아무것도 없습니다. 사실 나는 '무엇이 저장되기 전에 취소'라는 구절에서 그와 반대로 강력한 제안을 봅니다.
— 벤 Voigt

6

이것은 서버에 따라 다릅니다.

서버는 다운로드가 시작될 때 등록 할 수 있습니다 (이름을 제안하기 때문에 알아야합니다).

또한 서버는 전송 된 바이트 수와 연결이 닫 혔을 때 및 그 시간을 추적 할 수 있습니다.

재개 된 다우로드 및 멀티 스레드 다운로드와 같은 다른 가능성도 있지만 서버는이 모든 것을 알고 기록 할 수 있습니다.

이미지를 마우스 오른쪽 버튼으로 클릭하고 다운로드하는 특정 경우 클라이언트 쪽 캐싱으로 인해 다운로드가 다운로드로 전혀 등록되지 않을 수 있습니다.


서버는 이름을 제안하지 않습니다. 아바타를 마우스 오른쪽 버튼으로 클릭하고 "다른 이름으로 이미지 저장"을 선택한 경우 추가 네트워크 요청이 없었습니다
— DavidPostill

9
@DavidPostill 다운로드 시작 방법에 따라 다릅니다. 당신이 링크 나 리디렉션 리소스에, 서버의 응답을 따른다면 Content-Disposition: attachment; filename="…"그래서 브라우저 프로그램 다운로드 프롬프트에서 다음 서버가 요청에 대해 알 다운로드를 취소하는 경우에도 - 심지어 다운로드가 중단 한 것을 구별 할 수 아마도합니다.
— 베르 기

4

... 저장하기 전에 취소하면 "서버"가이를 다운로드로 통지 / 기록합니까?

다운로드가 시작되지 않았으므로 원격 서버는 다운로드 활동을 인식하지 않아야합니다.

그러나 원격 서버 는 이미지 를 브라우저에 표시하기 위해 이미 다운로드했음을 알고 있으며 사본은 브라우저 캐시에 있습니다 ...

로컬 시스템을 직접 모니터링하는 "엔티티"는 해당 활동과 관련된 내용을 기록 할 수 있습니다.


2
"다른 이름으로 저장 ..."은 요청하지 않습니까? 브라우저는 어떤 이름을 제안해야하는지 알아야합니다. URL은 평범한 / download이지만 Content-Disposition헤더에는 실제 파일 이름이 포함됩니다.
— 데이터

1
@data No. 이름은 다운로드 한 페이지의 html에 있습니다.
— DavidPostill

1
Chrome과 같은 일부 브라우저는 방문하는 웹 페이지에 표시되는 URL을 열심히 사전 다운로드하고 캐시합니다.
— Tobia Tesan

3
@DavidPostill 당신은 착각합니다. 이름은 Content-Disposition헤더 로 대체 할 수 있으며 (이미 두 번 언급 했음) 먼저 요청을 해야합니다 . 또한 브라우저는 대상 디렉토리를 선택하기 전에 페이로드 다운로드를 시작할 수 있습니다.
— 모니카와의 가벼움

6
내가 아는 모든 웹 브라우저는 링크를 클릭하자마자 다운로드를 시작하며 지난 20 년 동안 다운로드를 시작했습니다. 파일명을 선택할 때까지 기다리지 않습니다. 임시 파일 (또는 메모리)에 저장하고 "확인"을 누르면 이름을 바꿉니다.
— 마크
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.