Когда загрузка зарегистрирована как таковая?

21

При просмотре изображений на изображениях Google можно случайно нажать «сохранить изображение как» или «просмотреть изображение» (что иногда также вызывает запрос на загрузку). Затем откроется окно с вопросом, хотите ли вы загрузить указанный файл. Однако, если вы отмените, прежде чем что-либо будет сохранено, это все еще рассматривается как загрузка со стороны «сервера»? Поскольку я не очень хорошо разбираюсь в этой теме, мое использование «сервера» просто охватывает любую сущность, которая может записать / сохранить указанную деятельность.

Феликс Р
источник
4
Зарегистрирован как таковой кем? Многие программы анализа журналов (например, awstats, goaccess) рассматривают возможность загрузки любого файла с определенными суффиксами (.zip, .pdf ...). Список расширений обычно настраивается. Другое программное обеспечение может использовать другие подходы.
Jjmontes

Ответы:

52

Со стороны сервера нет абсолютно никакой технической разницы между «передачей для просмотра в окне браузера» и «загрузкой для хранения».

Возможно, сервер предоставит (меньший) предварительный просмотр и (большее) реальное изображение для загрузки и сможет определить, к какому из них был получен доступ. Но он может регистрировать (и регистрировать) только доступ к этим файлам, IP-адрес, с которого поступил запрос, общую «строку идентификатора» программного обеспечения браузера, а не намерение клиента.

Но доступ к файлам не всегда является результатом взаимодействия человека с клиентским компьютером. С одной стороны, браузеры хранят изображения и другие данные веб-сайта в вашей системе, даже если вы даже не используете «сохранить изображение как ...». С другой стороны, многие браузеры даже «следуют по ссылкам» (то есть загружают вещи!) Заранее , чтобы ускорить навигацию. Кэш браузера даже может попасть в вашу локальную резервную копию таким образом, даже если вы никогда не обращались к этим файлам преднамеренно!

Наконец, использование «сохранить как» и отмена (без выбора имени файла назначения) может инициировать или не инициировать загрузку, в зависимости от реализации используемого вами браузера.

JVB
источник
12
Черт: «сохранить как» может инициировать или не запускать загрузку, независимо от ее отмены - если в браузере уже есть изображение, зачем запрашивать его снова с сервера (подсказки «нет кэша» и тому подобное).
минимальная масса
6
На самом деле, может быть разница, с точки зрения Content-Dispositionзаголовка HTTP : inlineуказывает на просмотр в браузере, attachmentзагрузку.
Уве Кейм
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 и т. Д. Уже не находятся в кеше браузера. В противном случае браузер не может определить, каким может быть имя файла, тип документа или даже наличие какого-либо содержимого файла для сохранения. Браузер будет выдавать какое - то запрос к серверу, а сервер будет «считать» , что , однако он хочет.
Кристофер Шульц
7

Поскольку я не очень хорошо разбираюсь в этой теме, мое использование «сервера» просто охватывает любую сущность, которая может записывать / наблюдать / сохранять указанную активность.

Хотя HTTP-сервер не видит отмененную загрузку, на странице может присутствовать код Javascript, который отслеживает такие события.

В Javascript есть обработчики событий, которые можно использовать для определения щелчка правой кнопкой мыши по изображению, и вполне вероятно, что можно отслеживать другие движения мыши, чтобы угадать, какой выбор вы сделаете из всплывающего меню. После этого скрипт может легко отправить информацию на сервер немедленно или сохранить ее в локальном хранилище браузера и отправить позже.

В конкретном случае поиска изображений Google, Javascript на этой странице имеет несколько обработчиков, слушающих события мыши. Однако код запутан, поэтому нелегко определить, какой тип мониторинга он выполняет.

JPA
источник
1
«Сохранить объект как» обычно связывается с сервером для получения имени файла, типа, размера. Возможно с HEADHTTP-запросом, а не GET.
Бен Фойгт
@BenVoigt существует большая разница между «Сохранить объект как» и «Сохранить изображение как». Один для ссылок, другой для изображений, которые уже видны и, следовательно, были загружены ранее.
Йозеф
@Josef: Да, но я не вижу в этом вопросе ничего, что бы указывало на то, что ОП хочет ограничиться содержанием, уже находящимся в кеше. На самом деле я вижу сильное предположение об обратном в фразе «отмени, прежде чем что-либо будет спасено».
Бен Фойгт
6

Это зависит от сервера.

Сервер сможет зарегистрироваться, когда начнется загрузка (подумайте об этом, он должен знать, потому что он предлагает имя).

Сервер также может отслеживать, сколько байтов было передано, и если / когда соединение закрылось, что может показать, завершена ли загрузка.

Есть и другие возможности, такие как возобновленная загрузка и многопоточная загрузка, но, опять же, сервер может знать и записывать все это.

Обратите внимание, что в конкретном случае щелчка правой кнопкой мыши и загрузки изображения возможно, что загрузка не будет регистрироваться как загрузка вообще из-за кэширования на стороне клиента.

davidgo
источник
Сервер не предлагает имя. Никаких дополнительных сетевых запросов не было сделано, когда я
щелкнул
9
@DavidPostill Зависит от того, как начинается загрузка. Если вы переходите по ссылке или перенаправляете на ресурс, а сервер отвечает Content-Disposition: attachment; filename="…"так, что браузер показывает приглашение на загрузку, то даже при отмене загрузки сервер узнает о запросе - и, возможно, даже может различить, что загрузка была прервана.
Берги
4

Если ... вы отменяете, прежде чем что-либо будет сохранено, "сервер" замечает / записывает это как загрузку?

Удаленный сервер не должен замечать какие-либо действия по загрузке, так как загрузка не была начата.

Однако удаленный сервер знает, что вы уже загрузили изображение , чтобы отобразить его в своем браузере ... и копия будет в кеше браузера ...

Любая «сущность», отслеживающая ваш локальный компьютер напрямую, может записать что-либо об этой активности.

ДэвидПостилл
источник
2
«Сохранить как ...» сделает запрос, не так ли? Браузер должен знать, какое имя предложить, например. URL может быть просто / скачать, но Content-Dispositionзаголовок будет содержать фактическое имя файла.
данные
1
@data No. Имя в html загруженной страницы.
DavidPostill
1
Обратите внимание, что некоторые браузеры, такие как Chrome, предварительно загружают и кэшируют URL-адреса, которые появляются на посещаемой вами веб-странице.
Тобия Тесан
3
@DavidPostill Вы ошибаетесь. Имя может быть переопределено Content-Dispositionзаголовком (уже упоминавшимся вам пару раз), то есть запрос должен быть сделан первым. Кроме того, браузеры могут начать загрузку полезных данных, прежде чем вы выберете каталог назначения.
Легкость гонки с Моникой
6
Каждый известный мне веб-браузер начнет загрузку, как только вы нажмете на ссылку, и делал это в течение по крайней мере последних двадцати лет. Они не будут ждать, пока вы выберете имя файла - они сохранят во временный файл (или память) и переименуют его, как только вы нажмете «ОК».
Марк