何时下载下载文件?


21

在Google图片上查看图片时,可能会不小心点击“图片另存为”或“查看图片”(有时也会提示下载)。然后,这将打开一个窗口,询问您是否要下载所述文件。但是,如果在保存任何内容之前取消操作,这是否仍视为从“服务器”端的下载?由于我不太熟悉该主题,因此我对“服务器”的使用仅涵盖可能记录/保存所述活动的任何实体。


4
这样由谁注册?许多日志分析软件(例如awstats,goaccess)都考虑下载带有后缀(.zip,.pdf ...)的任何文件。扩展列表通常是可配置的。其他软件可能使用不同的方法。
jjmontes

Answers:


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 Image搜索的特定情况下,该页面上的JavaScript确实有多个处理程序来监听鼠标事件。但是,代码被混淆了,因此要区分它执行哪种监视并不容易。


1
“目标另存为”通常将与服务器联系以获取文件名,类型,大小。可能带有HEADHTTP请求而不是GET
Ben Voigt

@BenVoigt在“将目标另存为”和“将图像另存为”之间有很大的区别。一个用于链接,另一个用于链接,这些链接已经可见并且因此已经下载。
约瑟夫

@Josef:是的,但是我在问题中什么都没有看到,这表明OP希望将自己限制为已在缓存中的内容。实际上,我有一个强烈的相反建议,那就是“在任何东西被保存之前取消”。
Ben Voigt

6

这取决于服务器。

开始下载时,服务器将能够进行注册(考虑一下,它必须知道,因为它会建议一个名称)。

服务器还可以跟踪传输了多少字节以及连接是否/何时关闭,这可以显示diwnload是否完成。

还有其他可能性,例如恢复下载和多线程下载-但是服务器仍然可以知道并记录所有这些信息。

请注意,在右键单击并下载图像的特定情况下,由于客户端缓存,下载可能根本不会注册为下载。


服务器不建议名称。当我右键单击您的头像并选择“图像另存为”时,没有进行任何其他网络请求
DavidPostill

9
@DavidPostill取决于如何启动下载。如果您跟随链接或重定向到资源,并且服务器做出响应,Content-Disposition: attachment; filename="…"以便浏览器显示下载提示,那么即使取消下载,服务器也将知道该请求-甚至可能区分下载已中止。
Bergi

4

如果...在保存任何内容之前取消,“服务器”会通知/将其记录为下载内容吗?

远程服务器不应注意到任何下载活动,因为尚未开始下载。

但是,远程服务器知道您已经下载了该图像以便在浏览器中显示它...并且副本将在您的浏览器缓存中...

任何直接监视本地计算机的“实体”都可以记录有关该活动的信息。


2
“另存为...”会发出请求,不是吗?浏览器必须知道一个建议的名字。网址可能只是/ download,但Content-Disposition标头将包含实际的文件名。
数据

1
@data编号。名称在下载页面的html中。
DavidPostill

1
请注意,某些浏览器(例如Chrome)急切地预下载并缓存了要访问的网页中显示的URL。
Tobia Tesan

3
@DavidPostill你弄错了。名称可以被Content-Disposition标头覆盖(已经多次提到),这意味着必须首先发出请求。此外,在选择目标目录之前,浏览器可以并且确实开始下载有效内容。
莫妮卡

6
我知道的每个Web浏览器都将在您单击链接后立即开始下载,并且至少在过去20年中已经这样做。他们不会等待您选择文件名,而是会保存到临时文件(或内存)中,并在您单击“确定”后重新命名。
马克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.