【步入驗證安全2.0時代】-極驗驗證


      mygod,明天就考試啦,小編這次是抱着必掛的心態去考試了,~~~~(>_<)~~~~,這個掛科的幾率高達60%…..,請不要諷刺小編,因為小編是學渣

     昨天小編在群里和他們聊天,偶爾發現一個新的驗證系統-極驗驗證,這款驗證系統十分的強大,下面將由小編帶領大家去認識一下吧

    下面請看一段視頻:

   【視頻】


 

   看完視頻后,大家是不是覺得這個驗證系統特別棒,更重要的是減少了我們的驗證時間,避免了每次輸入驗證碼的麻煩- -,這套系統很安全,不信你看這個:

image

(極驗驗證/網站主/客戶瀏覽器三方的通訊時序圖)

 

說了這么多,發現我們忘了它的官網吧 - -,官網地址:http://www.geetest.com/

官網里沒看到幫助文檔,但是看到了使用說明:http://www.geetest.com/docs/sdk/build/html/sections/total_title.html

每種語言的demo已共享到github中,里面的代碼的注釋還是很全的:https://github.com/GeeTeam

只要你申請了賬號你就可以在后台進行修改驗證圖片,查看報表等信息…,是不是更加的人性化了,一個驗證碼居然如此強大 ^ _^

 

在這里小編多說句,小編認為自己是個很熱愛觀察的人(此處應該有壞笑..),小編通過網易科技了解到極驗驗證(下面一段話來自網易科技):

image

附鏈接:http://tech.163.com/14/0514/16/9S7HTCH000094ODU.html

 

由於小編比較喜歡Android,所以就學習了下Android端的極驗驗證,下面給予講述(精彩內容即將開始,啦啦啦啦)

【效果圖】

111

【步驟】

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,則成功連接至服務器,然后進行打開驗證框的操作,在這里我們會重寫回調函數:

image

 

至此一個最基本的驗證已經完成,至於添加相關的應用權限,請看下:

    <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

  1. 在極驗官方主頁www.geetest.com注冊賬號並申請相應的應用公鑰,id:{{id}}
  2. 將gt-android-sdk項目和CustomerProject項目Import到同一個工作空間
  3. 將gt-android-sdk項目以Android Library的方式進行引用 右鍵項目-Properties-Android-Library-Add即可

 

 

-----------------------------------------------------------這是一條帥氣的分割線-----------------------------------------------

 

講完了以后,是不是覺得這個極驗驗證的時候還是比較容易上手的,沒錯,就是比較容易上手的

在此:小編做個宣傳:

歡迎大家加入極客學院_濱院群,在這里有美女,也有屌絲,在這里你將會一展你的風采,I Want You ^_^

我們的群號:471647556

我們的二維碼(歡迎拿起你的手機“啪啪啪”):

1436692747457

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM