如何使用Python验证ReCaptcha响应服务器端?

时间:2017-09-24 17:58:29

标签: python reactjs recaptcha

我想在我的注册表单中检查使用realloc()生成的客户端的响应。 不幸的是,我不知道如何用Python验证服务器端。

我尝试了react-google-recaptchahttps://pypi.python.org/pypi/recaptcha-client,但似乎它希望生成的iframe直接使用相同的库进行响应。

2 个答案:

答案 0 :(得分:4)

实际上非常简单,根据Google的文档,不需要任何库来执行此验证:https://developers.google.com/recaptcha/docs/verify

我只需要在地址中对参数进行编码并向Google服务器发送请求,这是我的代码,请注意我使用的是Flask,但对于任何Python后端,原则都是一样的:

import urllib
import json


        URIReCaptcha = 'https://www.google.com/recaptcha/api/siteverify'
        recaptchaResponse = body.get('recaptchaResponse', None)
        private_recaptcha = '6LdXXXXXXXXXXXXXXXXXXXXXXXX'
        remote_ip = request.remote_addr
        params = urllib.urlencode({
            'secret': private_recaptcha,
            'response': recaptchaResponse,
            'remote_ip': remote_ip,
        })

        # print params
        data = urllib.urlopen(URIReCaptcha, params).read()
        result = json.loads(data)
        success = result.get('success', None)

        if success == True:
            print 'reCaptcha passed'
        else:
            print 'recaptcha failed'

答案 1 :(得分:1)

在服务器端使用带有flask的python

emailAddresses/value

在客户端,使用React

安装正式的Google reCaptcha模块:

emailAddresses

然后,在包含以下内容的组件中:

from flask import request

     def verify_recaptcha(self, token):
        recaptcha_url = 'https://www.google.com/recaptcha/api/siteverify'
        recaptcha_secret_key = 'SECRET-KEY'
        payload = {
           'secret': secret_key,
           'response': token,
           'remoteip': request.remote_addr,
        }
        response = requests.post(, data = payload)
        result = response.json()
        return result.get('success', None)