有没有办法从url检查该文件是否已下载?

时间:2016-07-27 05:35:45

标签: python md5

  

假设我有两个重定向到同一文件的URL(分别托管在2台服务器上),我从其中一个url下载了该文件。当我点击另一个网址时,是否可以避免再次下载同一个文件(如果文件存在则检查系统)?

     

主要目标是优化数据使用并消除冗余。

我读过有关文件的md5检查,但我可以在互联网上计算md5校验和,而无需下载吗?

2 个答案:

答案 0 :(得分:2)

您可以使用Etag HTTP标头。

  

ETag是由Web服务器分配给特定的不透明标识符   在URL处找到的资源的版本。如果是资源表示   在该URL发生变化时,会分配一个新的不同的ETag。用过的   以这种方式,ETag类似于指纹,它们可以是   快速比较,以确定是否两个表示   资源是一样的。

然而

  

在HTTP标头中使用ETag是可选的(不是强制性的   HTTP 1.1标头的其他一些字段)。 ETags的方法   生成从未在HTTP规范中指定。

答案 1 :(得分:1)

如果没有下载文件,就无法计算md5哈希值。

您可以做的是使用geturl()方法检查重定向的网址是否相同:

if urlopen(url1).geturl() == urlopen(url2).geturl():
    print("It's the same file")