استفاده از CAPTCHA در اپلیکیشن های اندروید

چگونه میتوان از CAPTCHA در اپلیکیشن های اندروید استفاده کرد؟ - بخش اول

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

CAPTCHA که مخفف عبارت Completely Automated Public Turing tests for telling Computers and Humans Apart است، موثرترین روش برای مقابله با بات هاست که اغلب به صورت عکس، صدا و تست های منطقی میباشد و انجام آن برای انسان ها آسان و برای کامپیوترها بسیار دشوار میباشد.

 

در این مطلب آموزشی قصد داریم شما را با SafetyNet reCAPTCHA API  آشنا کنیم که برای افزودن CAPTCHA به اپلیکیشن های اندروید مورد استفاده قرار میگیرد.

 

پیش نیازها:

- Android Studio 3.0 Canary 4 یا بالاتر

- گوشی یا امولاتور که اندروید 4.4 یا بالاتر بر روی آن نصب شده باشد

- Node.js 8.1.3 یا بالاتر

 

1. راه اندازی پروژه

اندروید استودیو را باز کرده و یک پروژه جدید با یک اکتیویتی خالی بسازید. در فرم Configure your new project، یک نام بامعنی برای پکیج انتخاب کنید. این نام برای ثبت اپلیکیشن در سرویس reCAPTCHA مورد استفاده قرار میگیرد.

فیلد Include Kotlin Support را هم علامت بزنید. Kotlin نیز یک زبان رسمی برای اندروید است و در این مطلب به جای جاوا از آن استفاده خواهیم کرد.

استفاده از CAPTCHA در اپلیکیشن های اندروید

 

SafetyNet APIs بخشی از سرویس های گوگل پلی میباشند و برای اینکه بتوانید در پروژه خود از آن استفاده کنید، وابستگی implementation زیر را به فایل build.gradle از ماژول app اضافه کنید:

implementation 'com.google.android.gms:play-services-safetynet:11.0.2'

 

برای انجام عملیات مربوط به نتورک از لایبرری Fuel استفاده میکنیم که یک API مختصر و کوتاه مبتنی بر Kotlin دارد. آن را به عنوان یک وابستگی implementation دیگر اضافه میکنیم.

implementation 'com.github.kittinunf.fuel:fuel-android:1.8.0'

 

بدون مجوز دسترسی به INTERNET قادر به اجرای عملیات مربوط با شبکه نیستید، لذا کد زیر را به فایل منیفست پروژه اضافه کنید:

<uses-permission android:name="android.permission.INTERNET"/>

 

در آخر دکمه Sync Now را برای تکمیل پیکربندی پروژه بزنید.

 

2. دریافت کلیدهای reCAPTCHA

جهت استفاده از سرویس reCAPTCHA به دو کلید نیاز دارید:

- یک کلید سایت که باید از اپلیکیشن اندروید به سرویس ارسال شود

- یک کلید مخفی که باید از سرور بک-اند به سایت ارسال شود

 

برای دریافت این کلیدها از اکانت گوگل خود استفاده کنید و به reCAPTCHA admin console وارد شوید. اگر اولین بار است که کنسول را باز میکنید، یک فرم ثبت نام کوتاه به شما نمایش داده میشود که در آنجا نام پکیج اپلیکیشن را وارد میکنید.

استفاده از CAPTCHA در اپلیکیشن های اندروید

 

پس از اینکه شرایط استفاده از reCAPTCHA را تایید کردید، دکمه Register را برای تولید هر دو کلید موردنیاز بزنید.

استفاده از CAPTCHA در اپلیکیشن های اندروید

 

در این مرحله میتوانید با قرار دادن کلید سایت در فایل res/values/strings.xml، آن را به پروژه اندروید استودیو اضافه کنید:

<string name="my_site_key">ABCDEFGHIJKLMNOPQ1234567890</string>

 

3. تولید CAPTCHA

با شنیدن عبارت CAPTCHA، به یاد عکس هایی می افتیم که شامل حروف و اعداد در هم ریخته است، اما با پیشرفت های صورت گرفته در تکنولوژی های computer vision، دیگر با این متدها نمیتوان جلوی تمامی بات ها را گرفت.

CAPTCHAهای تولید شده توسط سرویس reCAPTCHA، بسیار پیشرفته و تعاملی هستند و حل کردن آنها مشابه انجام یک بازی ساده است. از این رو نمیتوان آنها را به طور مستقیم در لی اوت اکتیویتی جاسازی کرد. لذا برای این کار باید یک دکمه به لی اوت اضافه کنید که با کلیک روی آن، کاربر به یک صفحه جدید یا دیالوگی برود که شامل CAPTCHAها میباشد.

 

کد زیر نحوه افزودن ویجت Button به لی اوت اکتیویتی در فایل XML را نمایش میدهد:

<Button

android:id="@+id/are_you_human_button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:text="Are you human?" />

 

پیش از اینکه تولید CAPTCHA را آغاز کنید، باید یک کلاینت برای SafetyNet API اینیشیالایز کنید. برای این کار متد ()getClient از کلاس SafetyNet را فراخوانی کرده و کد زیر را در داخل متد ()onCreate از کلاس Activity اضافه کنید:

val myClient: SafetyNetClient = SafetyNet.getClient(this)

 

وقتی کاربر رو دکمه کلیک کرد CAPTCHA نمایش داده میشود و باید با استفاده از متد ()setOnClickListener، یک ایونت هندلر برای کلیک اضافه کنید. در داخل هندلر، متد ()verifyWithRecaptcha را فراخوانی کرده و کلید سایت را به عنوان آرگیومنت به آن اضافه کنید تا یک دیالوگ که دربرگیرنده CAPTCHA است باز شود.

 

مقدار بازگشتی متد ()verifyWithRecaptcha یک آبجکت Task میباشد. با وصل کردن ایونت هندلر on-success به آن، میتوانید یک آبجکت RecaptchaTokenResponse دریافت کنید که شامل توکنی است که با استفاده از آن درستی یا نادرستی CAPTCHA وارد شده را تعیین میکنید:

are_you_human_button.setOnClickListener {

myClient

.verifyWithRecaptcha(resources.getString(R.string.my_site_key))

.addOnSuccessListener { successEvent ->

val token: String = successEvent.tokenResult

// More code here

}

}

 

در مطلب بعدی به نحوه اعتبارسنجی توکن ها CAPTCHA و ساخت سرور خواهیم پرداخت، با ما همراه باشید.

 

https://code.tutsplus.com برگرفته از

اینها را هم بخوانید