我正在编写一个网络爬虫来搜索文件并下载。我的问题是,我不想下载已经下载到本地驱动器的相同文件。我知道可以使用MD5哈希进行比较,但如何在不将它们下载到本地磁盘的情况下对HTTP URL执行此操作?
如果这种方法不正确,请提供更好的解决方案。
如果这种方法不正确,请提供更好的解决方案。
除非Web服务器有一些共享MD5的服务,否则不行。
计算文件哈希需要文件中的每个字节。这就是为什么更改单个字节会更改哈希,以防止获取已修改的文件。
虽然这是一个老问题,但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
你只能对远程文件进行大小比较。不幸的是,这可能不足以确定内容是否相同。