發布郵件地址時用「#」「at」等替代「@」有助於反垃圾郵件嗎?
我問這個問題的原意是試圖探討:隱私保護和用戶體驗之間的權衡問題。
對於公布郵件地址,我能想到的方案有:
用戶體驗最好,保護隱私最差:使用mailto標籤(點擊直接發信,移動終端友好,對於爬蟲太明顯)。
用戶體驗居中,保護隱私居中:文字寫出郵件地址,並對其中進行一些替換(可以複製,對於爬蟲防護力未知)
用戶體驗最差,保護隱私最好:使用圖片(不能複製,移動終端使用者只能背下來在敲字,但保險)。
------------以下原描述-------------
比如用「#」,「[at]"替換「@」,用「[dot]」替換「.」。
如果真的要爬取,這些顯然攔不住爬蟲的,郵件地址可以有很多手段判斷,最簡單的比如gmail這個關鍵字就暴露了,防止SPAM主要還是靠郵件服務商以及從內容下手吧。
相反直接在網頁上用mailto標籤公布郵件地址的人也很多,說明直接寫出並沒有很大的垃圾郵件風險。
這種替換的寫法反而會對正常用戶造成些許不便,比如不能複製粘貼,更不用說直接點擊。所以是不是可以歸為一種陋習了?
有沒有人對此有過研究,寫過爬蟲,做過實驗,或者有過相關經歷?
看得出來題主很有想法也很聰明,但 too simple。我來貢獻點乾貨,回答樓主問題之後介紹幾種常見的郵件隱藏方法。
在見到真實世界數據之前,你臆想一個依靠「gmail」關鍵字就可以準確抓取一個郵件地址,在面對真實世界各種noise文本的時候,相信你會像曾經的我一樣流下絕望的眼淚。
小時候上課的時候,曾經上一門NLP機器學習課程,本來重點是機器學習演算法分析,可以選擇學術界很多現成的數據集上做實驗。不過當時還天真無邪的我毅然選擇自己爬數據,結果見到爬下來的真實文本讓我欲哭無淚,我花了整個項目將近一半的時間精力去把noise的數據洗乾淨。
==============
回到正題
【1】
這樣替代方法總是可以防止一部分爬蟲的,再簡單的防護方法也比沒有好。要記住,爬蟲的目的不是爬你這個網址,它的目標是儘可能多的捕獲到email address。一般是靠正則表達式。[dot]容易被抓出來,那就&
爬蟲作者永遠無法提出一個完美的解決方案去預想捕獲所有的情況,行話叫做recall太低。你想要一個十全十美的系統不是不可以,這樣成倍的成本投入是否能夠換來相應的回報呢?
【2】
順便按照慣例,分析過問題之後貢獻一點乾貨:如何隱藏自己的電子郵件地址?
a) FirstName.LastName@XXX.com 這種方式一般常見於bio簡歷頁面
b) 把email做成圖片
c) HTML源代碼迷惑方法,比如yourname&@. --&>@&@. --&>yourdomain&@. --&>.&@. --&>com
yourname#64;yourdomain#46;com.
d) 用javascript
&
參見:5 ways to hide your email from those accursed spammers
【3】以及,有一個研究(http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/)對比了9種隱藏郵件的方法(http://ch.tilllate.com/061101_emailtest.php),包括上面提到的幾種方法,以及一些CSS的tricks。可以看到用ATs和DOTs的效果驚人的好。
不知道是否有助於反垃圾郵件,但我是這麼乾的……
&
moc.elpmaxe@nauyiz
&
這樣看上去就是正常的「ziyuan@example.com」。但同時還需要處理複製事件,不然別人粘貼出來還是反的。於是:
&
這裡順便提供一種保護郵件地址的方法,利用谷歌的reCAPTCHA。網上有很多相關介紹,這裡不粘貼了。這種方法我感覺可能會比較徹底,不過也給自己期望知道的人帶來一些麻煩(倒是給谷歌做了貢獻)。所以,如果你是做業務的因而有很多垃圾郵件,使用它也可能擋住了你的一些潛在客戶。
曾有一段時間我由於看到網上說到許多垃圾郵件而過敏,於是先用[AT][DOT]替換,之後利用reCAPTCHA。後來感覺不是很有必要,只是在我感覺需要聯繫的時候才提供(多數私下),此外對於大多數論壇網站使用的也是。用處是有的,但是用處肯定不會很大。用regular expression多考慮集中情況就能把這些用「at」, 「dot」防線一網打盡了。
但是考慮的情況越多,速度就會相應的變慢。 對於那些網路爬蟲,他們的目的是儘可能多的收集郵箱,所以可能會為了追求收集的速度和數量而少考慮那些用dot,at的情況。
個人覺得用dot,at取代 . @還是有點得不償失,因為把自己的郵箱放在網上,是希望那些需要你郵箱,有正當合理目的的人去方便地聯繫你。 本來他們複製粘貼就能用了,現在他們還要麻煩地改下字元。我覺得沒啥用。
所以我一般在網上用這種方式告訴別人我的email地址:
echo ZWxlcGhhbnRfbGl1QG1haWwuZGx1dC5lZHUuY24K | base64 -d
有一些用處,但是用處不大。
我主力郵箱是Gmail, 直接用@到處貼。但是從今年起,Gmail垃圾郵件過濾的更好了,一般一星期只會有一兩封漏網的。
備用郵箱是QQ郵箱,應該已經是國內非常不錯的郵箱了。基本沒公開過,但是不知道被誰賣資料了,也有因為數字郵箱的原因。每天都要收到一兩封垃圾郵件。
另外一個因素是,一個地方被收集到了,其他地方用#就相當於白用了,因為垃圾郵件商之間都互相流傳著收件人列表。在10個地方用@不會比在1個地方用@垃圾郵件多十倍。
沒什麼幫助,在採集的時候設置好以後一樣會被採集下來。
其實個人覺得,網頁的郵件地址抓取目前不是很有需要了,畢竟郵件spamming已經是很龐大很龐大的一張網了,而郵件系統的過濾也做得很好了,說起來就是成本不高但因為缺乏精度所以效果也不好了。比如我用gmail就不在意是否會被spamming,題主的問題倒更像是網站方如何防止同行及第三方進行有針對性的抓取。個人的話,就不要在意太多了,用圖片,用你說的那幾個symbols都可行,至於效果嘛也就不要有太多期望值了。
如果是經營網站防第三方抓取,可以參考58,淘寶等網站的做法,但現在是合作互贏的時代,考慮防守不如多進取多思考如何更好的經營好網站服務好用戶。
可以試試這個:主動、優雅地拒絕垃圾郵件
先拋出觀點:企業的開放郵箱防爬蟲是個** 加 粗 的 偽 命 題 **
首先我贊同@陳村 的答案,對於爬蟲成本的問題是我們設計所謂防護方案時考慮不到的。陳村分享的兩個鏈接,前面的鏈接失效了,後面的鏈接里提到的方法,有一些確實非常巧妙,很開拓思路。
鑒於陳村已經金玉在前,我就簡單分享下我處理公司開放郵箱的處理方法和一點看法。除了Html裡面添加註釋的方式,我們普遍採用的是js混淆的方式。
簡單寫個例子示意一下,不一定能運行(我是多麼隨意的人):
.html
&&
// 簡單替換方式
$("#my-em").html("xxxx" + "@" + "XXX.com");
或
// 參數聲明方式
var user = "xxxx", domain = "XXX.com";
$("#my-em").html(user + "@" + domain);
// base64編碼混淆
// XXX window.atob方法需要Html5才支持,低版本瀏覽器需要先引入一個Base64的解碼方法
$("#my-em").html(window.atob("eHh4eEBYWFguY29t"));
以上我覺得足夠企業應用使用了,實現成本低、易維護。
在我為公司設計了一套防護方案後,無意中發現在公司入駐的一個服務平台(我覺得是天意要我覺醒)。我千辛萬苦要防護的郵箱,被明明白白的放在了html裡面(當時就懵逼了)。
然後我就認識到這個問題不值得我花費那麼多精力。
隨著用戶數增加、合作夥伴增多,對外開放的郵箱肯定已經流入到垃圾郵件廠商了~
選擇一個簡單、實現成本低的方案聊以自慰(比如我們用的js),不需要花很多精力,也不需要影響正常客戶的操作,因為互聯網洞實在太多 。對於我們這種企業郵箱的情況,最終郵箱管理者把過濾規則設好一點就可以了。
對於題主公開郵箱的擔心,我的做法有點霸道:公開郵箱和私人郵箱分離,並通過轉發規則將公開郵箱A的郵件轉到私人郵箱B。
第一次向我發郵件的需要特地在主題上增加關鍵字,比如對於我的博客,我留的公開郵箱是imshuai67在http://gmail.com(替換在為@),我的規則是:
務必在主題添加#imshuai_blog#字樣(包含#共14個字元);這樣的郵件會第一時間處理,否則會被直接刪除。
垃圾郵件是機器群發的,幾乎不會達成我這樣的規則(至少成本上不合算),因此我的私人郵箱就不會受到垃圾郵件了。
收到郵件後,我會用私人郵箱B直接回復。而郵箱A則從來不會查看!
再加上註冊賬號上的考慮,我的一套反垃圾郵件方案如下,希望對您有幫助。
詳細情的論述,可以參考我寫過的一篇反垃圾郵件的文章:放心實用的個人反垃圾郵件方法
已知某某地方有特別的水果,很好吃,可以自己采。
人人都知道了以後,都去采,就沒了。
但是如果所有人都這樣,那麼就沒什麼效果了。
推薦閱讀:
※從事數據分析(數據挖掘)的工作已經一段時間的你(1年,2~3年,5年,8年),現在是一種怎樣的狀態?
※QQ 是否可以取代 Skype,怎樣才能?
※阿里金融侵蝕了銀行壟斷體的利益嗎?為什麼後者沒有反應?
※人人網為什麼不但沒成為中國的 Facebook,反而日漸式微?
※小區論壇的前景怎麼樣,前期做需要哪些準備? TAG:互聯網 | 自然語言處理 | 電子郵件 | 反垃圾(Anti-Spam) | 垃圾郵件 |