جلوگیری از spam وردپرس بدون پلاگین

جلوگیری از spam وردپرس بدون پلاگین
میانگین 5 از 2 رای

جلوگیری از spam وردپرس بدون پلاگین

جلوگیری از spam وردپرس شاید مورد چندان مهمی در وب سایت ما بحساب نیاید!

اما زمانی که بدانیم چطور بر عملکرد وب سایت تاثیر می گذارد حتما به آن توجه خواهیم کرد. دو مورد مهم از تاثیرات دریافت spam :

  • کند شدن سرعت سرور سایت در صورت ارسال های مکرر
  • پر شدن پایگاه داده سایت

چطور اسپم دریافت می کنیم؟

بطور قطعی نمی توان گفت هر سایت چطور اسپم دریافت میکند. ممکن است ربات های spammer از وجود وبسایت شما آگاه شده باشند. آنها روش پر کردن فرم نظرات را تشخیص می دهند و اقدام به ارسال های مکرر می کنند. حتی ممکن است شخصی با شما دشمنی داشته باشد و اسپم ارسال کند!

اسپم ها ممکن است محتوای خاصی را در وبسایت هدفگیری کنند. ویا بدون هدف ارسال شوند.

 

چه چیزی از اسپم جلوگیری میکند؟

شاید هیچ چیز! در صورتیکه از افزونه های ضد اسپم استفاده کرده باشید متوجه عدم کارایی بالای آنها خواهید شد. برای مثال Akismet

ممکن است افزونه های مختلفی را تجربه کرده باشید. اما مشکل بزرگ این افزونه ها کدهای جاوااسکریپت است که وب سایت ما را کند خواهند کرد. همچنین شاید تمایل نداشته باشید از captcha استفاده کنید. دلیل منطقی دارد: captcha در عین عملکرد خوب، مانعی برای ارسال نظر از سوی کاربر خواهد بود.

 

چه کار باید کرد؟

ابتدا پلاگین های به درد نخور اسپم را از سایت حذف کنید. تداخل برخی از این پلاگین ها باهم امری عادیست.

راه حل ساده:

در صورت دسترسی به کدها یک فیلد input در فرم قرار دهید. این input نباید از سوی کاربر پر شود. ربات ها تلاش می کنند تمامی فیلدها را پر کنند تا ارسال فرم از سوی سایت رد نشود. بدین صورت می توان ربات های اسپمر را گول زد!

 

جلوگیری از spam وردپرس

در صورت اضافه کردن فیلد در سمت سرور ربات ها امکان خواندن آن را خواهند داشت. چراکه در صفحات نیز نمایش داده می شوند. همچنین ایجاد چنین فیلدی در سمت کاربر(frontEnd) تنها ربات های ساده را بی اثر میکند. بیایید ابتدا از سمت سرور شروع کنیم:

کد php وردپرس:

پیش از پذیرش هر نظری ابتدا باید یک کلید داینامیک را چک کنیم. اینکار توسط isset در زبان php صورت میگیرد:

function preprocess_new_comment($commentdata) {
if(!isset($_POST['is_legit'])) {
die('You are bullshit');
}
return $commentdata;
}
if(function_exists('add_action')) {
add_action('preprocess_comment', 'preprocess_new_comment');
}

اگر در شرط if چک ناموفق باشد، نظر را رد می کنیم. البته این به معنای رد نظرات کاربرانی که مرورگرشان جاوا اسکریپت پشتیبانی نمی کند هم هست! اما حاشیه ریسک spammer ها بسیار بیش از کاربران با این چنین مرورگرهایی است.

کد جاوا اسکریپت:

سعی میکنیم از کدهای پایه جاوا اسکریپت استفاده کنیم تا تمامی فریم ورک ها آن را بفهمند. بارگذاری این کد همزمان با بارگذاری صفحه کمی ریسک را بالا می برد. چراکه ممکن است یک ربات هوشمند آن را زمان بارگذاری صفحه تشخیص دهد. سعی کنید از کدهای فرم با ajax استفاده کنید. بدین صورت امکان بارگذاری کد javascript همزمان با ثبت نظر وجود خواهد داشت.

var form = $('comment-form');

new Request({
    url: form.action,
    method: 'post',
    onRequest: function() {},
    onSuccess: function(content) {},
    onComplete: function() {}
}).send(form.toQueryString() + '&is_legit=1');

اضافه کردن کلید همزمان با ثبت(ارسال) فرم یک سیستم حفاظتی کارا در اختیار شما قرار می دهد.

 

امیدواریم این تکنیک برای شما هم عملی باشد و از شر اسپم های مزاحم خلاص شوید.