mygod,明天就考試啦,小編這次是抱着必掛的心態去考試了,~~~~(>_<)~~~~,這個掛科的幾率高達60%…..,請不要諷刺小編,因為小編是學渣
昨天小編在群里和他們聊天,偶爾發現一個新的驗證系統-極驗驗證,這款驗證系統十分的強大,下面將由小編帶領大家去認識一下吧
下面請看一段視頻:
【視頻】
看完視頻后,大家是不是覺得這個驗證系統特別棒,更重要的是減少了我們的驗證時間,避免了每次輸入驗證碼的麻煩- -,這套系統很安全,不信你看這個:
(極驗驗證/網站主/客戶瀏覽器三方的通訊時序圖)
說了這么多,發現我們忘了它的官網吧 - -,官網地址:http://www.geetest.com/
官網里沒看到幫助文檔,但是看到了使用說明:http://www.geetest.com/docs/sdk/build/html/sections/total_title.html
每種語言的demo已共享到github中,里面的代碼的注釋還是很全的:https://github.com/GeeTeam
只要你申請了賬號你就可以在后台進行修改驗證圖片,查看報表等信息…,是不是更加的人性化了,一個驗證碼居然如此強大 ^ _^
在這里小編多說句,小編認為自己是個很熱愛觀察的人(此處應該有壞笑..),小編通過網易科技了解到極驗驗證(下面一段話來自網易科技):
附鏈接:http://tech.163.com/14/0514/16/9S7HTCH000094ODU.html
由於小編比較喜歡Android,所以就學習了下Android端的極驗驗證,下面給予講述(精彩內容即將開始,啦啦啦啦)
【效果圖】
【步驟】
1 .使用的時候你需要引入極驗驗證的SDK(附sdk:https://github.com/GeeTeam/gtapp-android#id9)
2.下面使用的代碼為demo中的代碼,只不過在里面給予修改:
下面小編貼下代碼:
package com.gt.demo; import java.util.HashMap; import java.util.Map; import org.json.JSONObject; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.View.OnClickListener; import android.widget.Toast; import com.geetest.sdk.GeetestLib; import com.geetest.sdk.GtDialog; import com.geetest.sdk.GtDialog.GtListener; import com.geetest.sdk.SdkInit; public class MainActivity extends Activity { private SdkInit sdkInitData = new SdkInit(); // TODO get your own captcha id private String captcha_id = "Your captcha id"; //此處替換為你的captcha的id private Context context = MainActivity.this; private GeetestLib geetestLib = new GeetestLib(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); findViewById(R.id.btn_gtapp_sdk_demo_dlg).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { geetestLib.setCaptchaId(captcha_id); new GtAppDlgTask().execute(); } }); } class GtAppDlgTask extends AsyncTask<Void, Integer, Integer> { @Override protected Integer doInBackground(Void... params) { return geetestLib.preProcess(); } @Override protected void onPostExecute(Integer serverStatusCode) { if (serverStatusCode == 1) { sdkInitData.setCaptcha_id(captcha_id); sdkInitData.setChallenge_id(geetestLib.getChallengeId()); sdkInitData.setContext(context); openGtTest(sdkInitData); } else { // TODO 使用自己的驗證碼體系來進行判斷。或者不做任何處理 Toast.makeText( getBaseContext(), "Geetest Server is Down,Please Use your own system or disable the geetest", Toast.LENGTH_LONG).show(); } } } public void openGtTest(SdkInit initData) { GtDialog dialog = GtDialog.newInstance(initData); dialog.setGtListener(new GtListener() { @Override public void gtResult(boolean success, String result) { // TODO Auto-generated method stub if (success) { // // // TODO captcha // toastMsg("client captcha succeed:" + result); // // TODO If captcha is succeed on client side ,then post the // // data to CustomServer to setup the second validate // try { // JSONObject res_json = new JSONObject(result); // // //TODO Demo use of captcha // String custom_server_validate_url = "http://testcenter.geetest.com/gtweb/android_sdk_demo_server_validate/"; // // Map<String, String> params = new HashMap<String, String>(); // // params.put("geetest_challenge", // res_json.getString("geetest_challenge")); // params.put("geetest_validate", // res_json.getString("geetest_validate")); // params.put("geetest_seccode", // res_json.getString("geetest_seccode")); // String response = geetestLib.submitPostData( // custom_server_validate_url, params, "utf-8"); // // toastMsg("server captcha :" + response); // // } catch (Exception e) { // e.printStackTrace(); // } toastMsg("驗證成功"); finish(); Intent i=new Intent(context,SecondActivity.class); startActivity(i); } else { // TODO 驗證失敗 toastMsg("client captcha failed:" + result); } } @Override public void closeGt() { toastMsg("Close geetest windows"); } }); dialog.show(); } private void toastMsg(String msg) { Toast.makeText(getBaseContext(), msg, Toast.LENGTH_LONG).show(); } }
【分析】
在這部分代碼中,首先通過一個按鈕來實現點擊事件,點擊處理事件為加載一個異步操作,這個異步操作是為了實現設置captcha_id和創建驗證對話框,至於異步任務吧,我相信你懂得,在異步任務中,通過檢查服務器的狀態來絕對是否彈出驗證信息框,如果服務器返回碼為1,則成功連接至服務器,然后進行打開驗證框的操作,在這里我們會重寫回調函數:
至此一個最基本的驗證已經完成,至於添加相關的應用權限,請看下:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
至於如何使用極驗驗證官方的android sdk,請看下述:
假設用戶自建項目名稱為:CustomerProject
- 在極驗官方主頁www.geetest.com注冊賬號並申請相應的應用公鑰,id:{{id}}
- 將gt-android-sdk項目和CustomerProject項目Import到同一個工作空間
- 將gt-android-sdk項目以Android Library的方式進行引用 右鍵項目-Properties-Android-Library-Add即可
-----------------------------------------------------------這是一條帥氣的分割線-----------------------------------------------
講完了以后,是不是覺得這個極驗驗證的時候還是比較容易上手的,沒錯,就是比較容易上手的
在此:小編做個宣傳:
歡迎大家加入極客學院_濱院群,在這里有美女,也有屌絲,在這里你將會一展你的風采,I Want You ^_^
我們的群號:471647556
我們的二維碼(歡迎拿起你的手機“啪啪啪”):