自拍亚洲一区欧美另类,亚洲成人影院,亚洲午夜久久久久妓女影院,最近中文字幕高清中文字幕无,亚洲熟妇av一区二区三区漫画

互聯(lián)網(wǎng)知識

精準(zhǔn)傳達(dá) ? 價(jià)值共享

洞悉互聯(lián)網(wǎng)前沿資訊,探尋網(wǎng)站營銷規(guī)律

HTML網(wǎng)頁中電子郵箱(Email)地址的加密和混淆防爬取

作者:Smileby陌少羽 | 2019-05-09 22:31 |點(diǎn)擊:

郵箱里垃圾郵件一直有很多,這讓我不得不重新審視,發(fā)布在網(wǎng)頁上的電子郵箱地址,為了避免垃圾郵件,我刻意將@更換成#,也許這在十年前是個(gè)不錯(cuò)的辦法,但是隨著神經(jīng)網(wǎng)絡(luò)和機(jī)器學(xué)習(xí)新算法的發(fā)展,這一類小手段也面臨失效的風(fēng)險(xiǎn),因?yàn)榇蟛糠侄际峭ㄟ^修改電子郵箱地址的“@”符號,通過正則表達(dá)式篩選和特征值匹配,比如hotmail.com、gmail.com、163.com這一類疑似電子郵箱地址的特征,還是可以抓取到電子郵箱地址,所以在將Email發(fā)布到HTML網(wǎng)頁之前我們要對其進(jìn)行加密和混淆。

下面我以john@example.com為例,介紹幾種加密和混淆的反垃圾郵件手段。

1. 生成圖片

利用傳統(tǒng)的圖靈測試CAPTCHA,將防止采集的電子郵箱地址生成圖片,利用機(jī)器不能識別的特性,來區(qū)別人和機(jī)器,生成圖片的方式有很多,除了高大上的Photoshop外,甚至可以使用系統(tǒng)自帶的繪圖工具來完成,另外希望偷懶的話,還有一些在線工具可以幫助到你,比如《Top 10 Websites to Turn Your Email Address into An Image》。

 

當(dāng)然生成圖片也不是萬無一失的,有理由相信既然基于圖片的驗(yàn)證碼能夠被機(jī)器識別破解,那么基于同樣技術(shù)的電子郵件地址肯定也再所難免,特別是OCR技術(shù)的逐步發(fā)展和成熟,采集程序可以對整張網(wǎng)頁進(jìn)行OCR,最后提取需要的內(nèi)容,所以我們還需要對圖片生成的郵箱地址進(jìn)行噪點(diǎn)、干擾線等混淆,具體可以參考有關(guān)如何防止驗(yàn)證碼被識別的相關(guān)內(nèi)容。

但是經(jīng)過這么一設(shè)計(jì),我們的郵箱地址對于真正需要的人來說則變得不那么友好,人們獲取準(zhǔn)確郵箱地址的難度也加大了。

2、替換關(guān)鍵符號

我們知道爬蟲抓取電子郵箱地址很多都是通過@這個(gè)特征符號,正如我文章一開頭所述,將這個(gè)符號替換成別的那么將大大降低我們電子郵箱被抓取的概率,當(dāng)然這樣做的壞處是除非給用戶以暗示,否則需要另外說明這是個(gè)電子郵箱地址,比如john#example.com又或者john{a}example.com等等,當(dāng)然智能的電子郵箱抓取軟件可以對這些小把戲自動(dòng)免疫,通過判斷域名也可以得到這是個(gè)電子郵箱地址,所以說將@替換成一個(gè)很特別的符號也是一種生存之道,對于這種替換手段來說,更有甚者將郵箱地址變成句子,比如john AT example DOT com,這樣看來應(yīng)該更安全了,但是也給真正需要這個(gè)電子郵箱地址的用戶帶來了少許困擾。

3、使用JavaScript

JavaScript簡稱JS通常作為嵌入到網(wǎng)頁的一段小腳本,為其提供更為豐富的交互和應(yīng)用,我們通過JS混淆我們的電子郵箱地址,最后再用document.write或者innerHTML等輸出來,這樣的好處是絕大多數(shù)爬蟲并不能執(zhí)行網(wǎng)頁里的腳本,它們只擅長抓取靜態(tài)文本,所以完全不必?fù)?dān)心郵箱地址泄露給爬蟲,另外對于最終用戶來說,通過瀏覽器的解釋,展現(xiàn)在他們面前的全是一個(gè)完整的電子郵箱地址,用戶體驗(yàn)好,不過這種方式有個(gè)較為致命的弱點(diǎn)就是如果用戶瀏覽器不支持腳本,那么郵箱地址也就不能正常顯示了,雖然這種情況不多見。

一個(gè)典型的例子如下,當(dāng)然有很多變形的實(shí)現(xiàn),比如PHP hide_email我這里也不多介紹了。

var username = "john";
var hostname = "example.com";
document.write(username + "@" + hostname);

尤其值得一提的是ROT13算法的應(yīng)用,ROT13即回轉(zhuǎn)13位,說到底就是將字母表首位銜接成環(huán),將待編碼字母映射到其旋轉(zhuǎn)的13位的字母上,如下示意圖所示:

ROT13 算法示意

對于PHP來說,有函數(shù)str_rot13可以直接使用,然后根據(jù)其算法反轉(zhuǎn)即可得到加密前的文本,一般使用如下JS代碼:

<script type="text/javascript">document.write("<n uers=\"znvygb:xvpx@vaprcgvba.pbz\" ery=\"absbyybj\">Fraq n zrffntr</n>".replace(/[a-zA-Z]/g, 
  function(c){return String.fromCharCode((c<="Z"?90:122)>=(c=c.charCodeAt(0)+13)?c:c-26);}));
</script>

上述代碼將解碼成以下HTML:

<a href="mailto:kick@inception.com" rel="nofollow">Send a message</a>

4、使用HTML和CSS混淆

當(dāng)然我們除了采用JavaScript,還可以利用HTML或者CSS的一些小技巧(tricks),使用HTML注釋混淆,在HTML中以<!---->包含的是注釋,不會(huì)被瀏覽器渲染給最終用戶,那么我們可以充分利用這一點(diǎn)從而將我們的電子郵件地址打造成這樣的:

jo<!-- >@. -->hn@<!-- >@. -->exam<!-- >@. -->ple.com

這里<!-- >@. -->不會(huì)被瀏覽器顯示,但是足以混淆機(jī)器爬蟲的抓取。

同樣的結(jié)合CSS的display:none,我們?nèi)匀豢梢缘玫揭韵骂愃剖侄蔚幕煜?/p>

jo<span style="display:none">@</span>hn@<span style="display:none">@</span>exam<span style="display:none">@</span>ple.com

同樣的CSS的display:none必然注定了其包含的文本不會(huì)被顯示,所以最終顯示的也是完整的電子郵箱地址。

對于CSS來說還有一種辦法也可以讓我們規(guī)避爬蟲抓取,那就是利用CSS文本顯示順序的特點(diǎn),比如以下:

<span class="obfuscate">moc.noitpecni@kcik</span>

其中CSS代碼如下:

.obfuscate { unicode-bidi: bidi-override; direction: rtl; }

首先文本是被我們逆序的,如果要還原,在不借助JS的情況下可以通過CSS將其再次逆序,從而得到正確的文本,當(dāng)然這個(gè)方法我試用下來有一點(diǎn)不足,那就是用戶選擇復(fù)制電子郵箱地址仍然是逆序的。

最后總結(jié)來看,在對抗垃圾郵件爬蟲收集的方法上充分發(fā)揮了網(wǎng)友的聰明才智,也涌現(xiàn)出各種有才的實(shí)現(xiàn),限于篇幅我也不一一介紹了,其實(shí)沒有絕對的安全,最安全的辦法就是沒有電子郵箱地址,此話怎講?那就是使用聯(lián)系表單(Contact From),讓需要和你聯(lián)系的人直接通過表單和你發(fā)郵件,從而避免了電子郵件地址的公開,網(wǎng)上聯(lián)系表單的開源代碼也有一堆,我的博客最后考慮的方式也是這個(gè),現(xiàn)在大家可以通過右上角“關(guān)于我”找到這個(gè)鏈接并給我發(fā)消息了。

如沒特殊注明,文章均為狐靈科技原創(chuàng),轉(zhuǎn)載請注明?? "HTML網(wǎng)頁中電子郵箱(Email)地址的加密和混淆防爬取
多一份免費(fèi)策劃方案,總有益處。

請直接添加技術(shù)總監(jiān)微信聯(lián)系咨詢

網(wǎng)站設(shè)計(jì) 品牌營銷

多一份參考,總有益處

聯(lián)系狐靈科技,免費(fèi)獲得專屬《策劃方案》及報(bào)價(jià)

咨詢相關(guān)問題或預(yù)約面談,可以通過以下方式與我們聯(lián)系

業(yè)務(wù)熱線:15082661954 / 大客戶專線:15523356218