仅使用CSS保护电子邮件地址

30 html css email-address spam-prevention css3

我想保护我在网页上的电子邮件地址.

但我不懂JavaScript和PHP.我只知道HTML和CSS.

所以,请帮助我如何使用CSS保护我的电子邮件地址.

小智 68

这很简单.您只需使用HTML和CSS即可保护您的电子邮件地址.您不需要了解PHP或Java脚本.试试下面的代码.

简单的HTML和CSS代码:

<!doctype html>
<html>
<head>
    <title>Protect e-mail with only css</title>
    <style type="text/css">
        .e-mail:before {
            content: attr(data-website) "\0040" attr(data-user);
            unicode-bidi: bidi-override;
            direction: rtl;
        }
    </style>
</head>
<body>

<span class="e-mail" data-user="nohj" data-website="moc.liamg"></span>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

上述代码的输出:

jhon@gmail.com
Run Code Online (Sandbox Code Playgroud)

请注意:

在这里,我只使用了两个额外的属性.

1)反向data-user编写您的电子邮件ID用户名.

2)反向data-website编写您的电子邮件ID网站.

  • 很聪明,但屏幕阅读器用户无法使用该内容. (9认同)
  • 很棒 - 很棒的主意!+1值得注意的是,DOM中不存在伪元素.你应该指出这一点.你也无法复制/粘贴高亮/选择它们.. (3认同)
  • @Chandra:如果你无法弄清楚"kcarc ot ysae ytterp si taht kniht I"的意思,那么你需要重新阅读你自己发布的解决方案,并按照其解释用户名和网站的建议! (3认同)
  • 文字无法选择. (3认同)
  • **只是在说...** (2认同)

Cha*_*kka 18

试试这段代码:

.e-mail:before {
  content: "\006a\0068\006f\006e\0040\0067\006d\0061\0069\006c\002e\0063\006f\006d";
}
Run Code Online (Sandbox Code Playgroud)
<span class="e-mail"></span>
Run Code Online (Sandbox Code Playgroud)

这只是以十六进制编码的电子邮件.

  • 更正:它是"用十六进制编码",而不是"加密". (4认同)
  • 为了增加更多保护,我使用`.e-mail:before`和`.e-mail:after`将电子邮件拆分为两部分.它很棒! (2认同)

fzz*_*gic 12

您可能知道:混淆技术不能万无一失,收割机机器人将继续改进.有许多反对混淆论据.

话虽如此,这里有一些额外的技术,你已经提到的相当有趣的技术.

HTML技术:

  1. 几年前使用html注释符号或替换html实体已经被证明是一种非常弱的方法.

  2. 使用图像而不是文本对于大多数用户来说是一种痛苦,包括非视觉障碍者,因为他们无法剪切和粘贴.虽然它运作良好.

  3. 一段时间以前建议使用一种有趣的纯HTML方法来允许使用超链接.

    <a href="mailto:jhonnotspam@gmail.com?subject=EMAIL ADDRESS NEEDS EDITING&body=Please remove the text 'notspam' from the address before sending your email.">Email me.</a>

CSS技术: 这些当然也不是万无一失的.除了你已经提到过的内容:

  1. 使用CSS display:none也很有用.简单地删除样式标记的机器人将在收获的地址中包含隐藏文本.

    jhon<span style="display:none">-anti-bot-bit</span>@gmail.com.

  2. 可以使用Web图标字体来拉入@ 图标,并且可以以不会使屏幕阅读器绊倒的方式执行此操作.由于显而易见的原因,我没有看到带有@图标的web图标字体,但这样可行.

更新: Font Awesome现在有一个@图标.也许有人在看到这篇文章后提出建议;-).


Hbi*_*and 10

在html中嵌入电子邮件的一种简单而有效的方法是使用十六进制值!例如,john @ smith.me的十六进制值是:

%6A%6F%68%6E%40%73%6D%69%74%68%2E%6D%65

并且您可以在HTML代码中使用以下标记

<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6A%6F%68%6E%40%73%6D%69%74%68%2E%6D%65">email me</a>
Run Code Online (Sandbox Code Playgroud)

这是在网页中嵌入电子邮件的一种非常简单有效的方法.

你以这种方式隐藏了"maito:"和电子邮件.

您可以使用此工具生成%64十六进制代码

您也可以使用此工具生成十六进制代码


Yeo*_*Yeo 9

您可以将上面的两个答案(Ans1Ans2)结合起来,使mailtocss具有可用性.

<style type="text/css">
    .e-mail:before {
        content: attr(data-website) "\0040" attr(data-user);
        unicode-bidi: bidi-override;
        direction: rtl;
    }
</style>
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;%6A%6F%68%6E%40%67%6D%61%69%6C%2E%63%6F%6D">
    <span class="e-mail" data-user="nhoj" data-website="moc.liamg"></span>
</a>
Run Code Online (Sandbox Code Playgroud)