如何在ASP Classic中实现Google Recaptcha 2.0?

时间:2015-06-08 14:28:50

标签: asp-classic

我需要帮助才能实现Google Recaptcha 2.0的答案。

我在发送表单后尝试了几种方法来恢复响应,但不是consigui得到答案为真。

按照我正在尝试的示例:

recaptcha_secret = "example45454sasa"

Set oJSON = New aspJSON

jsonstring = "https://www.google.com/recaptcha/api/siteverify?secret=" & recaptcha_secret & "&response=" & request.form("g-recaptcha-response") & ""

'Load JSON string
oJSON.loadJSON("" & jsonstring & "")

'Get single value
Response.Write oJSON.data("success") & ""

第二个exmeplae我使用aspJSON1.17.asp库:

"""

上面两个例子返回False或No。

如何实施检查Recaptcha是否已标记的方法?

*reCaptcha Documentatiom

感谢您的关注!

4 个答案:

答案 0 :(得分:12)

我不知道你如何发送请求。

无论如何,下面是我的测试网站的网站密钥的样本。当然,您应该提供自己的“密钥”和“data-sitekey”

实时样本:http://1click.lv/googlecaptcha.asp

文件名:GoogleCaptcha.asp

<field name="name" attrs="{'invisible': [('condition', '=', False)]}"/>
<field name="name2" attrs="{'readonly': [('condition', '=', False)]}"/>
<field name="name3" attrs="{'required': [('condition', '=', False)]}"/> 

答案 1 :(得分:0)

对于Zam,在我的例子中,屏幕上显示的响应是:

Response: { "success": false, "error-codes": [ "invalid-input-secret" ] }

我相信它应该出现&#34; True&#34;因为我正确地回答了这个问题。

您可以测试:bit.ly/1R1cbEs

答案 2 :(得分:0)

在这里,它是一个但是如果是js + vb以来的屠杀,但是它正在做这个工作:

<script language=JavaScript RUNAT=SERVER src="json2.min.js"></script>
<script language=JavaScript RUNAT=SERVER >
    function gResult( jobj ){
        if ( JSON.parse( jobj ).success == true ){ return true }else{ return false }    
    }
</script>
<%

dim secret, objXmlHttp, VarString

secret = "yoursekretcodehere"

VarString = "secret=" & secret &_
            "&response=" & Request.Form("g-recaptcha-response") &_
            "&remoteip=" & Request.ServerVariables("REMOTE_ADDR")

Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP")

if isNull(objXmlHttp) then
    Set objXmlHttp = Server.CreateObject("Microsoft.XMLHTTP")
end if

objXmlHttp.open "POST", "https://www.google.com/recaptcha/api/siteverify?" & VarString , False
objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXmlHttp.send

Set objXmlHttp = Nothing

 response.write gResult( objXmlHttp.responseText ) 

好的,现在。 一些解释:首先,使用msxmlhttp lib的给定google链接会将我们带回&#34; invalid-site-private-key&#34;,正如人们在browser中看到的那样,我不会确定原因,但它总是抛出我的请求与此错误。

所以我把它改成了/siteverify,我们得到了一些json错误。 但是如果我们发布正确的值,用VarString构造(请注意&#34; g-recaptcha-response&#34;是正确的处理程序),那么它将传回一个json,结果在其中,但是当然VB脚本不是用这样的功能构建的,所以我们需要做一些JS witchery。 首先,获取json2.js,只需google它,然后将其包含在您的src(href或本地副本)和一个简单的js函数中,以便从G返回正确的响应。

然后在最后一行我刚刚打印出结果,但是人们可以随心所欲地做任何事情。

答案 3 :(得分:0)

经过这么多次搜索后我终于找到了它 首先我使用这个asp类https://github.com/zhennanzhuce/js/blob/master/js/ueditor/1.4.3/asp/ASPJson.class.asp 然后验证我使用此

的响应
    result = (objXML.responseText)

    Set oJSON = New aspJSON
    oJSON.loadJSON(result)

    Set objXML = Nothing

    success = oJSON.data("success")
    if success = "True" then

        action = "go to next page"

    else

        action = ""


    end if

现在使用的代码是:

<%@LANGUAGE=VBSCRIPT%>
<%
Option Explicit
%>
<html>
 <head>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>

<body>
<!-- #include file="aspJSON.asp"-->

<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    Dim recaptcha_secret, sendstring, objXML
    ' Secret key
    recaptcha_secret = "XXXCCCXXXX"

    sendstring = "https://www.google.com/recaptcha/api/siteverify?onload=onloadCallback&render=explicit&secret=" & recaptcha_secret & "&response=" & Request.form("g-recaptcha-response")

    Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
    objXML.Open "GET", sendstring, False

    objXML.Send
    dim result, oJSON, success, action, errorCapatcha, errorMsg 

    result = (objXML.responseText)

    Set oJSON = New aspJSON
    oJSON.loadJSON(result)

    Set objXML = Nothing

    success = oJSON.data("success")
    if success = "True" then

        action = "go to next page"

    else

        action = "do nothing"


    end if

 END If

%>

    <form method="post" action="">
        <!-- Site key -->
        <div class="g-recaptcha" data-sitekey="XXXXXXXXX"></div>
        <br />
        <input type="submit" value="Try">
    </form>
</body>