تصویر CAPTCHA

CAPTCHA مخفف عبارت “Completely automated public Turing to tell computers and humans apart" است. به این معنی که : برنامه های که تفاوت بین ماشین و انسان را بوسیله استفاده از یک سری آزمون ها، تشخیص می دهد. آزمونی که تقریباً تمام افراد می توانند آن را بگذرانند ولی برنامه های کامپیوتری قادر به این کار نیستند.
شنبه، 11 آبان 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
تصویر CAPTCHA
تصویر CAPTCHA
تصویر CAPTCHA

مقدمه :

CAPTCHA مخفف عبارت “Completely automated public Turing to tell computers and humans apart" است. به این معنی که : برنامه های که تفاوت بین ماشین و انسان را بوسیله استفاده از یک سری آزمون ها، تشخیص می دهد. آزمونی که تقریباً تمام افراد می توانند آن را بگذرانند ولی برنامه های کامپیوتری قادر به این کار نیستند.
شما مطمئناً با این چنین آزمونها زمان باز کردن یک Mail box جدید و یا یک حساب forumمواجه شده اید. این فرم ممکن است شامل تصویر پیچ خورده ای باشد، درست شبیه به همان تصویری که در بالا ملاحظه کرده اید، که در نهایت شما مستلزم هستید که در قسمت text box آن حروف و اعدادی را که می بینید تایپ کنید.
هدف از این ایده جلوگیری از اسپمرها، در استفاده از رباتهای وب در ساختن mail ها ( برای ارسال Spam)، ثبت کردن نظرات و یا ورودی های Guestbook (دفترچه ای که افراد می توانند نام و مشخصات به همراه نظراتشان را در آن قرار دهند) که همراه با پیام های Spam هستند، می باشد. متنی که در داخل تصویر آمده معمولاً بهم ریخته و پیچ خورده است تا OCR یا Optical Character Reader ها نتوانند آن را بخوانند. Hotmail, PayPal, Yahoo و تعداد دیگری از وب سایتها از این روش استفاده می کنند.
این مقاله روش ساخت چنین تصویری را درصفحات وب ASP.net نشان می دهد.
قبل از اینکه از این تکنیک استفاده کنید، باید این مسئله را مد نظر داشته باشید که این روش میتواند چه تأثیراتی بر قابلیتهای وب سایت شما برای افرادی که ناتوانایی جسمی دارند داشته باشد. برای مثال افرادی که نابینا هستند به چه شکل می توانند این اعداد و حروف را تشخیص دهند؟. PayPal سعی کرد که این مشکل را با اضافه کردن لینکی به یک فایل صوتی، که این صوت پخش شده همان ارقام و حروفی هستند که در متن نوشته شده اند، این مشکل را حل کند. پس شخص نابینا می تواند با گوش دادن به این فایل صوتی اعداد و حروف را جایگزین کند.
کدی که در زیر آمده فقط همان روش اول را توضیح می دهد یعنی استفاده از یک تصویر.

استفاده از کدها :

فایل فشرده ای که لینک آن در بالا آمده حاوی منبع برای یک کلاس و دو صفحه وب می باشد. برای استفاده از آن کافی است یک پروژه جدید وب باز کرده و تمام آنها را به آن اضافه کنید.

فایلها :

- CaptchaImage.cs : مشخص کننده CapchaImage که در حقیقت تصویر را می سازد.
- Default.aspx, Default.aspx.cs : نمونه ای از فرم وب.
- JpegImage.aspx, JpegImage.aspx.cs : صفحه وبی که طراحی شده تا یک تصویر Jpeg را به خروجی بدهد به جای اینکه به HTML بدهد.
اجازه دهید نگاهی به هر جزء و اهدافش بیندازیم :
شئ CaptchaImage یک تصویری می سازد که پارامترهایی برای متنی که می خواهد ارسال شود می فرستد. برای مثال ابعاد و فونت تصویر.
قلب تمام این کدها متد، GenerateImage() می باشد که در زیر آمده است. این متد یک تصویر bitmap با طول و عرض خاصی می سازد. این متد از طریق سازنده CaptchaImage فراخوانی شده، پس تصویر درست زمانی که شما یک مثالی از شئ ساختید، آماده است.
برای ساختن تصویر، ما اول پس زمینه را بوسیله یک برس، هاشور میزنیم( هرچقدر تصویر کثیفتر باشد، تشخیص آن از طریق برنامه OCR سختتر می باشد).
برای ساختن متنی که با تصویر مرتبط باشد، ما اول با یک قلم با سایزی که مبنای آن برطول و عرض تصویر است و با استفاده از متد Graphics.MeasureString() برای پیدا کردن ابعاد نهایی از متن نقاشی شده شروع می کنیم. در صورتی که متن، از ابعاد تصویر تجاوز کند، ما سایز قلم را کم خواهیم کرد و دوباره امتحان می کنیم و به همین ترتیب ادامه می دهیم تا سایز مناسب را پیدا کنیم.

تصویر CAPTCHAتصویر CAPTCHAتصویر CAPTCHA

زمانی که فونت را تنظیم کردیم باید GraphicsPath() را، که در حقیقت متن را به تعدادی از خطوط و خطوط خمیده تبدیل می کند، مشخص کنیم. متن می تواند از طریق متد GraphicsPath.Warp() همراه با مقادیر تصادفی که تولید شده، خمیده شود.
برای تکمیل این خمیده گی، ذرات کوچک به طور تصادفی روی تصویر پراکنده شده است. شما می توانید از حالتهای دیگر آن نیز استفاده کنید ولی فراموش نشود که باید برای انسانها قابل درک باشد. (مثلاً برای کسانی که اختلال بینایی دارند).
Default.aspx
این یک مثال ساده از فرم وب است که تنها شامل چند المان پایه است، برای مثال یک تگ <IMG> برای تصویر، یک Text Box، و یک دکمه ثبت.

تصویر CAPTCHA

توجه داشته باشید که خصوصیت SRC از تگ <IMG> به فرم وب JpegImage.aspx اشاره دارد.
کدهای پشتیِ (code behind) Default.aspx به سادگی و به صورت تصادفی متنهایی برای تصویر انتخاب کرده و ارزیابی می کند که آیا این متن توسط کاربر زمانی که فرم به ثبت رسیده وارد شده یا خیر؟ کلید این کار ذخیره کردن رشته در قسمت شئ Session می باشد.

تصویر CAPTCHAتصویر CAPTCHA

دلیل اینکه رشته را در Session ذخیر کرده ایم این است که از طریق JpegImage.aspx قابل دسترسی باشد.

JpegImage.aspx :

برای این فرم وب، هیچ HTMLی نیاز نیست. در عوض کدها یک تصویر Jpeg می سازند.
در کدهای پشتی، در مرحله اول ما یک شئ CaptchaImage با استفاده از متنی که از شئ session بازگرفته شده، می سازیم. که این یک تصویر bitmap برای ما می سازد.

تصویر CAPTCHA

آخرین مرحله پس گرفتن تصویر bitmap از CaptchaImage.Image و نوشتن آن درخروجی HTTP در قالب JPEG می باشد. خوشبختانه، متد Save() از شئ bitmap، همه چیز را ساده می سازد.

معرفي سايت مرتبط با اين مقاله


تصاوير زيبا و مرتبط با اين مقاله


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