جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
تصوير CAPTCHA
-(2 Body) 
تصوير CAPTCHA
Visitor 260
Category: دنياي فن آوري

مقدمه :

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() براي پيدا کردن ابعاد نهايي از متن نقاشي شده شروع مي کنيم. در صورتي که متن، از ابعاد تصوير تجاوز کند، ما سايز قلم را کم خواهيم کرد و دوباره امتحان مي کنيم و به همين ترتيب ادامه مي دهيم تا سايز مناسب را پيدا کنيم.

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

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

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

JpegImage.aspx :

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

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

معرفي سايت مرتبط با اين مقاله
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image