Kolayca spam tarafından hasat değil bu yüzden nasıl e-posta adresleri karartmak için PHP kullanabilirsiniz?

4 Cevap php

PHP programlama ediyorum ve kolayca insanlar tarafından okunan ancak kolayca spam hasat olmayan e-posta adreslerine sahip web sayfaları oluşturmak istiyorum. E-posta adresleri kullanıcı girişi geliyor, ve ben normal bir ifade kullanarak, bir adresi tanımlamak düşünüyorum, ama ben e-posta adreslerini değiştirmek ya da tam olarak nasıl açık değilim çoğu otomatik spam botlara tutmak için ne Onları hasat.

İşte bir fikir: (sahte kod)

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

.remove {
   display: none;
}

Umarım bot span etiketi üzerinde yolculuk olacaktır.

Son olarak, mailto: etiketleri içinde e-posta adresleri rahatsız etmeyecek bir çözüm arıyorum.

What are some ways to protect emails on websites from spambots? yinelenen ve belki bazıları olduğunu Duplicate of How can I prevent prevent bots from collecting e-mail addresses? ki ...

4 Cevap

Siz de CSS kullanarak allak bullak edebilir ...

<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;
}

Düzenleme: Burada, kaynak e-posta adresi ters - ne CSS tablolar yapar onun orijinal forma e-posta adresini dönüşmesidir. Ben mantıklı umuyoruz.

Ama bu ne kadar etkili emin değilim - bir tarayıcı ortamında simüle tane bot var. Ben gibi bir şey söyleyerek daha iyi olduğumu düşünüyorum - benim e-posta googlemail, binnyva olduğunu.

Use GD and create image of your Email ID

Kolayca herhangi bir metin bir görüntü oluşturmak için PHP GD library kullanabilirsiniz.

Bir örnek kod, gibi görünecek

<?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);
?>

Advantages:

  • P: Onlar bir OCR kullanmak sürece spam sadece, onu yakalamak değil
  • Çok düşük tepegöz kullanarak PNG / GIF formatında
  • Herhangi bir metin için anında oluşturulabilir

Disadvantages:

  • Bir bağlantı olarak, posta üzerine tıklayın olamaz
  • TTS motorları, görme engelliler için bir-ve çalışmaz.

bir seçenek: javascript devre dışı bırakıldı javascript email obfuscation, ve görüntüler

Yukarıdaki hile (CSS kullanarak) neredeyse kesinlikle işe yaramaz. Ben muhtemelen sadece bazı regex yıllardan üzerindeki tüm sayfayı maç, aslında onlar HTML okumak tamamen emin değilim, botlar tüm CSS bakarak rahatsız olup olmadığını bilmiyorum.

Öte yandan, bu oldukça kolay Spamtraps ile listelerini poisioning hale getirir. Eğer filtreleri eğitmek için spam (ve sadece istenmeyen) almak için belirli bir adres istiyorsanız, normal kullanıcılar sadece spam botlara bakın ya, tıklayın mümkün olmayacaktır sayfada e-posta adreslerini koyabilirsiniz.

Aslında, bir deney yapmak - link farklı tipleri ile farklı e-posta adresleri bir dizi yazmak ve onlar olsun kaç spamları bakın.

Benim web sitesinde normal bir bağlantı ile bir kaç ay önce denedim tuzak spam alma başlamadan önce, yaklaşık üç hafta sürdü.