Bu botlar yakalamak için iyi bir yolu var mı?

4 Cevap

Bu yöntem yeterli mi?

<?php

// User pressed "Register"
if (!empty($_POST['name']) && $_POST['email']) {


    if (!empty($_POST['antispam'])) 
        exit("bye");

    }

?>

<form>

<input type="hidden" name="antispam" value="" />

Accname: <input type="text" name="name" value="" />
Email: <input type="text" name="email" value="" />

......

</form>

4 Cevap

Fikrinin tüm temel anlamda, emin olun. Ben basit uygulama için tavsiye ederim tek şey alanlar için göz engellemek için çalışıyoruz en spam tarayıcıları "kullanıcı adı", "ad", "kullanıcı", vb başlıklı olduğunu ..

Yani, bal küpü "antispam" adlandırma isntead ben "username" veya mevcut formu ile çakışmaz benzer bir şey onu isim olacaktır.

Bir spam bot olacağını tetiklemek için tasarlanmış bir form alanı için muhtemelen en iyi isim url

type=text öznitelikleri veya textarea etiketi a için html ayrıştırma ve diğerlerini görmezden bir bot şansı oldukça makul.

Spambot yakalama şansınız kod birkaç ekstra hatları ile geliştirilebilir:

styles.css:

#commentUrl {
    display: none;
}

script.js:

function setFlag() {
    document.getElementById('commentUrl').value = 'Javascript check ok';
}

form.html:

<form onsubmit="setFlag();" method="post" action="comment.php">
    <label for="commentName">Accname:</label>
      <input type="text" id="commentName" name="comment_name" value="" />

    <label for="commentEmail">Email:</label>
      <input type="text" id="commentEmail" name="comment_email" value="" />

    <label for="commentUrl">Url:</label>
      <input type="text" id="commentUrl" name="comment_url" value="http://" />
</form>

comment.php:

<?php

   if ($_POST['comment_url'] <> 'Javascript check ok' && $_POST['comment_url'] <> 'http://') {
       // Let's increase their server load.
       header('Location: http://' . $_SERVER['REMOTE_ADDR'] . '/', 307); 
   }
?>

Because you use three different languages you improve the chances of catching the spammer considerably.
You could improve the javascript by dynamically appending the <link rel="stylesheet" dynamically to the DOM for example.

Ben giriş tipi gizli yapma tavsiye ya da bunun içinde "spam" ile bir şey almama izin vermediler. En iyi yolu, ona bir nötr isim (belki "mesaj") vermek ve css yoluyla sayfasından gizlemek olacaktır. Ayrıca ben o zaman damgası alanı ekleyerek (bu çok hızlı ya da robotlar tarafından çok yavaş olacak gibi) formu doldurunuz (ve yine o nötr isim vermek ve belki kodlamak) için ne kadar sürdüğünü ölçer.

Botlar type="text" sadece elemanlar arıyor olabilir gibi ben gizli bir alanı kullanmak olmaz. Adlandırma size örnekler olmak için hiçbir faydası var yaygın bir şey ama bir şey olmalı:

  • firstname
  • lastname
  • E-posta
  • kullanıcı adı
  • şifre
  • bio
  • tanım

Sizden girişi değiştirmek gerekir

<input type="hidden" name="antispam" value="" />

çizgisinde daha fazla şey

<input type="text" name="kullanıcı adı" value="" style="display:none; height: 0; width: 0; border: none; background: transparent; margin: 0; padding: 0;" />