2017-09-05 27 views
0

我在網頁上動態呈現多個郵件地址(郵件地址:)。使用正則表達式來隱藏垃圾郵件機器人的郵件地址

我不知道需要將這些垃圾郵件機器人隱藏起來。

<a href="mailto:[email protected]" onmouseover="this.href=this.href.replace(/x/g,'');">link</a> 

這涉及到把一個假的字符:電子郵件地址中的「X」,然後刪除這些曾經的鏈接點擊,複製或粘貼

found is this最簡單的解決方案。

它的作用 - 但缺點是它從地址中刪除所有「x」的。因爲我不能保證我的動態呈現的電子郵件不會包含「x」這個解決方案 - 因爲它不適合我。

一個更好的解決辦法是把3個或更多的「X」在每個電子郵件地址的開始/結束,然後使用上面的代碼刪除它們一旦鏈接被點擊

即:

<a href="mailto:[email protected]" 
onmouseover="this.href=this.href.replace(/x/g,'');">link</a> 

什麼,我現在需要做的是使用正則表達式然後從電子郵件地址刪除第一個3「X」時,其點擊

我試過以下,但它沒有工作:

<a href="mailto:[email protected]" 
onmouseover="this.href=this.href.replace(^[\s\S]{0,3});">link</a> 
+1

通常,爲了這個目的,很少使用符號添加。或者是一個非常罕見的字符串。 'x'很常見,不是嗎? –

+0

_「我不知道需要從垃圾郵件機器人中隱藏這些東西」 - - 廢話。垃圾郵件發送者_遲早會從他們被黑客入侵的其他人的聯繫人列表中獲取地址,只需簡單地猜測,...現在,應該投資於適當的垃圾郵件過濾器,而不是像這樣的無意義的措施(這使得整個事情如果需要獲得JS禁用的用戶,則無法訪問。) – CBroe

+0

是CBroe。沒有任何方法是完全防彈的。我們所要做的就是減少攻擊的數量 - 確實會部署垃圾郵件過濾器。但它仍然值得有一個前端過濾器 – theSeeker

回答

0

的出現次數的replace方法需要兩個參數 - 第一個正則表達式你'匹配,第二個要替換的值匹配。預計你的正則表達式模式將會有標誌來解釋匹配的行爲。例如,g將匹配全球範圍內正在操作的字符串,並且i將以不區分大小寫的方式進行匹配。

你這裏後是正則表達式很可能會沿的線條更:

^(mailto\:)x{3}(.*)x{3}$ 

也就是說,您的目標是捕捉mailto:,這在字符串的開頭的預期,然後丟棄3 xX字符,然後捕獲電子郵件地址,但不是字符串末尾預期的3 xX字符。

這將融入replace方法以下列方式:

.replace(/^(mailto\:)x{3}(.*)x{3}$/i, '$1$2') 

這就是說,豈不是公平地說,一個電子郵件地址可能會傾向於連續包括xX字符?如果是這樣,您應該將每個出現的x{3}以及您預先考慮/附加到電子郵件地址的相應匹配項替換爲不太可能包含在電子郵件地址中的內容,或者設計一個替代方法來解決問題。

+0

嗨查爾斯。我嘗試過,但它不起作用。這裏是我的代碼:link theSeeker

+0

我的歉意,我打算用引號來包圍'replace'的第二個參數。我已經編輯了相應的解決方案。 –

+0

謝謝Charles-很好的工作! – theSeeker

0

你可以嘗試沿着

<a href="mailto:^$^[email protected]^$^" onmouseover="this.href=this.href.replace(/[\^][\$][\^]/g,'');">link</a> 

線的東西它將基本上取代^$^,而不是普通的東西爲XXXX

0

我會避免在郵件地址中添加更多或更少的通用字符以用於混淆目的。而是嘗試某種非常的基本加密,比如切換這些比特或將char字符串轉換爲char,並將char代碼增加一個固定值。
例子:

var mailto = "mailto:[email protected]"; 
var obfuscated = ""; 
for (let i = 0; i < mailto.length; i++) { 
    obfuscated += String.fromCharCode(mailto.charCodeAt(i) + 7); 
} 
//obfuscated now looks like this: "thps{vAjvu{hj{Gkvthpu5jvt" 
//to reverse the process, do the same thing and subtract 7. 
//You could extract the code to a method that you simply call with "onmouseover" 

希望這有助於,雖然不能精確地回答你的問題:)

相關問題