From 16dab62689430e6eb7b2a60c88e4e4caeeb719b8 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Thu, 21 Jan 2016 17:26:22 +0800 Subject: [PATCH 01/23] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/geetest/sdk/java/GeetestLib.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/com/geetest/sdk/java/GeetestLib.java b/src/com/geetest/sdk/java/GeetestLib.java index ead2c46..b41fc4b 100644 --- a/src/com/geetest/sdk/java/GeetestLib.java +++ b/src/com/geetest/sdk/java/GeetestLib.java @@ -26,7 +26,7 @@ */ public class GeetestLib { - protected final String verName = "3.0.0";// SDK版本编号 + protected final String verName = "3.0.1";// SDK版本编号 protected final String sdkLang = "java";// SD的语言类型 protected final String apiUrl = "http://api.geetest.com"; //极验验证API URL @@ -65,8 +65,6 @@ public class GeetestLib { */ private String privateKey = ""; - private String challenge = ""; - private String responseStr = ""; /** @@ -125,11 +123,11 @@ private String getFailPreProcessRes() { * 预处理成功后的标准串 * */ - private String getSuccessPreProcessRes() { + private String getSuccessPreProcessRes(String challenge) { return String.format( "{\"success\":%s,\"gt\":\"%s\",\"challenge\":\"%s\"}", 1, - this.captchaId, this.challenge); + this.captchaId, challenge); } /** @@ -145,7 +143,6 @@ public int preProcess() { return 0; } - responseStr = this.getSuccessPreProcessRes(); return 1; } @@ -162,7 +159,7 @@ private int registerChallenge() { String result_str = readContentFromGet(GET_URL); gtlog("register_result:" + result_str); if (32 == result_str.length()) { - this.challenge = result_str; + responseStr = this.getSuccessPreProcessRes(result_str); return 1; } else { gtlog("gtServer register challenge failed"); From 6822d16865a4659f0cd525fbd09d4d30b1e46d89 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Mon, 25 Jan 2016 15:06:22 +0800 Subject: [PATCH 02/23] remove useless libraries --- .classpath | 1 - 1 file changed, 1 deletion(-) diff --git a/.classpath b/.classpath index fb26e58..4131ab3 100644 --- a/.classpath +++ b/.classpath @@ -8,7 +8,6 @@ - From 4826585dfa4040084d197e78187318db913d60be Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Tue, 26 Jan 2016 10:01:26 +0800 Subject: [PATCH 03/23] fix readme --- ReadMe.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ReadMe.rst b/ReadMe.rst index f566654..87904e6 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -85,6 +85,11 @@ QQ:1295351490 发布日志(由新到旧) =================================== +3.1.0 +--------------------------- +- 将注册完后获取的challenge进行一层加密再返回 + + 3.0.1 --------------------------- From 15840dc80dfff907f15bac8c768c21bb452b613a Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Tue, 26 Jan 2016 10:03:05 +0800 Subject: [PATCH 04/23] fix sdk version name --- src/com/geetest/sdk/java/GeetestLib.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/geetest/sdk/java/GeetestLib.java b/src/com/geetest/sdk/java/GeetestLib.java index 2c10051..90ce752 100644 --- a/src/com/geetest/sdk/java/GeetestLib.java +++ b/src/com/geetest/sdk/java/GeetestLib.java @@ -27,7 +27,7 @@ */ public class GeetestLib { - protected final String verName = "3.0.1";// SDK版本编号 + protected final String verName = "3.1.0";// SDK版本编号 protected final String sdkLang = "java";// SD的语言类型 protected final String apiUrl = "http://api.geetest.com"; //极验验证API URL @@ -126,7 +126,7 @@ private String getFailPreProcessRes() { */ private String getSuccessPreProcessRes(String challenge) { - gtlog(challenge); + gtlog("challenge:" + challenge); return String.format( "{\"success\":%s,\"gt\":\"%s\",\"challenge\":\"%s\"}", 1, this.captchaId, challenge); From b64dc0fb2f94c6306e7ab821fb2f016a822db2fd Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Tue, 26 Jan 2016 17:30:30 +0800 Subject: [PATCH 05/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9api=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/allclasses-frame.html | 4 +- doc/allclasses-noframe.html | 4 +- doc/com/geetest/sdk/java/GeetestLib.html | 70 ++-------- .../sdk/java/class-use/GeetestLib.html | 4 +- doc/com/geetest/sdk/java/package-frame.html | 4 +- doc/com/geetest/sdk/java/package-summary.html | 4 +- doc/com/geetest/sdk/java/package-tree.html | 4 +- doc/com/geetest/sdk/java/package-use.html | 4 +- doc/constant-values.html | 29 +---- doc/deprecated-list.html | 4 +- doc/help-doc.html | 4 +- doc/index-files/index-1.html | 8 +- doc/index-files/index-2.html | 8 +- doc/index-files/index-3.html | 8 +- doc/index-files/index-4.html | 12 +- doc/index-files/index-5.html | 8 +- doc/index-files/index-6.html | 8 +- doc/index-files/index-7.html | 12 +- doc/index-files/index-8.html | 121 ------------------ doc/index.html | 2 +- doc/java/package-frame.html | 4 +- doc/java/package-summary.html | 4 +- doc/java/package-tree.html | 4 +- doc/java/package-use.html | 4 +- doc/overview-frame.html | 4 +- doc/overview-summary.html | 4 +- doc/overview-tree.html | 4 +- 27 files changed, 81 insertions(+), 269 deletions(-) delete mode 100644 doc/index-files/index-8.html diff --git a/doc/allclasses-frame.html b/doc/allclasses-frame.html index b2f5e64..2a67b59 100644 --- a/doc/allclasses-frame.html +++ b/doc/allclasses-frame.html @@ -2,10 +2,10 @@ - + All Classes - + diff --git a/doc/allclasses-noframe.html b/doc/allclasses-noframe.html index f6cc9c2..6aa3a7e 100644 --- a/doc/allclasses-noframe.html +++ b/doc/allclasses-noframe.html @@ -2,10 +2,10 @@ - + All Classes - + diff --git a/doc/com/geetest/sdk/java/GeetestLib.html b/doc/com/geetest/sdk/java/GeetestLib.html index 5cbb96b..12a0193 100644 --- a/doc/com/geetest/sdk/java/GeetestLib.html +++ b/doc/com/geetest/sdk/java/GeetestLib.html @@ -2,10 +2,10 @@ - + GeetestLib - + @@ -126,40 +126,28 @@

Field Summary

static java.lang.String -fail_res  - - -static java.lang.String fn_geetest_challenge
极验验证二次验证表单数据 chllenge
- + static java.lang.String fn_geetest_seccode
极验验证二次验证表单数据 seccode
- + static java.lang.String fn_geetest_validate
极验验证二次验证表单数据 validate
- -static java.lang.String -forbidden_res  - java.lang.String gtServerStatusSessionKey
极验验证API服务状态Session Key
- -static java.lang.String -success_res  - @@ -196,7 +184,7 @@

Method Summary

Method and Description -java.lang.String +int enhencedValidateRequest(java.lang.String challenge, java.lang.String validate, java.lang.String seccode) @@ -204,7 +192,7 @@

Method Summary

-java.lang.String +int failbackValidateRequest(java.lang.String challenge, java.lang.String validate, java.lang.String seccode) @@ -255,36 +243,6 @@

Methods inherited from class java.lang.Object

Field Detail

- - - - - - - - - - - -
    -
  • -

    forbidden_res

    -
    public static final java.lang.String forbidden_res
    -
    See Also:
    Constant Field Values
    -
  • -
@@ -403,12 +361,12 @@

preProcess

  • enhencedValidateRequest

    -
    public java.lang.String enhencedValidateRequest(java.lang.String challenge,
    -                                       java.lang.String validate,
    -                                       java.lang.String seccode)
    +
    public int enhencedValidateRequest(java.lang.String challenge,
    +                          java.lang.String validate,
    +                          java.lang.String seccode)
    服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
    Parameters:
    challenge -
    validate -
    seccode -
    -
    Returns:
    验证结果
    +
    Returns:
    验证结果,1表示验证成功0表示验证失败
@@ -417,12 +375,12 @@

enhencedValidateRequest

  • failbackValidateRequest

    -
    public java.lang.String failbackValidateRequest(java.lang.String challenge,
    -                                       java.lang.String validate,
    -                                       java.lang.String seccode)
    +
    public int failbackValidateRequest(java.lang.String challenge,
    +                          java.lang.String validate,
    +                          java.lang.String seccode)
    failback使用的验证方式
    Parameters:
    challenge -
    validate -
    seccode -
    -
    Returns:
    验证结果
    +
    Returns:
    验证结果,1表示验证成功0表示验证失败
diff --git a/doc/com/geetest/sdk/java/class-use/GeetestLib.html b/doc/com/geetest/sdk/java/class-use/GeetestLib.html index 37c7378..6e7a4b0 100644 --- a/doc/com/geetest/sdk/java/class-use/GeetestLib.html +++ b/doc/com/geetest/sdk/java/class-use/GeetestLib.html @@ -2,10 +2,10 @@ - + Uses of Class com.geetest.sdk.java.GeetestLib - + diff --git a/doc/com/geetest/sdk/java/package-frame.html b/doc/com/geetest/sdk/java/package-frame.html index 1f9f5cc..2c11475 100644 --- a/doc/com/geetest/sdk/java/package-frame.html +++ b/doc/com/geetest/sdk/java/package-frame.html @@ -2,10 +2,10 @@ - + com.geetest.sdk.java - + diff --git a/doc/com/geetest/sdk/java/package-summary.html b/doc/com/geetest/sdk/java/package-summary.html index d9cf24c..eded823 100644 --- a/doc/com/geetest/sdk/java/package-summary.html +++ b/doc/com/geetest/sdk/java/package-summary.html @@ -2,10 +2,10 @@ - + com.geetest.sdk.java - + diff --git a/doc/com/geetest/sdk/java/package-tree.html b/doc/com/geetest/sdk/java/package-tree.html index dbe98b0..2085564 100644 --- a/doc/com/geetest/sdk/java/package-tree.html +++ b/doc/com/geetest/sdk/java/package-tree.html @@ -2,10 +2,10 @@ - + com.geetest.sdk.java Class Hierarchy - + diff --git a/doc/com/geetest/sdk/java/package-use.html b/doc/com/geetest/sdk/java/package-use.html index 55c7abd..5a51b2c 100644 --- a/doc/com/geetest/sdk/java/package-use.html +++ b/doc/com/geetest/sdk/java/package-use.html @@ -2,10 +2,10 @@ - + Uses of Package com.geetest.sdk.java - + diff --git a/doc/constant-values.html b/doc/constant-values.html index d075584..0b9dca4 100644 --- a/doc/constant-values.html +++ b/doc/constant-values.html @@ -2,10 +2,10 @@ - + Constant Field Values - + @@ -85,47 +85,26 @@

com.geetest.*

-
- -public static final java.lang.String -fail_res -"fail" - - public static final java.lang.String fn_geetest_challenge "geetest_challenge" - + public static final java.lang.String fn_geetest_seccode "geetest_seccode" - + public static final java.lang.String fn_geetest_validate "geetest_validate" - - - -public static final java.lang.String -forbidden_res -"forbidden" - - - - -public static final java.lang.String -success_res -"success" - diff --git a/doc/deprecated-list.html b/doc/deprecated-list.html index 6083725..e9db2db 100644 --- a/doc/deprecated-list.html +++ b/doc/deprecated-list.html @@ -2,10 +2,10 @@ - + Deprecated List - + diff --git a/doc/help-doc.html b/doc/help-doc.html index c6f2a6a..b4934bb 100644 --- a/doc/help-doc.html +++ b/doc/help-doc.html @@ -2,10 +2,10 @@ - + API Help - + diff --git a/doc/index-files/index-1.html b/doc/index-files/index-1.html index 0d07930..ce9eac7 100644 --- a/doc/index-files/index-1.html +++ b/doc/index-files/index-1.html @@ -2,10 +2,10 @@ - + C-Index - + @@ -63,7 +63,7 @@ -
C D E F G J P S  +
C D E F G J P 

C

@@ -71,7 +71,7 @@

C

com.geetest.sdk.java - package com.geetest.sdk.java
 
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

D

@@ -73,7 +73,7 @@

D

调试开关,是否输出调试日志
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

E

@@ -73,7 +73,7 @@

E

服务正常的情况下使用的验证方式,向gt-server进行二次验证,获取验证结果
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

F

-
fail_res - Static variable in class com.geetest.sdk.java.GeetestLib
-
 
failbackValidateRequest(String, String, String) - Method in class com.geetest.sdk.java.GeetestLib
failback使用的验证方式
@@ -86,10 +84,8 @@

F

极验验证二次验证表单数据 validate
-
forbidden_res - Static variable in class com.geetest.sdk.java.GeetestLib
-
 
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

G

@@ -91,7 +91,7 @@

G

极验验证API服务状态Session Key
-C D E F G J P S 
+C D E F G J P 
-
C D E F G J P S  +
C D E F G J P 

J

@@ -71,7 +71,7 @@

J

java - package java
 
-C D E F G J P S 
+C D E F G J P 
diff --git a/doc/index-files/index-7.html b/doc/index-files/index-7.html index 6a7dbdc..bd12959 100644 --- a/doc/index-files/index-7.html +++ b/doc/index-files/index-7.html @@ -2,10 +2,10 @@ - + P-Index - + @@ -38,7 +38,7 @@ -
C D E F G J P S  +
C D E F G J P 

P

@@ -73,7 +73,7 @@

P

验证初始化预处理
-C D E F G J P S 
+C D E F G J P 
@@ -94,7 +94,7 @@

P

From 1c0dad1d2028a7389b31fd2632a80018c47c90ca Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Fri, 8 Apr 2016 10:17:31 +0800 Subject: [PATCH 13/23] fix --- ReadMe.rst | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/ReadMe.rst b/ReadMe.rst index 1a8b261..e6a5277 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -58,6 +58,12 @@ #. 打开tomcat #. 在浏览器中访问http://localhost:8080/gt-java-sdk/login.jsp即可看到Demo界面 +集成验证服务到自己项目 +========================= + +1. 将com.geetest.sdk.java这个包引入项目中 +#. 根据自身使用情况修改前端代码调用验证码,前端文档 http://www.geetest.com/install/sections/idx-client-sdk.html#web +#. 修改后台代码,具体可以参考demo中的后台进行修改 failback效果展示 ========================= @@ -76,13 +82,6 @@ failback效果 .. image:: ./2015-06-16-002.png -集成验证服务到自己网站上 -========================= - -1. 将com.geetest.sdk.java这个包引入项目中 -#. 根据自身使用情况修改前端代码调用验证码,前端文档 http://www.geetest.com/install/sections/idx-client-sdk.html#web -#. 修改后台代码,具体可以参考demo中的后台使用进行修改 - 联系作者 ============= From 76b5fb4e5121e69c6a4fddc8f25a2882d37c90e5 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Tue, 19 Apr 2016 14:43:56 +0800 Subject: [PATCH 14/23] fix --- .classpath | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.classpath b/.classpath index 4131ab3..19f37b9 100644 --- a/.classpath +++ b/.classpath @@ -8,6 +8,6 @@ - + From efcc2e361d89b2f4206618c746c42f9d9b9a39b6 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Mon, 25 Apr 2016 17:10:30 +0800 Subject: [PATCH 15/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9demo=EF=BC=8C=E7=8E=B0?= =?UTF-8?q?=E5=9C=A8=E6=94=B9=E4=B8=BA=E4=B8=80=E4=B8=AA=E5=B5=8C=E5=85=A5?= =?UTF-8?q?=E5=BC=8F=E5=92=8C=E4=B8=80=E4=B8=AA=E5=BC=B9=E5=87=BA=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/login.jsp | 289 ++++++++++++++++++++++++++++++------------- 1 file changed, 201 insertions(+), 88 deletions(-) diff --git a/WebContent/login.jsp b/WebContent/login.jsp index 4327c54..5d21e59 100644 --- a/WebContent/login.jsp +++ b/WebContent/login.jsp @@ -6,98 +6,211 @@ + path + "/"; %> - + - -极意网络 - - - - - - - - - - + + + gt-java-sdk-demo + - - -
-

JavaEE站点安装Demo页面

-
-
- -
-
- -
- - <%--Start Code--%> -
-
- - <%--End Code--%> - - -
- -
- - - -
- - - -
-
+

极验验证SDKDemo

+

+
+

+ + + + + + + + + +

+
+

+ + + From 5ab0923de3a4babe9deae7c7edbbf65478072012 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Mon, 25 Apr 2016 17:11:02 +0800 Subject: [PATCH 16/23] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E7=BB=99=E5=89=8D=E7=AB=AF=E7=9A=84=E6=95=B0=E6=8D=AE=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/java/web/demo/VerifyLoginServlet.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java b/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java index 299d35e..8f5a7a5 100644 --- a/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java +++ b/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.io.PrintWriter; +import java.rmi.server.SkeletonNotFoundException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -11,6 +12,9 @@ import com.geetest.sdk.java.GeetestLib; import com.geetest.sdk.java.web.demo.GeetestConfig; +import org.json.JSONException; +import org.json.JSONObject; + /** * 使用post方式,返回验证结果, request表单中必须包含challenge, validate, seccode @@ -53,12 +57,26 @@ protected void doPost(HttpServletRequest request, if (gtResult == 1) { // 验证成功 PrintWriter out = response.getWriter(); - out.println("success:" + gtSdk.getVersionInfo()); + JSONObject data = new JSONObject(); + try { + data.put("status", "success"); + data.put("version", gtSdk.getVersionInfo()); + } catch (JSONException e) { + e.printStackTrace(); + } + out.println(data.toString()); } else { // 验证失败 + JSONObject data = new JSONObject(); + try { + data.put("status", "fail"); + data.put("version", gtSdk.getVersionInfo()); + } catch (JSONException e) { + e.printStackTrace(); + } PrintWriter out = response.getWriter(); - out.println("fail:" + gtSdk.getVersionInfo()); + out.println(data.toString()); } } From d0137ea2cfaebd396f67b1412f91c89836e8962e Mon Sep 17 00:00:00 2001 From: zheng Date: Wed, 4 May 2016 10:36:35 +0800 Subject: [PATCH 17/23] default comment --- .DS_Store | Bin 0 -> 6148 bytes ReadMe.rst | 3 +++ 2 files changed, 3 insertions(+) create mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6ee957a0a9055086d8abe48a09af2def0351c9dd GIT binary patch literal 6148 zcmeHKJ5B>J6daR9;!}_^1;tAA2pZ~DSR^_krJ$gRl8pjVLL!p%%Nb~CxB&-1h=LQq z1vm=xY_q#g97+@+zsMfP&(HHb*|lQ;syWY&fjWRK7QtwTmB+*{Wyv;d&puJf9K*qJ zyEh(9mPUq-pg>Sy9TkvwH^LzXxWUYMfA?Nas=m=UO|$u|2Yg=aJ?Nzraiejz(l@!T z>VLW4kU5Vr((7m>Z;rrc5Z&gerT*P$r!Hu^pFK%nh1wD0}%(mRZ>wiqhX8uxO(%mIg7gm>XmdE&LJCGK4B9@TUrV0|*MoIRF3v literal 0 HcmV?d00001 diff --git a/ReadMe.rst b/ReadMe.rst index e6a5277..2e52e82 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -11,8 +11,11 @@ 如果需要移动端的canvas功能,请参考canvas的前端文档。 +在进行此项目前,请您务必仔细阅读了:极验用户引导手册 [#geetest-user-guid]_ +.. [#geetest-user-guid] `极验用户必读 `__ + 核心SDK库 --------------------- From a395ea33d5caa78868965c9ae521f200ea883d45 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Fri, 13 May 2016 10:02:32 +0800 Subject: [PATCH 18/23] fix lib --- .classpath | 1 + 1 file changed, 1 insertion(+) diff --git a/.classpath b/.classpath index 19f37b9..ebb394e 100644 --- a/.classpath +++ b/.classpath @@ -9,5 +9,6 @@
+ From 18079d50f410a1389d610a5ed43ef20a9d7df7e4 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Tue, 2 Aug 2016 17:20:34 +0800 Subject: [PATCH 19/23] fix --- WebContent/WEB-INF/web.xml | 40 -------------------------------------- 1 file changed, 40 deletions(-) diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index 02ec868..ae5af4c 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -16,30 +16,6 @@ com.geetest.sdk.java.web.demo.VerifyLoginServlet - - - - StartMsgCaptchaServlet - StartMsgCaptchaServlet - - com.geetest.sdk.java.msg.demo.StartMsgCaptchaServlet - - - VerifyGeetestServlet - VerifyGeetestServlet - - com.geetest.sdk.java.msg.demo.VerifyGeetestServlet - - - VerifyMsgServlet - VerifyMsgServlet - - com.geetest.sdk.java.msg.demo.VerifyMsgServlet - - - - - VerifyLoginServlet /VerifyLoginServlet @@ -49,22 +25,6 @@ /StartCaptchaServlet - - - StartMsgCaptchaServlet - /StartMsgCaptchaServlet - - - VerifyGeetestServlet - /VerifyGeetestServlet - - - - - VerifyMsgServlet - /VerifyMsgServlet - - index.html index.htm From 2f7d12525861955ec8bff55a8c4fd95a5b61f899 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Sun, 18 Sep 2016 16:25:43 +0800 Subject: [PATCH 20/23] update sdk version --- src/com/geetest/sdk/java/GeetestLib.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/geetest/sdk/java/GeetestLib.java b/src/com/geetest/sdk/java/GeetestLib.java index fe00201..722aefd 100644 --- a/src/com/geetest/sdk/java/GeetestLib.java +++ b/src/com/geetest/sdk/java/GeetestLib.java @@ -27,7 +27,7 @@ */ public class GeetestLib { - protected final String verName = "3.2.0";// SDK版本编号 + protected final String verName = "3.3.0";// SDK版本编号 protected final String sdkLang = "java";// SD的语言类型 protected final String apiUrl = "http://api.geetest.com"; //极验验证API URL From 93e065e9cc739c2c9cb31ce94452f31edf67dff8 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Sun, 18 Sep 2016 16:28:07 +0800 Subject: [PATCH 21/23] =?UTF-8?q?demo=E5=A2=9E=E5=8A=A0mobile=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E7=9A=84=E9=AA=8C=E8=AF=81=E5=BD=A2=E5=BC=8F=EF=BC=8C?= =?UTF-8?q?demo=E4=B8=AD=E7=9A=84=E5=90=8E=E5=8F=B0=E5=88=86=E4=B8=BApc?= =?UTF-8?q?=E7=AB=AF=E5=90=8E=E5=8F=B0=E5=92=8Cmobile=E5=BD=A2=E5=BC=8F?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=EF=BC=8C=E4=B8=A4=E8=80=85=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E7=9A=84id=E4=B8=8Ekey=E4=B8=8D=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WebContent/WEB-INF/web.xml | 24 ++- WebContent/login.jsp | 180 +++++++++++++----- .../sdk/java/web/demo/GeetestConfig.java | 12 +- .../java/web/demo/StartCaptchaServlet.java | 2 +- .../sdk/java/web/demo/VerifyLoginServlet.java | 5 +- .../java/web/mobiledemo/GeetestConfig.java | 22 +++ .../web/mobiledemo/StartCaptchaServlet.java | 46 +++++ .../web/mobiledemo/VerifyLoginServlet.java | 82 ++++++++ 8 files changed, 312 insertions(+), 61 deletions(-) create mode 100644 src/com/geetest/sdk/java/web/mobiledemo/GeetestConfig.java create mode 100644 src/com/geetest/sdk/java/web/mobiledemo/StartCaptchaServlet.java create mode 100644 src/com/geetest/sdk/java/web/mobiledemo/VerifyLoginServlet.java diff --git a/WebContent/WEB-INF/web.xml b/WebContent/WEB-INF/web.xml index ae5af4c..7cc3eed 100644 --- a/WebContent/WEB-INF/web.xml +++ b/WebContent/WEB-INF/web.xml @@ -15,14 +15,34 @@ com.geetest.sdk.java.web.demo.VerifyLoginServlet + + MobileStartCaptchaServlet + MobileStartCaptchaServlet + + com.geetest.sdk.java.web.mobiledemo.StartCaptchaServlet + + + MobileVerifyLoginServlet + MobileVerifyLoginServlet + + com.geetest.sdk.java.web.mobiledemo.VerifyLoginServlet + VerifyLoginServlet - /VerifyLoginServlet + /pc-geetest/validate StartCaptchaServlet - /StartCaptchaServlet + /pc-geetest/register + + + MobileVerifyLoginServlet + /mobile-geetest/validate + + + MobileStartCaptchaServlet + /mobile-geetest/register diff --git a/WebContent/login.jsp b/WebContent/login.jsp index 5d21e59..cae5f52 100644 --- a/WebContent/login.jsp +++ b/WebContent/login.jsp @@ -18,7 +18,6 @@ margin: 50px 0; text-align: center; } - .inp { border: 1px solid gray; padding: 0 10px; @@ -26,7 +25,6 @@ height: 30px; font-size: 18px; } - .btn { border: 1px solid gray; width: 100px; @@ -34,12 +32,10 @@ font-size: 18px; cursor: pointer; } - #embed-captcha { width: 300px; margin: 0 auto; } - .show { display: block; } @@ -49,6 +45,31 @@ #notice { color: red; } + /* 以下遮罩层为demo.用户可自行设计实现 */ + #mask { + display: none; + position: fixed; + text-align: center; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + overflow: auto; + } + /* 可自行设计实现captcha的位置大小 */ + .popup-mobile { + position: relative; + } + #popup-captcha-mobile { + position: fixed; + display: none; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + -webkit-transform: translate(-50%, -50%); + z-index: 9999; + } @@ -56,17 +77,27 @@




+ + + + + + + + + + - - - - - -




- +

+
+

+ + - + \ No newline at end of file diff --git a/src/com/geetest/sdk/java/web/demo/GeetestConfig.java b/src/com/geetest/sdk/java/web/demo/GeetestConfig.java index d9bbd39..d232173 100644 --- a/src/com/geetest/sdk/java/web/demo/GeetestConfig.java +++ b/src/com/geetest/sdk/java/web/demo/GeetestConfig.java @@ -8,15 +8,15 @@ public class GeetestConfig { // 填入自己的captcha_id和private_key - private static final String captcha_id = "b46d1900d0a894591916ea94ea91bd2c"; - private static final String private_key = "36fc3fe98530eea08dfc6ce76e3d24c4"; + private static final String geetest_id = "b46d1900d0a894591916ea94ea91bd2c"; + private static final String geetest_key = "36fc3fe98530eea08dfc6ce76e3d24c4"; - public static final String getCaptcha_id() { - return captcha_id; + public static final String getGeetest_id() { + return geetest_id; } - public static final String getPrivate_key() { - return private_key; + public static final String getGeetest_key() { + return geetest_key; } } diff --git a/src/com/geetest/sdk/java/web/demo/StartCaptchaServlet.java b/src/com/geetest/sdk/java/web/demo/StartCaptchaServlet.java index b56a05b..184657a 100644 --- a/src/com/geetest/sdk/java/web/demo/StartCaptchaServlet.java +++ b/src/com/geetest/sdk/java/web/demo/StartCaptchaServlet.java @@ -22,7 +22,7 @@ public class StartCaptchaServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - GeetestLib gtSdk = new GeetestLib(GeetestConfig.getCaptcha_id(), GeetestConfig.getPrivate_key()); + GeetestLib gtSdk = new GeetestLib(GeetestConfig.getGeetest_id(), GeetestConfig.getGeetest_key()); String resStr = "{}"; diff --git a/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java b/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java index 8f5a7a5..8bcef80 100644 --- a/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java +++ b/src/com/geetest/sdk/java/web/demo/VerifyLoginServlet.java @@ -10,7 +10,6 @@ import javax.servlet.http.HttpServletResponse; import com.geetest.sdk.java.GeetestLib; -import com.geetest.sdk.java.web.demo.GeetestConfig; import org.json.JSONException; import org.json.JSONObject; @@ -26,12 +25,12 @@ public class VerifyLoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - GeetestLib gtSdk = new GeetestLib(GeetestConfig.getCaptcha_id(), GeetestConfig.getPrivate_key()); + GeetestLib gtSdk = new GeetestLib(GeetestConfig.getGeetest_id(), GeetestConfig.getGeetest_key()); String challenge = request.getParameter(GeetestLib.fn_geetest_challenge); String validate = request.getParameter(GeetestLib.fn_geetest_validate); String seccode = request.getParameter(GeetestLib.fn_geetest_seccode); - + //从session中获取gt-server状态 int gt_server_status_code = (Integer) request.getSession().getAttribute(gtSdk.gtServerStatusSessionKey); diff --git a/src/com/geetest/sdk/java/web/mobiledemo/GeetestConfig.java b/src/com/geetest/sdk/java/web/mobiledemo/GeetestConfig.java new file mode 100644 index 0000000..5f8e0af --- /dev/null +++ b/src/com/geetest/sdk/java/web/mobiledemo/GeetestConfig.java @@ -0,0 +1,22 @@ +package com.geetest.sdk.java.web.mobiledemo; + +/** + * GeetestWeb配置文件,mobile版本的id与key + * + * + */ +public class GeetestConfig { + + // 填入自己的captcha_id和private_key + private static final String geetest_id = "7c25da6fe21944cfe507d2f9876775a9"; + private static final String geetest_key = "f5883f4ee3bd4fa8caec67941de1b903"; + + public static final String getGeetest_id() { + return geetest_id; + } + + public static final String getGeetest_key() { + return geetest_key; + } + +} diff --git a/src/com/geetest/sdk/java/web/mobiledemo/StartCaptchaServlet.java b/src/com/geetest/sdk/java/web/mobiledemo/StartCaptchaServlet.java new file mode 100644 index 0000000..c903136 --- /dev/null +++ b/src/com/geetest/sdk/java/web/mobiledemo/StartCaptchaServlet.java @@ -0,0 +1,46 @@ +package com.geetest.sdk.java.web.mobiledemo; + +import java.io.IOException; +import java.io.PrintWriter; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.geetest.sdk.java.GeetestLib; + + +/** + * 使用Get的方式返回challenge和capthca_id,此方式以实现前后端完全分离的开发模式 + * + */ +public class StartCaptchaServlet extends HttpServlet { + + private static final long serialVersionUID = 1L; + + protected void doGet(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { + + GeetestLib gtSdk = new GeetestLib(GeetestConfig.getGeetest_id(), GeetestConfig.getGeetest_key()); + + String resStr = "{}"; + + //自定义userid + String userid = "test"; + + //进行验证预处理 + int gtServerStatus = gtSdk.preProcess(userid); + + //将服务器状态设置到session中 + request.getSession().setAttribute(gtSdk.gtServerStatusSessionKey, gtServerStatus); + //将userid设置到session中 + request.getSession().setAttribute("userid", userid); + + resStr = gtSdk.getResponseStr(); + + PrintWriter out = response.getWriter(); + out.println(resStr); + + } +} \ No newline at end of file diff --git a/src/com/geetest/sdk/java/web/mobiledemo/VerifyLoginServlet.java b/src/com/geetest/sdk/java/web/mobiledemo/VerifyLoginServlet.java new file mode 100644 index 0000000..b4826bf --- /dev/null +++ b/src/com/geetest/sdk/java/web/mobiledemo/VerifyLoginServlet.java @@ -0,0 +1,82 @@ +package com.geetest.sdk.java.web.mobiledemo; + +import java.io.IOException; +import java.io.PrintWriter; +import java.rmi.server.SkeletonNotFoundException; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.geetest.sdk.java.GeetestLib; + +import org.json.JSONException; +import org.json.JSONObject; + + +/** + * 使用post方式,返回验证结果, request表单中必须包含challenge, validate, seccode + */ +public class VerifyLoginServlet extends HttpServlet { + + private static final long serialVersionUID = 244554953219893949L; + + protected void doPost(HttpServletRequest request, + HttpServletResponse response) throws ServletException, IOException { + + GeetestLib gtSdk = new GeetestLib(GeetestConfig.getGeetest_id(), GeetestConfig.getGeetest_key()); + + String challenge = request.getParameter(GeetestLib.fn_geetest_challenge); + String validate = request.getParameter(GeetestLib.fn_geetest_validate); + String seccode = request.getParameter(GeetestLib.fn_geetest_seccode); + + //从session中获取gt-server状态 + int gt_server_status_code = (Integer) request.getSession().getAttribute(gtSdk.gtServerStatusSessionKey); + + //从session中获取userid + String userid = (String)request.getSession().getAttribute("userid"); + + int gtResult = 0; + + if (gt_server_status_code == 1) { + //gt-server正常,向gt-server进行二次验证 + + gtResult = gtSdk.enhencedValidateRequest(challenge, validate, seccode, userid); + System.out.println(gtResult); + } else { + // gt-server非正常情况下,进行failback模式验证 + + System.out.println("failback:use your own server captcha validate"); + gtResult = gtSdk.failbackValidateRequest(challenge, validate, seccode); + System.out.println(gtResult); + } + + + if (gtResult == 1) { + // 验证成功 + PrintWriter out = response.getWriter(); + JSONObject data = new JSONObject(); + try { + data.put("status", "success"); + data.put("version", gtSdk.getVersionInfo()); + } catch (JSONException e) { + e.printStackTrace(); + } + out.println(data.toString()); + } + else { + // 验证失败 + JSONObject data = new JSONObject(); + try { + data.put("status", "fail"); + data.put("version", gtSdk.getVersionInfo()); + } catch (JSONException e) { + e.printStackTrace(); + } + PrintWriter out = response.getWriter(); + out.println(data.toString()); + } + + } +} From a7ff83f8e3d32f32ae3b81a875aea8703b07e0a2 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Sun, 18 Sep 2016 16:45:42 +0800 Subject: [PATCH 22/23] update ReadMe.rst --- ReadMe.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ReadMe.rst b/ReadMe.rst index 2e52e82..e0b7c41 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -95,6 +95,13 @@ QQ:383449573 发布日志(由新到旧) ===================================' +3.3.0 +--------------------------- +- 修改demo的展现形式,增添一种mobile形式的验证码 +- demo后台增添mobile形式验证码的后台,mobile形式的验证码需要使用特定的id与key + + + 3.2.0 --------------------------- - 增加新接口,可以在两次验证过程中传入自定义userid,如果两次传入的userid不同,验证无法通过 From a9c7d446f888f613e61899a5b328f23360342251 Mon Sep 17 00:00:00 2001 From: Aisaka <383449573@qq.com> Date: Fri, 12 May 2017 10:53:00 +0800 Subject: [PATCH 23/23] =?UTF-8?q?=E6=8A=8Agt.js=E6=94=BE=E5=85=A5=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReadMe.rst | 1 + WebContent/gt.js | 276 +++++++++++++++++++++++++++++++++++++++++++ WebContent/login.jsp | 2 +- 3 files changed, 278 insertions(+), 1 deletion(-) create mode 100644 WebContent/gt.js diff --git a/ReadMe.rst b/ReadMe.rst index e0b7c41..50418ca 100644 --- a/ReadMe.rst +++ b/ReadMe.rst @@ -67,6 +67,7 @@ 1. 将com.geetest.sdk.java这个包引入项目中 #. 根据自身使用情况修改前端代码调用验证码,前端文档 http://www.geetest.com/install/sections/idx-client-sdk.html#web #. 修改后台代码,具体可以参考demo中的后台进行修改 +* 如果是web端使用,请把WebContent中的gt.js放到可以访问的地方,并将web端中引入gt.js的地方修改成存放gt.js的地址 failback效果展示 ========================= diff --git a/WebContent/gt.js b/WebContent/gt.js new file mode 100644 index 0000000..7ec951e --- /dev/null +++ b/WebContent/gt.js @@ -0,0 +1,276 @@ +/* initGeetest 1.0.0 + * 用于加载id对应的验证码库,并支持宕机模式 + * 暴露 initGeetest 进行验证码的初始化 + * 一般不需要用户进行修改 + */ +(function (global, factory) { + "use strict"; + if (typeof module === "object" && typeof module.exports === "object") { + // CommonJS + module.exports = global.document ? + factory(global, true) : + function (w) { + if (!w.document) { + throw new Error("Geetest requires a window with a document"); + } + return factory(w); + }; + } else { + factory(global); + } +})(typeof window !== "undefined" ? window : this, function (window, noGlobal) { + "use strict"; + if (typeof window === 'undefined') { + throw new Error('Geetest requires browser environment'); + } + var document = window.document; + var Math = window.Math; + var head = document.getElementsByTagName("head")[0]; + + function _Object(obj) { + this._obj = obj; + } + + _Object.prototype = { + _each: function (process) { + var _obj = this._obj; + for (var k in _obj) { + if (_obj.hasOwnProperty(k)) { + process(k, _obj[k]); + } + } + return this; + } + }; + function Config(config) { + var self = this; + new _Object(config)._each(function (key, value) { + self[key] = value; + }); + } + + Config.prototype = { + api_server: 'api.geetest.com', + protocol: 'http://', + type_path: '/gettype.php', + fallback_config: { + slide: { + static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"], + type: 'slide', + slide: '/static/js/geetest.0.0.0.js' + }, + fullpage: { + static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"], + type: 'fullpage', + fullpage: '/static/js/fullpage.0.0.0.js' + } + }, + _get_fallback_config: function () { + var self = this; + if (isString(self.type)) { + return self.fallback_config[self.type]; + } else if (self.new_captcha) { + return self.fallback_config.fullpage; + } else { + return self.fallback_config.slide; + } + }, + _extend: function (obj) { + var self = this; + new _Object(obj)._each(function (key, value) { + self[key] = value; + }) + } + }; + var isNumber = function (value) { + return (typeof value === 'number'); + }; + var isString = function (value) { + return (typeof value === 'string'); + }; + var isBoolean = function (value) { + return (typeof value === 'boolean'); + }; + var isObject = function (value) { + return (typeof value === 'object' && value !== null); + }; + var isFunction = function (value) { + return (typeof value === 'function'); + }; + var callbacks = {}; + var status = {}; + var random = function () { + return parseInt(Math.random() * 10000) + (new Date()).valueOf(); + }; + var loadScript = function (url, cb) { + var script = document.createElement("script"); + script.charset = "UTF-8"; + script.async = true; + script.onerror = function () { + cb(true); + }; + var loaded = false; + script.onload = script.onreadystatechange = function () { + if (!loaded && + (!script.readyState || + "loaded" === script.readyState || + "complete" === script.readyState)) { + + loaded = true; + setTimeout(function () { + cb(false); + }, 0); + } + }; + script.src = url; + head.appendChild(script); + }; + var normalizeDomain = function (domain) { + return domain.replace(/^https?:\/\/|\/$/g, ''); + }; + var normalizePath = function (path) { + path = path.replace(/\/+/g, '/'); + if (path.indexOf('/') !== 0) { + path = '/' + path; + } + return path; + }; + var normalizeQuery = function (query) { + if (!query) { + return ''; + } + var q = '?'; + new _Object(query)._each(function (key, value) { + if (isString(value) || isNumber(value) || isBoolean(value)) { + q = q + encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&'; + } + }); + if (q === '?') { + q = ''; + } + return q.replace(/&$/, ''); + }; + var makeURL = function (protocol, domain, path, query) { + domain = normalizeDomain(domain); + + var url = normalizePath(path) + normalizeQuery(query); + if (domain) { + url = protocol + domain + url; + } + + return url; + }; + var load = function (protocol, domains, path, query, cb) { + var tryRequest = function (at) { + + var url = makeURL(protocol, domains[at], path, query); + loadScript(url, function (err) { + if (err) { + if (at >= domains.length - 1) { + cb(true); + } else { + tryRequest(at + 1); + } + } else { + cb(false); + } + }); + }; + tryRequest(0); + }; + var jsonp = function (domains, path, config, callback) { + if (isObject(config.getLib)) { + config._extend(config.getLib); + callback(config); + return; + } + if (config.offline) { + callback(config._get_fallback_config()); + return; + } + var cb = "geetest_" + random(); + window[cb] = function (data) { + if (data.status === 'success') { + callback(data.data); + } else if (!data.status) { + callback(data); + } else { + callback(config._get_fallback_config()); + } + window[cb] = undefined; + try { + delete window[cb]; + } catch (e) { + } + }; + load(config.protocol, domains, path, { + gt: config.gt, + callback: cb + }, function (err) { + if (err) { + callback(config._get_fallback_config()); + } + }); + }; + var throwError = function (errorType, config) { + var errors = { + networkError: '网络错误' + }; + if (typeof config.onError === 'function') { + config.onError(errors[errorType]); + } else { + throw new Error(errors[errorType]); + } + }; + var detect = function () { + return !!window.Geetest; + }; + if (detect()) { + status.slide = "loaded"; + } + var initGeetest = function (userConfig, callback) { + var config = new Config(userConfig); + if (userConfig.https) { + config.protocol = 'https://'; + } else if (!userConfig.protocol) { + config.protocol = window.location.protocol + '//'; + } + jsonp([config.api_server || config.apiserver], config.type_path, config, function (newConfig) { + var type = newConfig.type; + var init = function () { + config._extend(newConfig); + callback(new window.Geetest(config)); + }; + callbacks[type] = callbacks[type] || []; + var s = status[type] || 'init'; + if (s === 'init') { + status[type] = 'loading'; + callbacks[type].push(init); + load(config.protocol, newConfig.static_servers || newConfig.domains, newConfig[type] || newConfig.path, null, function (err) { + if (err) { + status[type] = 'fail'; + throwError('networkError', config); + } else { + status[type] = 'loaded'; + var cbs = callbacks[type]; + for (var i = 0, len = cbs.length; i < len; i = i + 1) { + var cb = cbs[i]; + if (isFunction(cb)) { + cb(); + } + } + callbacks[type] = []; + } + }); + } else if (s === "loaded") { + init(); + } else if (s === "fail") { + throwError('networkError', config); + } else if (s === "loading") { + callbacks[type].push(init); + } + }); + }; + window.initGeetest = initGeetest; + return initGeetest; +}); diff --git a/WebContent/login.jsp b/WebContent/login.jsp index cae5f52..0afcb21 100644 --- a/WebContent/login.jsp +++ b/WebContent/login.jsp @@ -81,7 +81,7 @@ - +