如何使用PHP来混淆电子邮件地址,以免被垃圾邮件发送者收集?

ale*_*lex 2 php regex spam-prevention email-spam

我正在使用PHP进行编程,并且希望创建具有电子邮件地址的网页,这些电子邮件地址很容易被人类阅读,但不容易被垃圾邮件发送者收集.电子邮件地址来自用户输入,我想我可以通过使用正则表达式识别地址,但我不清楚我应该如何更换电子邮件地址或用什么,以便保留大多数自动垃圾邮件机器人收获它们.

这是一个想法:(伪代码)

(email)@(domain.com) $1<span class="remove">DELETE</span>$2

.remove {
   display: none;
}
Run Code Online (Sandbox Code Playgroud)

希望机器人会在span标签上绊倒.

最后,我正在寻找一种不会干扰mailto:标签内部电子邮件地址的解决方案.

重复 如何防止机器人收集电子邮件地址?这是什么方法来保护垃圾邮件网站上的电子邮件?也许还有其他一些......

M.N*_*M.N 8

使用GD并创建电子邮件ID的图像

您可以使用PHP GD库轻松创建任何给定文本的图像.

示例代码看起来像,

<?php
  header("Content-type: image/png");
  $im = @imagecreate(110, 20)or die("Cannot Initialize new GD image stream");
  $background_color = imagecolorallocate($im, 0, 0, 0);
  $text_color = imagecolorallocate($im, 255, 255, 255);
  imagestring($im, 1, 5, 5,  "anything@domain.com", $text_color);
  imagepng($im);
  imagedestroy($im);
?>
Run Code Online (Sandbox Code Playgroud)

好处:

  • 垃圾邮件发送者不能只捕获它,除非他们使用OCR:p
  • 非常低的开销,使用PNG/GIF格式
  • 可以动态创建任何文本

缺点:

  • 无法点击邮件,作为链接
  • 不适用于TTS引擎,对于视觉挑战而言.


Bin*_*V A 6

您也可以使用CSS对其进行模糊处理......

<span class="email-encrypt">moc.liamelgoog@avynnib<span class="email-decrypt-message">(Reverse this text to get my Email address)</span></span>

/*Decrypt Email */
.email-encrypt {
    unicode-bidi:bidi-override;
    direction: rtl;
}
.email-encrypt .email-decrypt-message {
    display:none;
}
Run Code Online (Sandbox Code Playgroud)

编辑:在这里,在源的电子邮件地址是反向 - 什么CSS语句的作用是,它恢复的电子邮件地址,以原来的形式.我希望这是有道理的.

但我不确定这是多么有效 - 有很多机器人模拟浏览器环境.我想我最好说些什么 - 我的电子邮件是binnyva,googlemail.