从 HTTP 消息中查找下载的文件类型

Finding the downloaded filetype from HTTP message

我正在尝试为流行的开源安全应用程序 ZAP 构建一个基本的下载文件扫描扩展。使用内置的嗅探器,我可以访问 HTTP 响应消息。我无法确定正在下载的文件的文件类型。尽管关于 HTTP 的 Mozilla blog 讨论了使用 'Content-Type' header 中的 MIME 类型来确定文件类型,但我发现我得到的响应消息中的 none 有任何内容除了 application/jsontext/htmlapplication/octet-stream。如何确定相应的 HTTP 响应 body 是否包含任何特定文件类型? .我就这样走投无路了!

我是这个领域的初学者,可能有一些我忽略的地方。任何帮助或指点将不胜感激。

The Content-Type entity-header field indicates the media type of the entity-body sent to the recipient or, in the case of the HEAD method, the media type that would have been sent had the request been a GET.

摘自“14.17 Content-Type”https://www.rfc-editor.org/rfc/rfc2616

他们举这个例子:

Content-Type: text/html; charset=ISO-8859-4

此 HTTP 请求或响应包含 HTML 的 body 形式的文本。

如果您不信任此 header(大多数情况下您可以),下一步将是分析文件内容。例如,如果文件包含开始和结束 HTML 标记,那么该文件很可能是 HTML 文件。如果文件以 [{ 开头并以 ]} 结尾,那么它很可能是 JSON 文件。当然,实际分析会而且应该更详细。