转载

【步入验证安全2.0时代】-极验验证

mygod,明天就考试啦,小编这次是抱着必挂的心态去考试了,~~~~(>_<)~~~~,这个挂科的几率高达60%…..,请不要讽刺小编,因为小编是学渣

昨天小编在群里和他们聊天,偶尔发现一个新的验证系统-极验验证,这款验证系统十分的强大,下面将由小编带领大家去认识一下吧

下面请看一段视频:

【视频】

看完视频后,大家是不是觉得这个验证系统特别棒,更重要的是减少了我们的验证时间,避免了每次输入验证码的麻烦- -,这套系统很安全,不信你看这个:

【步入验证安全2.0时代】-极验验证

(极验验证/网站主/客户浏览器三方的通讯时序图)

说了这么多,发现我们忘了它的官网吧 - -,官网地址: http://www.geetest.com/

官网里没看到帮助文档,但是看到了使用说明: http://www.geetest.com/docs/sdk/build/html/sections/total_title.html

每种语言的demo已共享到github中,里面的代码的注释还是很全的: https://github.com/GeeTeam

只要你申请了账号你就可以在后台进行修改验证图片,查看报表等信息…,是不是更加的人性化了,一个验证码居然如此强大 ^ _^

在这里小编多说句,小编认为自己是个很热爱观察的人(此处应该有坏笑..),小编通过网易科技了解到极验验证(下面一段话来自网易科技):

【步入验证安全2.0时代】-极验验证

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

由于小编比较喜欢Android,所以就学习了下Android端的极验验证,下面给予讲述(精彩内容即将开始,啦啦啦啦)

【效果图】

【步入验证安全2.0时代】-极验验证

【步骤】

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,则成功连接至服务器,然后进行打开验证框的操作,在这里我们会重写回调函数:

【步入验证安全2.0时代】-极验验证

至此一个最基本的验证已经完成,至于添加相关的应用权限,请看下:

    <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

我们的二维码(欢迎拿起你的手机“啪啪啪”):

【步入验证安全2.0时代】-极验验证

正文到此结束
Loading...