gpt4 book ai didi

python - 如何启用 reCAPTCHA

转载 作者:行者123 更新时间:2023-11-28 20:10:55 26 4
gpt4 key购买 nike

我尝试使用标签启用 reCAPTCHA

{{capture}}

预期的输出是 reCAPTCHA 框。相反,我看到这段代码直接显示在页面上,就像代码一样,看起来像一个错误:

<script type="text/javascript" src="http://api.recaptcha.net/ challenge?k=6LckUsMSAAAAAGcZR3JZw6Dusn4wKBBfZxHXh8w5"></script> <noscript> <iframe src="http://api.recaptcha.net/noscript?k=6LckUsMSAAAAAGcZR3JZw6Dusn4wKBBfZxHXh8w5" height="300" width="500" frameborder="0"></iframe><br /> <textarea name="recaptcha_challenge_field" rows="3" cols="40"></ textarea> <input type='hidden' name='recaptcha_response_field' value='manual_challenge' /> </noscript>

知道我该如何继续吗?该错误的链接是 here我使用的代码是直接使用 reCAPTCHA api 和一个名为 captcha.py 的文件:

import urllib2, urllib

API_SSL_SERVER="https://api-secure.recaptcha.net"
API_SERVER="http://api.recaptcha.net"
VERIFY_SERVER="api-verify.recaptcha.net"

class RecaptchaResponse(object):
def __init__(self, is_valid, error_code=None):
self.is_valid = is_valid
self.error_code = error_code

def displayhtml (public_key,
use_ssl = False,
error = None):
"""Gets the HTML to display for reCAPTCHA

public_key -- The public api key
use_ssl -- Should the request be sent over ssl?
error -- An error message to display (from
RecaptchaResponse.error_code)"""

error_param = ''
if error:
error_param = '&error=%s' % error

if use_ssl:
server = API_SSL_SERVER
else:
server = API_SERVER

return """<script type="text/javascript" src="%(ApiServer)s/
challenge?k=%(PublicKey)s%(ErrorParam)s"></script>

<noscript>
<iframe src="%(ApiServer)s/noscript?k=%(PublicKey)s%(ErrorParam)s"
height="300" width="500" frameborder="0"></iframe><br />
<textarea name="recaptcha_challenge_field" rows="3" cols="40"></
textarea>
<input type='hidden' name='recaptcha_response_field'
value='manual_challenge' />
</noscript>
""" % {
'ApiServer' : server,
'PublicKey' : public_key,
'ErrorParam' : error_param,
}


def submit (recaptcha_challenge_field,
recaptcha_response_field,
private_key,
remoteip):
"""
Submits a reCAPTCHA request for verification. Returns
RecaptchaResponse
for the request

recaptcha_challenge_field -- The value of
recaptcha_challenge_field from the form
recaptcha_response_field -- The value of recaptcha_response_field
from the form
private_key -- your reCAPTCHA private key
remoteip -- the user's ip address
"""

if not (recaptcha_response_field and recaptcha_challenge_field and
len (recaptcha_response_field) and len
(recaptcha_challenge_field)):
return RecaptchaResponse (is_valid = False, error_code =
'incorrect-captcha-sol')


def encode_if_necessary(s):
if isinstance(s, unicode):
return s.encode('utf-8')
return s

params = urllib.urlencode ({
'privatekey': encode_if_necessary(private_key),
'remoteip' : encode_if_necessary(remoteip),
'challenge':
encode_if_necessary(recaptcha_challenge_field),
'response' :
encode_if_necessary(recaptcha_response_field),
})

request = urllib2.Request (
url = "http://%s/verify" % VERIFY_SERVER,
data = params,
headers = {
"Content-type": "application/x-www-form-urlencoded",
"User-agent": "reCAPTCHA Python"
}
)

httpresp = urllib2.urlopen (request)

return_values = httpresp.read ().splitlines ();
httpresp.close();

return_code = return_values [0]

if (return_code == "true"):
return RecaptchaResponse (is_valid=True)
else:
return RecaptchaResponse (is_valid=False, error_code =
return_values [1])

到目前为止,我在 HTTP GET 和 POST 处理程序中使用它:

template_values.update(dict(capture=captcha.displayhtml(public_key = CAPTCHA_PUB_KEY, use_ssl = False, error = None)))

是 GET 处理程序而 POST 有

def post(self, view): 
challenge = self.request.get('recaptcha_challenge_field')
response = self.request.get('recaptcha_response_field')
remoteip = os.environ['REMOTE_ADDR']
cResponse = captcha.submit(
challenge,
response,
CAPTCHA_PRV_KEY,
remoteip)

if cResponse.is_valid==True:
isHuman=True
else:
isHuman=False

.我应该如何进行?

更新:为了继续,我还添加了只允许通过变量 isHuman=True 的逻辑,我想重定向到表单页面而不是打印错误消息:

def post(self, view): 
challenge = self.request.get('recaptcha_challenge_field')
response = self.request.get('recaptcha_response_field')
remoteip = os.environ['REMOTE_ADDR']
cResponse = captcha.submit(
challenge,
response,
CAPTCHA_PRV_KEY,
remoteip)

if cResponse.is_valid==True:
isHuman=True
else:
isHuman=False
self.response.out.write('captcha failed') #TO DO: redirect to form page
return

最佳答案

你是 Django 自动转义的受害者。

尝试{{capture|safe}}

关于python - 如何启用 reCAPTCHA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5662549/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com