跳至主要內容
Lizely

HTML 清理工具

透過瀏覽器解析器標準化一個 HTML 片段,並可選擇移除註解節點,但不會預覽或執行結果。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.貼上一個 HTML 片段或文件,並決定是否移除備註節點。
  2. 2.標準化後,審查僅 body 的文字輸出與註解移除數量,但不會執行。
  3. 3.僅在確認目的地也需要真正的 HTML 清理工具時,才複製完整結果。

關於HTML 清理工具

HTML Cleaner 是一個協助瀏覽器標準化與格式化的工具,並非安全性過濾器。請貼上 HTML 片段或完整文件,選擇是否移除 HTML 註解節點,並透過 text/html 模式下的 DOMParser 進行標準化。結果會從解析後的文件主體 innerHTML 進行序列化,並僅在唯讀文字區顯示。這個工具從不會將標準化後的標記插入可見頁面、產生即時預覽、執行解析後的指令碼,或將輸入上傳至 Lizely。DOMParser 文件沒有瀏覽上下文,解析期間也不會執行指令碼,但瀏覽器仍可能下載解析 iframe 或 img 元素所參考的遠端資源。請避免貼上包含遠端資源 URL 的敏感 HTML,以免這些請求將資訊揭露至其他主機。

瀏覽器端的 HTML 解析器設計上具有寬容性。它能將標籤名稱轉為小寫、引號屬性、插入隱含標籤(如 tbody),修復部分缺失的結束標籤,並根據 HTML 樹構造規則重新排列標記。因此,錯誤的 HTML 通常會被修復而非以 XML 風格的解析錯誤拒絕。該工具會報告解析 API 異常、缺少 body 輸出或無效的解析結果,但並不能宣稱為嚴格的 HTML 驗證工具,亦不保證修復後的結構與作者原意相符。

序列化刻意限定於 body.innerHTML。完整的輸入文件可能包含 doctype、html、head、title、meta、link、style 和 body 節點,但返回的文字僅包含解析後 body 的子節點標籤。doctype 與文件殼層不會被複製。僅 head 內的後設資料在輸出中會被排除,除非 HTML 解析器根據其標準修復規則將特定識別字串移至 body 內。當必須保留完整的頁面殼層時,請使用具備文件意識的編輯器。

評論刪除是唯一可選的刪除規則。啟用時,工具會走過解析後的內容,並在序列化前移除評論節點。若禁用,評論將保留。它不會移除指令碼、樣式、iframe、表單、SVG、MathML、事件處理屬性、javascript URLs、遠端 URLs、內聯 CSS、data 屬性、ID、類別或未知元素。它不會重寫 URL 方案、強制內容策略,或應用允許清單。

這個區別對安全性至關重要。包含指令碼或 onerror 屬性的結果,如果後續被其他應用程式注入至活頁頁面中,仍然具有危險性。DOMParser 會建立一個指令碼禁用的獨立文件,並透過此介面將序列化結果儲存於 textarea 中,但將輸出複製至 innerHTML、CMS、電子郵件模板或其它執行環境中,可能會在該處觸發行為。處理不受信任的 HTML 時,應使用針對目標環境配置的維護清潔器。

輸入內容最多可含 500,000 UTF-16 字元單位,標準化輸出最多可含 1,000,000。輸入的原始限制在解析前即會檢查。完整 body 的序列化結果在返回前會進行測量。精確的邊界會被接受;超出邊界的一個值將會以明確訊息失敗。不會有任何切片、抽樣、部分序列化或預設切換至不同清理策略的行為。解析後或註解移除後的空 body 為有效且為零長度輸出。

HTML 的標準化並非傳統的美化排版工具。DOMParser 與 innerHTML 產生的是瀏覽器標準化序列化結果,但並不能保證縮排、換行、屬性排序、空白字元保留或跨瀏覽器版本的位元組對位元組一致性。pre、textarea、script 與 style 內的內容將遵循 HTML 解析規則,不會被自訂詞法處理重新格式化。此設計可避免簡單排版工具意外分割原始文字內容或改變 DOM 意義。

編輯輸入內容或更改註解選項時,會立即清除先前的結果、錯誤、統計資料、複製狀態與複製計時器。複製功能使用產生號碼與掛載狀態保護機制,因此若遲到的權限回應來自較早的複製嘗試,無法在編輯、重試或解除安裝後恢復過期狀態。若複製請求被拒絕,完整的只讀輸出仍可供手動選擇。

WHATWG HTML 活頁標準定義了 text/html 的詞素化與樹狀結構建立。MDN 檔案說明瞭 DOMParser 的指令碼禁用行為、可能的 iframe 與 img 下載,以及後續將解析的標記注入活躍 DOM 的風險。MDN 的 innerHTML 參考檔案說明瞭片段序列化與相關注入風險。九個標準撰寫的測試案例涵蓋標籤與屬性正規化、遺失結尾標籤修復、僅 body 範圍、備註刪除與保留、模板內容、刻意保留指令碼與事件屬性,以及表格正規化。

當你想檢視瀏覽器如何規範化片段、從未變更的解析結構中移除備註,或準備標籤內容進行人工檢閱時,請使用此工具。請勿用來驗證標準符合性、確保使用者輸入安全、保留完整文件、美化縮排、壓縮原始碼、保證跨瀏覽器位元組一致性,或證明複製輸出內容可以安全發布。

方法與來源

在呼叫解析器前,拒絕空值輸入以及 500,000 和 UTF-16 編碼單位以上的原始文字。使用 text/html 透過 DOMParser 解析,要求包含 body 內容,並選擇性地透過遍歷 body 與巢狀 template DocumentFragments 來移除僅限 Comment 節點,然後序列化 body.innerHTML。在公開結果前,必須在 1,000,000 編碼單位或以下進行完整驗證。僅透過受控的唯讀 textarea 來呈現輸出;永遠不要使用 innerHTML 或即時預覽。揭露指令碼已被禁用,但 DOMParser 仍可能下載 iframe 或 img 元素所參考的資源。每次編輯或選項改變時,皆需無效化輸出與受保護的剪貼簿狀態。

常見問題

這是否讓不受信的 HTML 成為安全的?
不會。指令碼、事件屬性、URL、iframe、樣式以及其他活躍標記皆會被保留。處理不受信內容時,請使用針對目的地的清理工具。
為何錯誤的 HTML 會產生輸出而不是錯誤?
瀏覽器的 text/html 解析器會寬容許多語法問題。此工具並非嚴格的驗證器。
為何 head 與 doctype 沒有出現?
輸出範圍為 body.innerHTML,因此文件外殼與僅限 head 後設資料是故意不包含在結果中。
標準化後的 HTML 會被預覽或執行嗎?
僅放置於唯讀的 textarea 內,且解析後的指令碼不會執行。不會建立任何即時的 HTML 預覽。然而,瀏覽器仍可能在 DOMParser 建構其獨立文件時下載 iframe 或 img 元素所參考的資源。

開發者工具 使用指南

查看全部