什么时候注册下载?

Fel*_*x R 21 browser download

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

jvb*_*jvb 52

从服务器端看,“传输到浏览器窗口查看”和“下载存储”完全没有技术上的区别。

也许服务器会提供(较小的)预览和(较大的)真实图像供下载,并且可以区分哪个已经被访问。但它只能注册(和记录)对这些文件的访问、请求来自的 IP 地址、浏览器软件的通用“id 字符串”——而不是客户端的意图。

但是文件访问并不总是来自与客户端计算机的人机交互。一方面,即使您甚至不使用“将图像另存为...”,浏览器也会在您的系统上存储图像和其他网站数据。另一方面,许多浏览器甚至会提前“跟踪链接”(即:下载东西!),以加快导航速度。浏览器缓存甚至可能会以这种方式进入您的本地备份,即使您从未故意访问这些文件!

最后,根据您使用的浏览器的实现,使用“另存为”和取消(不选择目标文件名)可能会也可能不会启动下载。

  • @UweKeim 这实际上是来自服务器的提示。通常浏览器会遵循它,但服务器无法判断客户端是否实际上是浏览器,也无法判断它是否会尊重此标头。`curl https://www.google.com/ -H '用户代理:我真的是一个网络浏览器,相信我' >> /dev/null` ;) (13认同)
  • 见鬼:“另存为”可能会也可能不会启动下载,无论取消 - 如果浏览器已经拥有图像,为什么再次从服务器请求它(尽管有“无缓存”提示等)。 (12认同)
  • 实际上,就 [`Content-Disposition` HTTP 标头](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition) 而言,_可能_有所不同:` inline` 表示浏览器中的视图,`attachment` 表示下载。 (6认同)

jpa*_*jpa 7

由于我不太精通这个主题,因此我对“服务器”的使用仅涵盖可能记录/观看/保存所述活动的任何实体。

虽然 HTTP 服务器没有看到取消的下载,但页面上可能有 Javascript 代码监控此类事件。

Javascript 具有可用于检测对图像的右键单击的事件处理程序,并且很可能可以监视其他鼠标移动以猜测您从弹出菜单中做出的选择。之后,脚本可以轻松地立即将信息发送到服务器,或者将其存储在本地浏览器存储中并稍后发送。

在 Google 图片搜索的特定情况下,该页面上的 Javascript 确实有多个处理程序侦听鼠标事件。然而,代码被混淆了,所以很难判断它进行了什么样的监控。


dav*_*dgo 6

这是服务器相关的。

服务器将能够在下载开始时注册(想想看,它必须知道,因为它建议了一个名称)。

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

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

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

  • @DavidPostill 取决于下载的启动方式。如果你点击一个链接或重定向到一个资源,并且服务器响应`Content-Disposition:attachment; filename="..."` 以便浏览器显示下载提示,*然后*即使在取消下载时服务器也会知道请求 - 甚至可能可以区分下载已中止。 (9认同)