web - 无需完全下载即可获取 zip/rar 结构

标签 web zip rar

是否可以在不完全下载的情况下了解网站上的存档内容? 例如,我想知道里面有pdf文件。如果是,我会下载这样的 zip/rar,如果没有 - 我会跳过它。 那么,是否可以获取一小部分存档并解压文件夹/文件结构?

最佳答案

是的,这是可能的,但我认为这也取决于您下载的服务器。您需要制作 HTTP range requests获取您请求的数据片段。

对于 ZIP 文件,您需要获取文件末尾的所有中心目录记录。您可以通过获取足够的最后数据并查找中央目录记录结尾 (EOCD) 来完成此操作。如果没有注释,这应该是从 0x06054b50 开始的最后 22 个字节。该记录具有中央目录相对于存档开始位置的偏移量。然后,您确定是否已在第一次抓取中下载了所有数据,或者是否需要再次抓取更多数据。之后,您只需解释中央目录文件头即可查看 ZIP 中是否有 PDF 文件。有关文件格式的信息可以在 Wikipedia page 上找到。或者在那边的引用文献之一中。

对 RAR 文件执行相同的操作将会更加困难,因为没有一个位置可以从中获取所有元数据。您需要检查 RAR 中的文件头 block 。如果该文件只有一个存档文件,您可以只获取前 X 个字节并进行检查。看看RAR TechNote.txt了解如何解析 RAR 文件。

我对 RAR 文件做了同样的事情,但随后是基于 NZB 文件从 Usenet 进行的。生成的 RAR 元数据收集在 SRR file 内。您可以在 pyReScene 中找到该代码以及其他 RAR 相关代码。项目。从 HTTP 执行相同的操作会容易得多,因为您可以忽略 yEnc 编码内容,并且可以更精确地选择字节范围。

关于web - 无需完全下载即可获取 zip/rar 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099468/

相关文章:

python - 在 Windows 7 上比较 archiwum.rar 内容和从文件夹中的 .rar 中提取的数据

python - 使用 Python 从许多 CBR 存档中删除第一个文件

angularjs - 在 Angular 模型(ajax 调用所在的 Angular 服务)中检索当前域以准备完整的 api url 以检索数据

go - Go 中的并行 zip 压缩

c# - Zip 文件导致的 SharpZipLib 问题\而不是/

python - Zipfile python模块字节大小差异

php - 如何为社交网站中的新帖子创建 post_id

php - ajax 和 seo 加载单页的最佳实践

css - 媒体查询不适用于 Wordpress

java - 使用 java 提取 .rar 文件