如何为位于Http Url中的文件生成MD5哈希值
本文关键字:文件 哈希值 MD5 Url Http | 更新日期: 2023-09-27 18:01:49
我正在写一个网络爬虫来搜索文件和下载。我的问题是我不想下载已经下载到本地驱动器的相同文件。我知道可以使用MD5哈希进行比较,但我如何在HTTP URL上做到这一点而不将它们下载到本地磁盘?
如果这个方法是错误的。请建议一个更好的解决方案
除非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