【步入验证安全2.0时代】-极验验证
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
我们的二维码(欢迎拿起你的手机“啪啪啪”):