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


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.