1 # -*- coding: utf-8 -*-
5 API_SSL_SERVER="https://www.google.com/recaptcha/api"
6 API_SERVER="http://www.google.com/recaptcha/api"
7 VERIFY_SERVER="www.google.com"
9 class RecaptchaResponse(object):
10 def __init__(self, is_valid, error_code=None):
11 self.is_valid = is_valid
12 self.error_code = error_code
14 def displayhtml (public_key):
17 <div id="recaptcha_field"></div>
18 <script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
20 <script type="text/javascript">
22 Recaptcha.create("%(PublicKey)s", 'recaptcha_field', {
28 'PublicKey' : public_key,
32 def submit (recaptcha_challenge_field,
33 recaptcha_response_field,
37 if not (recaptcha_response_field and recaptcha_challenge_field and
38 len (recaptcha_response_field) and len (recaptcha_challenge_field)):
39 return RecaptchaResponse (is_valid = False, error_code = 'incorrect-captcha-sol')
42 def encode_if_necessary(s):
43 if isinstance(s, unicode):
44 return s.encode('utf-8')
47 params = urllib.urlencode ({
48 'privatekey': encode_if_necessary(private_key),
49 'remoteip' : encode_if_necessary(remoteip),
50 'challenge': encode_if_necessary(recaptcha_challenge_field),
51 'response' : encode_if_necessary(recaptcha_response_field),
54 request = urllib2.Request (
55 url = "http://%s/recaptcha/api/verify" % VERIFY_SERVER,
58 "Content-type": "application/x-www-form-urlencoded",
59 "User-agent": "reCAPTCHA Python"
63 httpresp = urllib2.urlopen(request)
65 return_values = httpresp.read().splitlines()
68 return_code = return_values[0]
70 if return_code == "true":
71 return RecaptchaResponse(is_valid = True)
73 return RecaptchaResponse(is_valid = False, error_code = return_values[1])