電子郵件混淆器是一個小型工具,可以將聯絡地址改寫成基本網頁爬蟲會略過的形式,而一般瀏覽器仍能正常顯示並點擊它。電子郵件地址混淆器以一種專注的方式完成這件事:它將一個經過驗證的電子郵件地址轉換成一個完整的 HTML 錨點,其可見的連結文字與 mailto 目標完全以十進位數值字元參考寫成。每個參考都採用標準的 HTML 格式,由一個 & 符號、一個井字號、該字碼點的十進位數字,以及一個結尾的分號組成,瀏覽器在繪製頁面時會將這段序列解碼為對應的 Unicode 字元。您地址中的字面字元永遠不會出現在原始碼中,因此只搜尋像 [email protected] 這類純文字地址樣式的爬蟲會找不到任何可複製的內容。輸出是純靜態 HTML。沒有 JavaScript 組裝、沒有地址的圖片、沒有其他需要維護的替代語法,就只有一個瀏覽器會將其呈現得如同您直接輸入地址一般的錨點標籤。那份簡潔本身就是設計,同時也是它的限制,因為任何能讀取已渲染 HTML 的工具,都能將這些參考解碼回原始地址。

這個工具實際產生了什麼
整個輸出就是一個錨點元素,以單一程式碼片段的形式複製。在該錨點內部,可見的文位元組點持有地址,其中每個字碼點都被替換為對應的十進位數值參考,而 href 屬性值則持有字串 "mailto:",後面接著同一個地址,每個字碼點同樣被替換為十進位數值參考。整個轉換完全在您的瀏覽器中執行。不會上傳任何東西、不會傳送到任何伺服器,關閉頁面後也不會保留任何狀態。
您複製的程式碼片段中不包含任何來自真實地址的字面字元。如果您的地址是 [email protected],查看頁面原始碼的人只會在 href 與連結文字中看到一串十進位參考,而瀏覽器在繪製頁面時會將這些參考解碼回原地址。這種不對稱就是整個效果的精髓。讀取原始碼以尋找地址樣式的機器人找不到任何可收割的內容,而點擊連結的訪客則會像使用任何普通 mailto 錨點一樣打開其郵件用戶端。
您可以使用 電子郵件地址混淆器 工具在本機執行轉換,該工具會產生該單一錨點供您貼入 HTML 範本中。由於這項技術刻意保持精簡,最適合將這個工具理解為解決單一特定問題的發佈輔助工具:讓公開聯絡地址中的字面字元不出現在您送到網頁伺服器的原始碼中。
單一錨點上的數值實體編碼如何運作
十進位數值字元參考是 WHATWG HTML 字元參考 規範的一部分。每個參考的格式是由 & 符號、井字號、Unicode 字碼點的十進位數字,以及分號組成;HTML 解析器會在渲染時將這段序列轉換為對應的字元。地址中的每個 Unicode 字碼點,包括本機部分中的字母、@ 符號、數字、點號,以及網域標籤內的連字號,都會接受同樣的處理方式。一個編碼字碼點 97 的參考會產生字母 a,而一個字碼點 64 的參考則會產生 @ 符號,因此對訪客來說看似普通的地址,在原始碼中其實是由數值片段重建而成。
可見文字與 mailto 目標都會經過這項轉換。最終得到的錨點中,地址會以編碼形式出現兩次:一次是訪客閱讀的位置,一次是位於會開啟其郵件用戶端的 href 中。這兩個位置都不會保留您真實地址的任何字面字元。編碼器不會混用格式或發明替代方案:它只會輸出一致的純十進位編碼,因為這是最容易驗證、跨瀏覽器表現也最可預期的方式,並可避免 JavaScript 驅動組裝所帶來的失敗模式。
對於國際化網域名稱,編碼器會將網域送入瀏覽器的 URL 主機解析器,後者會將其序列化為 ASCII 相容的形式。像 bücher.de 這樣的網域會在編碼前被正規化為 xn--bcher-kva.de,因此無論訪客使用哪種瀏覽器檢視頁面,相同輸入都會產生相同的錨點,且輸出可以在每位訪客的機器上完全重現。
三個步驟即可產生、貼上並驗證
- 將公開的電子郵件地址輸入電子郵件地址混淆器,並點擊以產生數值實體 HTML 錨點。轉換會在本機瀏覽器中執行,無需任何網路請求,也不會有任何地址記錄離開此頁面。
- 將完整的錨點複製到 HTML 原始碼環境中:例如靜態 HTML 檔案、內容管理系統的原始碼檢視,或可繞過所見即所得編輯器改寫的程式碼區塊。會自動解碼實體的所見即所得編輯器,會在您貼上的當下撤銷混淆效果。
- 開啟發佈後的頁面,檢查其原始碼以確認實體確實存活下來,並點擊該連結一次以確認您的郵件用戶端收到的是預期的地址。如果真正需要抗濫用能力,請將錨點與受保護的伺服器端聯絡表單搭配使用,而非單獨依賴原始碼的隱蔽性。
驗證器接受與拒絕的內容
驗證器刻意比 RFC 5321 與 RFC 5322 中所述的完整電子郵件語法更為嚴格。這份嚴格的合約讓工具保持誠實:它並未聲稱能驗證每種 RFC 允許的形式,而是驗證頁面所設計的實用聯絡地址使用情境。它也絕不會檢查該信箱是否實際存在。它不會發送郵件、不會查詢 DNS,也不會聯絡任何伺服器。
| 欄位 | 規則 | 接受的範例 | 拒絕的範例 |
|---|---|---|---|
| @ 符號數量 | 只能有一個 | [email protected] | you@@example.com、youexample.com |
| 本機部分 | 不可為空,保留原始大小寫,支援特定標點,不可有前導、結尾或連續的點 | info、jane.doe、news+tips | .jane、jane.、jane..doe |
| 網域 | 多重標籤,轉為小寫,不可包含空白字元或控制字元 | example.com、sub.example.co.uk | example、192.0.2.1、ex ample.com |
| 國際化網域 | 透過瀏覽器的 URL 主機解析器序列化為 ASCII 相容形式 | bücher.de 會變成 xn--bcher-kva.de | 會進行正規化而非直接拒絕 |
加上引號的本機部分、註解、IP 字面量,以及單一標籤主機都不被接受,因為本工具鎖定的是一般公開網站的地址,而非專業系統所允許的各種信箱語法。如果您的使用情境超出此範圍,編碼器會在第一時間告知您,而不會給出寬鬆但誤導性的驗證結果。請將驗證器視為一份合約,而非一張通行無阻的同意書。
原始碼隱蔽性悄悄失效之處
編碼後的錨點一旦離開工具,兩種失敗模式最常出現。第一種是所見即所得編輯器或視覺化編輯器在貼上時解碼了實體。內容管理系統會將每個數值參考視為對應的字元,並即時改寫您的原始碼。最終頁面會呈現得與普通 mailto 連結完全相同,混淆效果也隨之消失。第二種失敗模式是內容管理系統對 & 符號進行了雙重跳脫。它會看到前導的 & 符號並將其替換為另一個實體,導致在發佈後的頁面中出現實體文字,而訪客本應看到的是地址。
兩種情況的解決方法都相同:開啟實際上線的頁面,檢視其原始碼,並確認實體確實存活下來。如果您的內容管理系統移除了它們,請將錨點貼到原始 HTML 區塊、編輯器的程式碼檢視,或您自行控制的靜態檔案中。永遠不要單獨信任複製下來的程式碼片段,因為只有在發佈流程能保留它的情況下,該片段才是正確的。電子郵件混淆器速查表:輸出規則與內容管理系統風險 詳細說明了特定內容管理系統的行為,以及在驗證已發佈頁面時應該尋找的確切原始碼模式,可與本頁所述的整體說明相互補充。
何時應完全跳過混淆器
原始碼隱蔽性只是一層保護,而且是非常薄弱的一層。當地址屬於內部、個人或敏感性質時,請選擇其他做法。請勿嵌入機密別名、保留給內部人員的角色信箱,或任何與憑證相關的內容,因為即使是編碼後的地址,對任何點擊連結、複製連結目標,或檢查已渲染 DOM 的人來說仍然是可見的。當垃圾郵件量已經成為問題時,請選擇其他做法,因為混淆器並不保證能減少垃圾郵件,且現代爬蟲能像訪客一樣輕鬆地解析 HTML、解碼實體,並追蹤 mailto 目標。
| 需求 | 編碼後的錨點 | 伺服器端聯絡表單 |
|---|---|---|
| 在一般瀏覽器中可點擊 | 是 | 否,改為表單欄位 |
| 頁面原始碼中不含字面字元 | 是 | 不適用 |
| 對點擊連結的訪客隱藏地址 | 否 | 是 |
| 伺服器端輸入驗證與速率限制 | 否 | 是 |
| 對現代 HTML 解析爬蟲的抵抗力 | 否 | 部分 |
當您想在公開頁面上放置聯絡連結、清楚了解其限制,且接受任何點擊連結的訪客都會看到解碼後的地址時,混淆器便能派上用場。若要具備實質的抗濫用能力,請將錨點與伺服器端聯絡表單、可輪替的拋棄式角色地址、郵件服務業者的過濾規則,以及能防止內嵌指令稿竄改文件的內容安全政策結合使用。本工具並不保證能減少垃圾郵件,也絕不應被視為存取控制或隱私保護機制。
如需更深入的說明,請參閱 XML 網站地圖產生器速查表:規則與限制。