如何在網頁上隱藏你的Email郵件地址
作者:Amit Agarwal 翻譯:newghost
你有一個網站,你想把email地址放在上面,讓別人可以很方便地聯絡你,但是你又擔心一旦公開郵箱地址,垃圾郵件可能會像洪水一樣湧來。
你的擔心是對的。現在網上抓取郵件地址的蜘蛛爬蟲僅僅通過一條簡單的正規表示式,就可以輕易地獲取到你的郵件。但是你可能通過一些簡單的CSS和 JavaScript來欺騙一些不太聰明的爬蟲。(注* 網路爬蟲確實已經充斥了網際網路,參見:人類只佔到網際網路流量的40%不到)
1. 通過CSS隱藏郵件地址
1a. 使用CSS偽類(pseudo-classes)
你可以使用CSS中的::before 和 ::after偽元素插入email的使用者名稱和@另一邊的域名。網路蜘蛛,一般是看不到CSS的,直到瀏覽器渲染前,他都只能看到一個@符號。在這個例子裡,我們將隱藏 john@gmail.com
<style> my-email::after { content: attr(data-domain); } my-email::before { content: attr(data-user); } </style> <!--通過 data-user 和 data-domain 設定email的使用者名稱和域名--> <my-email data-user="john" data-domain="gmail.com">@</my-email>
更新:這是@orlie建議的另一個版本,這個對爬蟲來說更加的晦澀,因為它將@也隱藏起來了。
<style> my-email::after { content: attr(data-domain); } my-email::before { content: attr(data-user) "\0040"; } </style> <!--通過 data-user 和 data-domain 設定email的使用者名稱和域名--> <my-email data-user="john" data-domain="gmail.com"></my-email>
上面的解決方案有一個缺陷,使用者無法在你的網頁上選擇和複製你email地址,他們只能手動地寫下來。
如果想讓這個使用者體驗變得好一點,即允許使用者選擇到這些偽元素,你也可以用下面這種方式,僅"@"是不可選擇的:
<style> .domain::before { content: "\0040"; /* Unicode character for @ symbol */ } </style> john<span class="domain">abc.com</span>
1b. 倒序輸出
你可以倒序輸出你的email地址(john@abc.com as moc.cba@nhoj)然後通過unicode-bidi和direction CSS屬性讓瀏覽器倒序輸出文字。這些文字是可選擇的,但是複製出來是倒序的。
<style> .reverse { unicode-bidi: bidi-override; direction: rtl; } </style> <!-- 在HTML裡倒序輸出你的郵件地址。--> <span class="reverse">moc.cba@nhoj</span>
1c. 關閉顯示(display)
你可以在你的郵件地址裡輸出一些多餘的字元,然後使用display屬性隱藏這些字元,來顯示真實的郵件地址。
<style> #dummy { display: none; } </style> <!-- 你可以新增任意數量的z標籤 --> john<span id="dummy">REMOVE</span>@abc<span id="dummy">REMOVE</span>.com
2. 通過JavaScript混淆電子郵件
2a. 使用'onclick'事件
你然後可以在mailto的連結中輸出你的郵件地址,你僅需要替換到一些字提示符:像'.'和'@'字元可以使用文字代替。然後新增一個onclick事件將這些特殊轉換過來。
<a href = "mailto:johnATgmailDOTcom" onclick = "this.href=this.href .replace(/AT/,'@') .replace(/DOT/,'.')" >聯絡我</a>
2b. 亂序陣列
將你的郵件地址分割成多個部分的陣列,然後使用JavaScript輸出正確的順序再使用.innerHTML屬性新增到網頁上。
<span id="email"></span> 〈script〉 var parts = ["john", "abc", "com", ".", "@"]; var email = parts[0] + parts[4] + parts[1] + parts[3] + parts[2]; document.getElementById("email").innerHTML=email; 〈/script〉
3. WordPress + PHP
如果你使用的是WordPress,你也可以考慮使用內建的反爬蟲外掛來編碼(加密)你的郵件地址。這個外掛會將字元轉換成HTML格式的編碼(如字母a變成a 而且符號 @ 會變成@)這些字元都是可以在網頁上直接顯示的。
<?php echo antispambot("john@abc.com"); ?>
你也可以在瀏覽上編碼。
最後,如果你真的不希望網路爬蟲看到你的郵件地址,不要將它放到網頁上,你可以試一試Google的reCAPTCHA服務。它會將你的郵件隱藏在驗證碼(CAPTCHA)後面,人們只有輸入正確的驗證碼才可以看到郵件地址。
原文 labnol.org
相關文章
- java抓取網頁的郵件地址Java網頁
- 郵箱/郵件地址的正規表示式及分析(JavaScript,email,regex)JavaScriptAI
- 郵件地址提取軟體:eMail Address Extractor for MacAIMac
- 漢化 Email 認證郵件AI
- 如何在頁面中插入郵箱地址
- 網站防止被舉報程式碼舉 QQ 上的網頁報入口隱藏 QQ 上的網頁網站網頁
- 關於使用者 email 郵件地址是否允許有加號的問題AI
- 蘋果Mac上的郵件如何刪除不需要的電子郵件地址?蘋果Mac
- 網頁中隱藏幀的妙用 (轉)網頁
- Xamarin Essentials教程傳送郵件EmailAI
- 如何隱藏和解網頁原始碼網頁原始碼
- 如何在Mac上隱藏紅色通知標記Mac
- eMail Address Extractor for Mac(郵件地址提取器) v3.5.2啟用版AIMac
- eMail Address Extractor for Mac(郵件地址提取器) v3.5.6啟用版AIMac
- 在蘋果電腦的Mac郵件上阻止和取消阻止電子郵件地址的方法蘋果Mac
- 使用Apache commons email傳送郵件ApacheAI
- 隱藏IP地址的四個作用
- 隱藏IP地址的三種方法
- Docker自建Email伺服器-已購域名上私人郵件系統DockerAI伺服器
- 如何隱藏網頁中的一段文字網頁
- 網頁設計中的隱藏選單示例網頁
- 使用oracle job定時傳送email郵件OracleAI
- 郵件地址提取軟體:eMail Address Extractor for Mac v4.4免啟用版AIMac
- 郵件地址提取軟體:eMail Address Extractor for Mac v4.5免啟用版AIMac
- 病毒庫的備份及***隱藏地址薦
- 如何在蘋果Mac上顯示或隱藏“節假日”日曆?蘋果Mac
- 在網頁中新增傳送郵件的按鈕網頁
- 帝國CMS內容頁判斷下載地址為空則隱藏
- 使用 email-ext 替換 Jenkins 的預設郵件通知AIJenkins
- windows10系統隱藏ip地址的方法Windows
- linux mail利用外部郵箱地址發郵件LinuxAI
- 兩招技巧學會隱藏你的無線網路
- ThunderBird對只有回覆地址的郵件過濾
- 如何在指標中隱藏資料?指標
- 竊取郵件內容 破解Email賬號的三種方法(轉)AI
- Fastadmin隱藏後臺登入入口地址?AST
- 如何在Mac郵件客戶端配置使用S/MIME郵件證書Mac客戶端
- 如何在 CentOS 8 上安裝和配置 Postfix 郵件伺服器CentOS伺服器