【问题标题】:How to implement Google Recaptcha 2.0 in ASP Classic?如何在 ASP Classic 中实现 Google Recaptcha 2.0?
【发布时间】:2019-07-03 04:06:02
【问题描述】:

我需要帮助来实施答案 Google Recaptcha 2.0。

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

按照我正在尝试的示例:

recaptcha_secret = "example45454sasa"

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

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

objXML.Send()

if instr(objXML.responseText,"true") then
    response.write "yes"
else
    response.write "no"
end if

我使用aspJSON1.17.asp库的第二个例子:

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") & ""

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

我如何实施一种方法来检查是否标记了 Recaptcha?

*reCaptcha Documentatiom

感谢您的关注!


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

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

我认为它应该显示为“真”,因为我回答正确。

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

【问题讨论】:

  • 请检查我的更新答案与现场样本。

标签: asp-classic


【解决方案1】:

我不明白你是如何发送请求的。

无论如何,下面是使用我的站点密钥用于测试网站的工作示例。当然,你应该提供你自己的“secret key”和“data-sitekey”

现场样本:http://1click.lv/googlecaptcha.asp

文件名:GoogleCaptcha.asp

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

    <body>
        <h4>http://stackoverflow.com/questions/30711884/how-to-implement-google-recaptcha-2-0-in-asp-classic/30735079</h4>
<%
    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        Dim recaptcha_secret, sendstring, objXML
        ' Secret key
        recaptcha_secret = "6LfUUwgTAAAAAMQy5tz9u1BMSnCQV1CVh5tuBcEF"

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

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

        objXML.Send

        Response.write "<h3>Response: " & objXML.responseText & "</h3>"

        Set objXML = Nothing
    End If
%>

        <form method="post" action="GoogleCaptcha.asp">
            <!-- Site key -->
            <div class="g-recaptcha" data-sitekey="6LfUUwgTAAAAAAQZPb6j22A2a2tZoAUygdmqpgdv"></div>
            <br />
            <input type="submit" value="Try">
        </form>
    </body>
</html>

【讨论】:

  • 嗨,扎姆!您的代码也不起作用。答案和我的一样,可以再次帮助我吗?可以测试:bit.ly/1R1cbEs
  • 我认为问题出在这里:&response=" & Request.form("g-recaptcha-response")
  • 很奇怪,即使我的代码仍然有错误。可能是您提供的密钥不正确?
  • 事实上不仅显示错误并没有说明问题是否被回答而没有呈现相同的结果: Response: { "success": false, "error-codes": [ "invalid-input -秘密”] }
  • google.com/recaptcha/api.js?hl=tr(语言 tr/土耳其语)developers.google.com/recaptcha/docs/language
【解决方案2】:

在这里,这是一个自 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 库的谷歌链接会用“invalid-site-private-key”把我们扔回去,正如在browser 中看到的那样,我不知道为什么,但它总是抛出我的请求有这个错误。

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

然后在最后一行,我只是将结果打印出来,但可以随心所欲。

【讨论】:

    【解决方案3】:

    找了好久终于找到了 首先我使用这个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>
    

    【讨论】:

    • 我通过链接github.com/zhennanzhuce/js/blob/master/js/ueditor/1.4.3/asp/…...查看了您的代码 sn-p... 提交消息是用“哈哈”以及所有其他代码 sn-ps 提供的。你共享恶意代码伙伴??
    • @Gcamara14 如果您第一次阅读我的评论,我说我在多次搜索后找到了它,我没有说它是我的代码,我写这个只是为了帮助而不是说它的代码 :)
    猜你喜欢
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    相关资源
    最近更新 更多