MIME Sniffing标准的实现(https://mimesniff.spec.whatwg.org/)
项目描述
xtractmime
xtractmime
是一个BSD许可的 Python 3.7+ 实现的MIME Sniffing标准。
从PyPI
安装
pip install xtractmime
基本用法
以下是一些使用 xtractmime.extract_mime
的简单示例
>>> from xtractmime import extract_mime
>>> extract_mime(b'Sample text content')
b'text/plain'
>>> extract_mime(b'', content_types=(b'text/html',))
b'text/html'
额外功能,通过 xtractmime.mimegroups
中的方法检查 MIME 类型是否属于特定的 MIME 类型组
>>> from xtractmime.mimegroups import is_html_mime_type, is_image_mime_type
>>> mime_type = b'text/html'
>>> is_html_mime_type(mime_type)
True
>>> is_image_mime_type(mime_type)
False
API参考
函数 xtractmime.extract_mime(*args, **kwargs) -> Optional[bytes]
参数
body: bytes
content_types: Optional[Tuple[bytes]] = None
http_origin: bool = True
no_sniff: bool = False
extra_types: Optional[Tuple[Tuple[bytes, bytes, Optional[Set[bytes]], bytes], ...]] = None
supported_types: Set[bytes] = None
返回与输入数据匹配的 MIME类型本质(例如 text/html
),如果找不到匹配项,则返回 None
。
body
参数是要确定 MIME 类型的字节序列。 xtractmime
只考虑 body
的前几个字节,并且读取的字节数由 xtractmime.RESOURCE_HEADER_BUFFER_LENGTH
常量定义。
content_types
是资源元数据中给出的 MIME 类型的元组。例如,对于通过 HTTP 获取的资源,用户应传递 Content-Type
标头中提到的 MIME 类型列表。
http_origin
表示资源是否通过 HTTP 获取(默认为 True
)或未通过 HTTP 获取(False
)。
no_sniff
是一个标志,如果用户代理不希望对资源进行嗅探,则为 True
,否则为默认的 False
。如果将 X-Content-Type-Options
响应标头设置为 nosniff
,则用户可能希望将此参数设置为 True
。有关更多信息,请参阅 此处。
extra_types
是用于检测附加 MIME 类型的模式元组。元组中的每个条目应遵循以下格式 (字节模式,模式掩码,前导字节,MIME 类型)
- 字节模式 是用于与
body
的前几个字节(xtractmime.RESOURCE_HEADER_BUFFER_LENGTH
)进行比较的字节序列。 - 模式掩码 是指示 字节模式 字节重要性的字节序列:
b"\xff"
表示匹配的字节是严格重要的,b"\xdf"
表示该字节以 ASCII 不区分大小写的方式重要,b"\x00"
表示该字节不重要。 - 前导字节 是在内容中匹配前导字节时要忽略的字节集合。
- MIME 类型 如果模式匹配则应返回。
示例 extra_types
extra_types = ((b'test', b'\xff\xff\xff\xff', None, b'text/test'), ...)
注意
在使用 extra_types
参数时请谨慎,因为它可能会为 xtractmime
引入一些权限提升漏洞。有关更多信息,请参阅 此处。
可选的 supported_types
是用户代理支持的 MIME 类型的集合。如果未指定 supported_types
,则假定所有 MIME 类型都受支持。使用此参数可以提高 xtractmime
的性能。
函数 xtractmime.is_binary_data(input_bytes: bytes) -> bool
如果提供的字节序列包含任何二进制数据字节,则返回 True
,否则返回 False
MIME 类型组函数
以下函数在给定的 MIME 类型属于某个特定的 MIME 类型组 时返回 True
,否则返回 False
xtractmime.mimegroups.is_archive_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_audio_video_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_font_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_html_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_image_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_javascript_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_json_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_scriptable_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_xml_mime_type(mime_type: bytes) -> bool
xtractmime.mimegroups.is_zip_mime_type(mime_type: bytes) -> bool
示例
>>> from xtractmime.mimegroups import is_html_mime_type, is_image_mime_type, is_zip_mime_type
>>> mime_type = b'text/html'
>>> is_html_mime_type(mime_type)
True
>>> is_image_mime_type(mime_type)
False
>>> is_zip_mime_type(mime_type)
False
变更日志
查看 变更日志
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
xtractmime-0.2.1.tar.gz 的散列
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc00b78b51edb113d6e25b2a81bf21a5f66b274e9a5270c5b72169b98c2997af |
|
MD5 | ce36eb16fd294058f156e6053f82b2d9 |
|
BLAKE2b-256 | 7a5cfecb22023edcfb766225aef2c8857e372997d76070401f3ab20d35c037bc |
xtractmime-0.2.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 13d6cce82325dfa329ea2cb57c4d324838f68ef4125090bc6c9a393ad88cfcc3 |
|
MD5 | 1c6a3e2ee712acf7ad747ef2a54b17ab |
|
BLAKE2b-256 | 678190382f87c60f57a22e6cedd5795b67909117af20cb4c3dd5adec87764288 |