اجتناب از Spam-bots ها
چهارشنبه 24 خرداد 1391 7:07 PM
نویسنده : | codeproject.com | 86.12.15 | 531 بار مشاهده |
Spam-bot ها نرم افزارهایی هستند که صفحات وب را پویش کرده و آدرسهای ایمیل درون آنها را جمع آوری میکنند. سپس از این آدرسها برای ارسال انواع ایمیل های تبلیغاتی و به عبارتی هرزنامه ها استفاده میکنند. مسلما شما هرگز نمیخواهید آدرسهای ایمیلی که در وب سایت تان قرار میدهید توسط این نرم افزارها مورد سوء استفاده قرار گیرد. این مقاله با ارائه یک تکنیک ساده از این کار جلوگیری میکند.
تکنیك ساده ای که گفته شد چنین است: به جای ذخیره کردن آدرسهای ایمیل واقعی در صفحات HTML ، یک نسخه رمزنگاری شده از آنها را ذخیره کرده و در موقع لزوم آنها را رمزگشایی کرده و نمایش میدهیم
مرحله اول : رمز نگاری کردن آدرس ایمیل
ابتدا لازم است آدرس ایمیل را رمزنگاری کنیم. رشته رمزنگاری شده میتواند از قبل آماده شده باشد یا این که به صورت پویا در زمان اجرا بر روی سرویس دهنده محاسبه گردد. تابع زیر از کلاس BitConverter برای رمزنگاری آدرس ایمیل derf@example.com به رشته 64657266406578616D706C652E636F6D استفاده میکند.
// C#
string EncodeEmailAddress(string email)
{
return BitConverter.ToString(
ASCIIEncoding.ASCII.GetBytes(email)).Replace("-", "");
}
' VB.NET
Function EncodeEmailAddress(ByVal email As String) As String
Return BitConverter.ToString( _
ASCIIEncoding.ASCII.GetBytes(email)).Replace("-", "")
End Function
مرحله دوم : استفاده از ایمیل رمزنگاری شده در صفحه HTML
به جای استفاده ار آدرس ایمیل واقعی در لینکهای HTML ، از مقدار رمزنگاری شده استفاده میکنیم.مثلا به این شکل:
<a href="javascript:sendEmail('64657266406578616D706C652E636F6D')">Email Derf</a>
مرحله سوم : رمزگشایی آدرس ایمیل بر روی کلاینت
در سمت کلاینت از یک تابع به نام sendEmail استفاده میکنیم. این تابع آدرسهای ایمیل را رمزگشایی کرده و آنها را نمایش میدهد. این تابع حاوی این مقادیر است :
// open the client email with the specified address
function sendEmail(encodedEmail)
{
// do the mailto: link
location.href = "mailto:" + decodeEmail(encodedEmail);
}
// return the decoded email address
function decodeEmail(encodedEmail)
{
// holds the decoded email address
var email = "";
// go through and decode the email address
for (i=0; i < encodedEmail.length;)
{
// holds each letter (2 digits)
var letter = "";
letter = encodedEmail.charAt(i) + encodedEmail.charAt(i+1)
// build the real email address
email += String.fromCharCode(parseInt(letter,16));
i += 2;
}
return email;
}
به همین سادگی! بنابراین آدرس ایمیل derf@example.com توسط spam-bot ها جمع آوری نمیشود چرا که متن حاوی آدرس ایمیل هرگز در html نمایش نخواهد یافت. البته زمانی که بر روی لینک مورد نظر کلیک شود برنامه بدرستی کار خواهد کرد.
مرحله 4: به روز رسانی نوار وضعیت (اختیاری)
حتما دقت کرده اید هنگامی که موس از روی یک لینک عبور میکند، در نوار وضعیت آدرس مربوط نمایش داده میشود. برای این که برنامه ما این قابلیت را نیز داشته باشد، میتوانیم از کد زیر استفاده کنیم:
<a href="javascript:sendEmail('64657266406578616D706C652E636F6D')"
onmouseover="javascript:displayStatus('64657266406578616D706C652E636F6D');
return true;" onmouseout="javascript:clearStatus(); return true;">
Email Derf</a>
And two functions are added to the client-side script:
// display the email address in the statusbar
function displayStatus(encodedEmail)
{
window.status = "mailto:" + decodeEmail(encodedEmail);
}
// clear the statusbar message
function clearStatus()
{
window.status = "";
}
اکنون آدرس ایمیل واقعی در نوار وضعیت به هنگام عبور موس از روی لینک آدرس ایمیل نمایش خواهد یافت.
در فایل zip حاوی این مثال دو فایل وجود دارد. یکی فایل email.js که حاوی توابع اسکریپت سمت کلاینتی است که شما متیوانید در صفحه HTML خود ضمیمه کنید. فایل دیگر test.html است که بعنوان یک نمونه نخوه استفاده از فایل email.js را نشان میدهد.
آدرسهای ایمیل رمزنگاری شده میتوانند به صورت پویا بر روی سرور محاسبه شوند اما این کار لازم نیست. شما میتوانید از آدرسهایی ایمیل که قبلا رمزنگاری شده اند استفاده کنید. منبع : codeproject.com
کریمی که جهان پاینده دارد تواند حجتی را زنده دارد
دانلود پروژه و کارآموزی و کارافرینی