tl; dr
从机器人隐藏电子邮件地址,而不使用脚本并维护mailto:功能。方法还必须支持屏幕阅读器。
概要
>电子邮件混淆,而不使用脚本或联系表单
>电子邮件地址需要对人类视图完全可见,并保持mailto:功能
>电子邮件地址不能是图像形式。
>电子邮件地址必须“完全”对垃圾邮件抓取工具和垃圾邮件机器人和任何其他收割机类型隐藏
期望效果:
>没有脚本。项目中没有使用脚本,我想保持这样。
>电子邮件地址显示在页面上,或者可以在某种用户交互(如打开模态)后轻松显示。
>用户可以点击电子邮件地址,从而触发mailto:功能。
>点击电子邮件将打开用户的电子邮件应用程序。
换句话说,mailto:功能必须工作。
>电子邮件地址不可见或未标识为电子邮件地址(包括页面源)
>我没有一个充满垃圾邮件的收件箱
什么不工作
>添加联系人表单(或任何类似内容),而不是电子邮件地址
我讨厌联系表格。我很少填写联系表格。如果没有电子邮件地址,我会寻找一个电话号码,如果没有,我开始寻找替代服务。我只能填写联系表格,如果我绝对需要。
>使用地址的图像替换地址
这对于使用屏幕阅读器的人造成了巨大的不利(请记住你未来项目中的视觉障碍者)
它也删除了mailto:功能,除非你使图像可点击,然后添加mailto:功能作为链接的href,但是打败了目的,现在电子邮件是可见的机器人。
可能工作:
>在CSS中伪元素的聪明用法
>使用base64编码的解决方案
>分离电子邮件地址,并在文档中传播零件,然后在用户单击按钮时将它们组合在一起(这可能涉及多个CSS类和锚标签的使用)
>通过CSS改变html属性
@MortezaAsadi在下面的评论中优雅地提出了可能性。这是链接到完整 – 文章是从2012年:
类似问题/修复
(这是Joe Maller建议的一个很好的修复,它工作良好,但它是基于脚本的。
emailE = 'emailserver.com'
emailE = ('yourname' + '@' + emailE)
document.write('' + emailE + '')
Email address protected by JavaScript
(一个聪明的解决方案使用PHP和CSS首先使用PHP反向电子邮件,然后反向回来与CSS)一个非常有前途的解决方案,伟大的工作!但它太容易解决。
> Is it worth obfuscating email addresses on the web these days?
所选答案工作。它实际上工作非常好。它涉及将电子邮件编码为html实体。可以改进吗?
这是它的样子;
yourname@domain.com
(这个超级用户问题的选择答案是伟大的,它介绍了通过使用不同的混淆方法收到的垃圾邮件的量的研究。
似乎操纵电子邮件地址与CSS,使其rtl工作。这是我在本节中链接的第一个问题中使用的相同方法。
我不确定添加mailto:功能的修复会对结果有什么影响。
>在SO还有很多其他问题,都有类似的答案。我没有找到任何符合我期望的效果
问题:
通过组合两个或更多的修复(或甚至添加新的修复),同时可以提高上述电子邮件混淆方法的效率(即尽可能少的垃圾邮件):
A-维护mailto:功能;和
B-支持屏幕阅读器
编辑:
下面的许多答案和评论提出了一个很好的问题,同时指出不可能做到这一点,没有某种js
问题/暗示的问题是:
Why not use js?
答案是我对js过敏
开玩笑,
我问这个问题的三个主要原因是:
>联系表格越来越被接受为替代品
提供电子邮件地址 – 他们不应该。
>如果它可以没有脚本,那么它应该没有
脚本。
>好奇心:(因为我实际上使用的js修复目前)我想看看讨论这个问题是否会导致一个更好的方式做。