تصویر 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، همه چیز را ساده می سازد.

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


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


نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
موارد بیشتر برای شما
تجلیل از ۵۸ نخبه علمی کشور در شصت‌وچهارمین جایزه البرز
تجلیل از ۵۸ نخبه علمی کشور در شصت‌وچهارمین جایزه البرز
وضعیت موجود وقف و امور خیریه در سوئیس؛ تحلیل آماری بنیادها، هزینه‌ها و مشارکت مردمی
وضعیت موجود وقف و امور خیریه در سوئیس؛ تحلیل آماری بنیادها، هزینه‌ها و مشارکت مردمی
مفهوم وقف و امور خیریه در سوئیس؛ ساختار بنیادها، انجمن‌ها و شرایط عام‌المنفعه بودن
مفهوم وقف و امور خیریه در سوئیس؛ ساختار بنیادها، انجمن‌ها و شرایط عام‌المنفعه بودن
سقوط پهپاد بمب‌گذاری‌شده رژیم صهیونی در جنوب لبنان
play_arrow
سقوط پهپاد بمب‌گذاری‌شده رژیم صهیونی در جنوب لبنان
افشای سند جنگی دشمن به روایت سیمیاری
play_arrow
افشای سند جنگی دشمن به روایت سیمیاری
جابه‌جایی قلعه ۳۶۰ تنی با نیروی ۱۸۰۰ نفر در ژاپن
play_arrow
جابه‌جایی قلعه ۳۶۰ تنی با نیروی ۱۸۰۰ نفر در ژاپن
سند محرمانه‌ای که از اتاق جنگ دشمن لو رفت
play_arrow
سند محرمانه‌ای که از اتاق جنگ دشمن لو رفت
پزشک قلابی که با سرم بیهوشی وارد خانه‌ها می‌شد!
play_arrow
پزشک قلابی که با سرم بیهوشی وارد خانه‌ها می‌شد!
اژه‌ای: نگوییم نمی‌شود بگوییم می‌شود می‌توانیم و انجام می‌دهیم
play_arrow
اژه‌ای: نگوییم نمی‌شود بگوییم می‌شود می‌توانیم و انجام می‌دهیم
وزیرخارجه سابق آمریکا: نتانیاهو به تصویر اسرائیل در آمریکا و جهان ضربه زد
play_arrow
وزیرخارجه سابق آمریکا: نتانیاهو به تصویر اسرائیل در آمریکا و جهان ضربه زد
پوکر لژیونر ایرانی در لیگ مالزی
play_arrow
پوکر لژیونر ایرانی در لیگ مالزی
آزمایش سیستم چتر نجات رزمی و نظامی هند
play_arrow
آزمایش سیستم چتر نجات رزمی و نظامی هند
سعید اسماعیلی بدون دادن حتی یک امتیاز قهرمان شد
play_arrow
سعید اسماعیلی بدون دادن حتی یک امتیاز قهرمان شد
‏ادعای ترامپ: اگر من نبودم ایران اسرائیل را نابود می کرد
play_arrow
‏ادعای ترامپ: اگر من نبودم ایران اسرائیل را نابود می کرد
بی‌ارزش‌ترین ویدیوهایی که در یوتیوب بازدیدهای میلیونی داشته‌اند!
play_arrow
بی‌ارزش‌ترین ویدیوهایی که در یوتیوب بازدیدهای میلیونی داشته‌اند!