2017-09-05 16 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" 

希望这有助于,虽然不能精确地回答你的问题:)

相关问题