如何为位于Http Url中的文件生成MD5哈希值

本文关键字:文件 哈希值 MD5 Url Http | 更新日期: 2023-09-27 18:01:49

我正在写一个网络爬虫来搜索文件和下载。我的问题是我不想下载已经下载到本地驱动器的相同文件。我知道可以使用MD5哈希进行比较,但我如何在HTTP URL上做到这一点而不将它们下载到本地磁盘?

如果这个方法是错误的。请建议一个更好的解决方案

如何为位于Http Url中的文件生成MD5哈希值

除非web服务器有某种共享MD5的服务,否则No.

计算文件哈希需要文件中的每个字节。这就是为什么更改单个字节会更改哈希值,以防止获得修改的文件。

要生成哈希,您将需要数据(即,您需要以某种方式下载它)。

我建议你调查使用If-Modified-Since HTTP头代替(或者ETag/If-None-Match,如果特定的服务器提供它)。

您将能够在远程文件上执行的唯一比较是大小比较。不幸的是,这可能不足以确定内容是否相同。

老问题,但是PowerShell 5+可以帮助获得远程Url文件的MD5,通过自动下载它作为一个字节流,然后一步计算MD5:

$wc = [System.Net.WebClient]::new()
$pkgurl = 'http://www.remoteurl/file.zip'
$FileHash = Get-FileHash -Algorithm MD5 -InputStream ($wc.OpenRead($pkgurl)) 
write-host $FileHash.Hash