跳转到主要内容

bluemonday HTML清洗器的Python绑定

项目描述

pybluemonday

PyPI

pybluemonday是一个库,通过bluemonday快速清洗HTML。

pybluemonday将不受信任的用户生成内容作为输入,并将返回经过清洗的HTML,这些HTML通过了批准的HTML元素和属性的列表,以确保您可以在网页中安全地包含这些内容。

注意:此库处于可用状态,但仍然是实验性的。它可能没有与实际bluemonday完全的功能一致性,并且可能与其他库在清洗HTML时略有不同。欢迎提交PR和反馈以改进此库。

安装

pip install pybluemonday

示例

from pybluemonday import UGCPolicy
s = UGCPolicy()

print(s.sanitize("<script>alert(1)</script><b class='stuff'>testing</b>"))
# <b>testing</b>

s.AllowAttrs("class", "style").Globally()
print(s.sanitize("<script>alert(1)</script><b class='stuff' style='color: red;'>testing</b>"))
# <b class="stuff" style="color: red;">testing</b>
from pybluemonday import StrictPolicy
s = StrictPolicy()

s.sanitize("<center><b>Blog Post Title</b></center>")
# Blog Post Title

这是如何工作的?

pybluemonday是通过cgo构建的共享库绑定到bluemonday的。但是,pybluemonday不是复制整个API,而是在Go端使用反射和在Python端进行一些类型检查,以在尝试调用方法时调用正确的bluemonday函数。

本质上,您想要使用提供的pybluemonday.UGCPolicypybluemonday.StrictPolicypybluemonday.NewPolicy类创建一个策略,然后调用映射到适当的bluemonday结构方法的方法。

这是一个开放改进领域,但合理地覆盖了原始bluemonday接口。

此外,由于将 Go 结构体共享到 Python 较为困难,pybluemonday 在 Go 端保留对结构体的 ID 引用,并传递每个 Go 调用的引用。这意味着,如果您出于某种荒谬的原因损坏或更改 ID,您可能会遇到内存泄漏。这也是一个需要改进的开放领域。

性能

大多数基于 Python 的 HTML 清理库将需要依赖 html5lib 以合理的方式解析 HTML。因此,当使用这些库时,您可能会看到性能下降。

由于 pybluemonday 仅是对 bluemonday 的绑定,因此它具有非常好的性能,因为所有解析和处理都由 bluemonday 在 Go 中完成。Go 还提供了一个 HTML5 解析器,这意味着我们避免了 html5lib,但仍然可以很好地处理 HTML。

始终以怀疑的态度看待基准测试,但与其他类似的 Python 清理库相比,pybluemonday 的执行速度要快得多

❯ python benchmarks.py
bleach (20000 sanitizations): 37.613802053
html_sanitizer (20000 sanitizations): 17.645683948
lxml Cleaner (20000 sanitizations): 10.500760227999997
pybluemonday (20000 sanitizations): 0.6188559669999876

在 2016 款 MacBook Pro 15 英寸(2.7 GHz Intel Core i7,16 GB RAM)上进行的基准测试

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。

源分发

pybluemonday-0.0.14.tar.gz (9.6 kB 查看哈希值)

上传时间

构建分发

pybluemonday-0.0.14-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-pp310-pypy310_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-pp310-pypy310_pp73-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

pybluemonday-0.0.14-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

pybluemonday-0.0.14-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-pp39-pypy39_pp73-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

pybluemonday-0.0.14-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

pybluemonday-0.0.14-pp38-pypy38_pp73-win_amd64.whl (1.2 MB 查看哈希值)

上传于 PyPy Windows x86-64

pybluemonday-0.0.14-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-pp38-pypy38_pp73-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

pybluemonday-0.0.14-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

pybluemonday-0.0.14-pp37-pypy37_pp73-win_amd64.whl (1.2 MB 查看哈希值)

上传于 PyPy Windows x86-64

pybluemonday-0.0.14-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 PyPy macOS 10.9+ x86-64

pybluemonday-0.0.14-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.13 musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp313-cp313-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传于 CPython 3.13 musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp313-cp313-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.13 musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.13 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.13 macOS 11.0+ ARM64

pybluemonday-0.0.14-cp313-cp313-macosx_10_13_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.13 macOS 10.13+ x86-64

pybluemonday-0.0.14-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp312-cp312-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp312-cp312-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.12 musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.12 macOS 11.0+ ARM64

pybluemonday-0.0.14-cp312-cp312-macosx_10_13_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.12 macOS 10.13+ x86-64

pybluemonday-0.0.14-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp311-cp311-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp311-cp311-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.11 macOS 11.0+ ARM64

pybluemonday-0.0.14-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.11 macOS 10.9+ x86-64

pybluemonday-0.0.14-cp310-cp310-win_amd64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.10 Windows x86-64

pybluemonday-0.0.14-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp310-cp310-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp310-cp310-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.10 musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间: CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pybluemonday-0.0.14-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pybluemonday-0.0.14-cp39-cp39-win_amd64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

pybluemonday-0.0.14-cp39-cp39-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp39-cp39-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp39-cp39-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.9 musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp39-cp39-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pybluemonday-0.0.14-cp39-cp39-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.9 macOS 10.9+ x86-64

pybluemonday-0.0.14-cp38-cp38-win_amd64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

pybluemonday-0.0.14-cp38-cp38-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp38-cp38-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp38-cp38-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.8 musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp38-cp38-macosx_11_0_arm64.whl (1.2 MB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

pybluemonday-0.0.14-cp38-cp38-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ x86-64

pybluemonday-0.0.14-cp37-cp37m-win_amd64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.7m Windows x86-64

pybluemonday-0.0.14-cp37-cp37m-musllinux_1_2_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m musllinux: musl 1.2+ x86-64

pybluemonday-0.0.14-cp37-cp37m-musllinux_1_2_i686.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m musllinux: musl 1.2+ i686

pybluemonday-0.0.14-cp37-cp37m-musllinux_1_2_aarch64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.7m musllinux: musl 1.2+ ARM64

pybluemonday-0.0.14-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ ARM64

pybluemonday-0.0.14-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

pybluemonday-0.0.14-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pybluemonday-0.0.14-cp37-cp37m-macosx_10_9_x86_64.whl (1.3 MB 查看哈希值)

上传于 CPython 3.7m macOS 10.9+ x86-64

由以下机构支持