def test_previous_solution_incorrect(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) urls = client._get_challenge_urls( was_previous_solution_incorrect=True, use_ssl=False, ) javascript_challenge_url = urls['javascript_challenge_url'] javascript_challenge_url_components = \ urlparse(javascript_challenge_url) javascript_challenge_url_query = parse_qs( javascript_challenge_url_components.query, ) self.assertIn('error', javascript_challenge_url_query) self.assertEqual( 'incorrect-captcha-sol', javascript_challenge_url_query['error'][0] ) noscript_challenge_url = urls['noscript_challenge_url'] noscript_challenge_url_components = urlparse(noscript_challenge_url) self.assertEqual( javascript_challenge_url_components.query, noscript_challenge_url_components.query )
def test_ssl_not_required(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) urls = client._get_challenge_urls(False, use_ssl=True) javascript_challenge_url = urls['javascript_challenge_url'] self.assertTrue(javascript_challenge_url.startswith('https://')) noscript_challenge_url = urls['noscript_challenge_url'] self.assertTrue(noscript_challenge_url.startswith('https://'))
def test_invalid_private_key(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) correct_response = "false\ninvalid-site-private-key" self.urlopen_mock.return_value = MockResponse(correct_response) with self.assertRaises(RecaptchaInvalidPrivateKeyError): result = client.is_solution_correct( _FAKE_SOLUTION_TEXT, _FAKE_CHALLENGE_ID, _RANDOM_REMOTE_IP )
def test_invalid_challenge(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) correct_response = "false\ninvalid-request-cookie" self.urlopen_mock.return_value = MockResponse(correct_response) with self.assertRaises(RecaptchaInvalidChallengeError): result = client.is_solution_correct( _FAKE_SOLUTION_TEXT, _FAKE_CHALLENGE_ID, _RANDOM_REMOTE_IP )
def test_ssl_required(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) urls = client._get_challenge_urls(False, use_ssl=False) javascript_challenge_url = urls['javascript_challenge_url'] self.assertTrue( javascript_challenge_url.startswith(_RECAPTCHA_API_URL) ) noscript_challenge_url = urls['noscript_challenge_url'] self.assertTrue(noscript_challenge_url.startswith(_RECAPTCHA_API_URL))
def test_solution_correct(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) correct_response = "true" self.urlopen_mock.return_value = MockResponse(correct_response) result = client.is_solution_correct( _FAKE_SOLUTION_TEXT, _FAKE_CHALLENGE_ID, _RANDOM_REMOTE_IP ) self.assertTrue(result)
def submit_term(): s = request.session if "termsendid" not in s: print "Invalid form term submit!" print str(s) return "<b>Invalid form</b>" ref = request.headers.get('Referer') term = request.forms.get('term').decode() info = request.forms.get('info').decode() email = request.forms.get('email').decode() captcha_term = request.forms.get('recaptcha_response_field').decode() captcha_id = request.forms.get('recaptcha_challenge_field').decode() client_ip = str(request.headers.get('X-Forwarded-For')) recaptcha_client = RecaptchaClient(RECAPTCHA_PRIVKEY, RECAPTCHA_PUBKEY) captcha_response = None try: is_solution_correct = recaptcha_client.is_solution_correct( captcha_term, captcha_id, client_ip) except Exception as exc: print "reCaptcha exception: ", str(exc) captcha_response = False else: if is_solution_correct: print "reCaptcha channalnge was OK!", term, info, email, client_ip Mailer( 'uj mimoxindex term', '\nTerm name: ' + term + '\nInfo: ' + info + "\nBekuldo: " + email + "\nclient IP: " + client_ip, "*****@*****.**", TERM_EMAIL_RECPS) captcha_response = True else: print "reCaptcha channalnge was false!", term, info, email, client_ip captcha_response = False if ref: if ref.startswith("http://mimoxindex.com") or ref.startswith( "http://www.mimoxindex.com/"): if captcha_response: s["captcha_challange"] = "OK" s.save() redirect("http://www.mimoxindex.com/?searchterm=" + term + "&termsendid=" + s["termsendid"]) else: s["captcha_challange"] = "NOK" s.save() redirect("http://www.mimoxindex.com/?searchterm=" + term + "&termsendid=" + s["termsendid"])
def test_url_paths(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) urls = client._get_challenge_urls( was_previous_solution_incorrect=False, use_ssl=False, ) javascript_challenge_url = urls['javascript_challenge_url'] javascript_challenge_url_components = \ urlparse(javascript_challenge_url) noscript_challenge_url = urls['noscript_challenge_url'] noscript_challenge_url_components = urlparse(noscript_challenge_url) self.assertNotEqual( javascript_challenge_url_components.path, noscript_challenge_url_components.path, )
def test_public_key_inclusion(self): client = RecaptchaClient(_FAKE_PRIVATE_KEY, _FAKE_PUBLIC_KEY) urls = client._get_challenge_urls(False, False) javascript_challenge_url = urls['javascript_challenge_url'] javascript_challenge_url_components = \ urlparse(javascript_challenge_url) javascript_challenge_url_query = parse_qs( javascript_challenge_url_components.query, ) self.assertIn('k', javascript_challenge_url_query) self.assertEqual( client.public_key, javascript_challenge_url_query['k'][0] ) noscript_challenge_url = urls['noscript_challenge_url'] noscript_challenge_url_components = urlparse(noscript_challenge_url) self.assertEqual( javascript_challenge_url_components.query, noscript_challenge_url_components.query, )
from django.core.urlresolvers import reverse, reverse_lazy from django.contrib import messages as messages from django.contrib.auth import authenticate, login, logout from django.contrib.auth.forms import AuthenticationForm from recaptcha import RecaptchaClient from django_recaptcha_field import create_form_subclass_with_recaptcha from portal.models import Teacher, Class, Student from portal.forms.teach_new import TeacherSignupForm, TeacherLoginForm from portal.forms.play_new import StudentLoginForm, IndependentStudentLoginForm, StudentSignupForm from portal.helpers.emails_new import send_verification_email, is_verified from portal.utils import using_two_factor from portal import app_settings from ratelimit.decorators import ratelimit recaptcha_client = RecaptchaClient(app_settings.RECAPTCHA_PRIVATE_KEY, app_settings.RECAPTCHA_PUBLIC_KEY) def teach_email_labeller(request): if request.method == 'POST' and 'login' in request.POST: return request.POST['login-teacher_email'] return '' def play_name_labeller(request): if request.method == 'POST': if 'school_login' in request.POST: return request.POST['login-name'] + ':' + request.POST[ 'login-access_code']
# INFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE. # ################################################################################ from os import environ from recaptcha import RecaptchaClient __all__ = [ 'FAKE_RECAPTCHA_CLIENT', 'RANDOM_CHALLENGE_ID', 'RANDOM_REMOTE_IP', 'RANDOM_SOLUTION_TEXT', 'setup', 'teardown', ] FAKE_RECAPTCHA_CLIENT = RecaptchaClient('private key', 'public_key') RANDOM_SOLUTION_TEXT = 'hello world' RANDOM_CHALLENGE_ID = 'abcde' RANDOM_REMOTE_IP = '192.0.2.0' def setup(): environ['DJANGO_SETTINGS_MODULE'] = 'tests.django_settings' def teardown(): del environ['DJANGO_SETTINGS_MODULE']
from model.user import User from model.skill import Skill from gaesessions import get_current_session from model.third_party_login_data import ThirdPartyLoginData from recaptcha import RecaptchaClient from google.appengine.api import memcache from google.appengine.ext import blobstore HIREPIRATES_RECAPTCHA_PUBLIC_KEY = '6LcyMggTAAAAAHLKAfeOIooqXQ-1Lo4mJ_366q4E' HIREPIRATES_RECAPTCHA_PRIVATE_KEY = '6LcyMggTAAAAAIvXBKsOHu6t8qmgMmeKkZJel1G1' MINYATTRA_RECAPTCHA_PUBLIC_KEY = '6LeA6PwSAAAAAOeT-mnBNsppSoKgygqv1xqChz2s' MINYATTRA_RECAPTCHA_PRIVATE_KEY = '6LeA6PwSAAAAAB9Wv1qmmnxnsZySbb8nQwdqUvbv' recaptcha_client = RecaptchaClient(HIREPIRATES_RECAPTCHA_PRIVATE_KEY, HIREPIRATES_RECAPTCHA_PUBLIC_KEY, recaptcha_options={'theme': 'clean'}) startups = 'startups' projects = 'projects' registration_breadcrumbs = { startups: [('Get started', 'Tell us about your startup'), ('Build your team', 'Invite members'), ('Help us learn more about you', 'Access data')], projects: [('Get started', 'Tell us about your project'), ('Add skills', 'Choose skills required')] } separator = '::'
page += "<b><font color=\"red\">Sikertelen reCaptcha ellenőrzés (challange error), kérjük próbáld újra!</font></b><br /><br />" need_new_recaptcha = True else: page += "<b>Sikertelen reCaptcha challange (ID), kérjük próbáld újra!</b><br />" need_new_recaptcha = True else: page += "<b>Sikeretelen adatküldés (reCaptcha ellenőrzés) kérjük próbáld újra.</b><br />" need_new_recaptcha = True else: page += "<b>Sikeretelen oldalküldés (session ID), kérjük próbáld újra.</b><br />" need_form = False else: page += "<b>Sikeretelen oldalküldés (POST, URL ID), kérjük próbáld újra.</b><br />" need_form = False if need_form: recaptcha_client = RecaptchaClient(RECAPTCHA_PRIVKEY, RECAPTCHA_PUBKEY) if need_new_recaptcha: rec = recaptcha_client.get_challenge_markup() else: rec = recaptcha_client.get_challenge_markup( was_previous_solution_incorrect=True) s["termsendid"] = str(uuid.uuid4()) s.save() page += '<tr><td colspan="5">Sikertelen keresés: <b>\'' + searchterm + '\'</b><br /><br />Sajnos nincs találat. Ez valószínűleg azt jelenti, hogy vagy nem ismerjük, és ezért nem követjük még. Kisebb százalékban előfordulhat, hogy ismerjük, hallottunk róla, de valamiért úgy döntöttönk, hogy nem vesszük be a listába. Pl. azokat a kifejezéseket, amik inkább jelentenek cégneveket, termékneveket és nem technológiákat, kihúztuk, illetve olyanokat is, mint a HTML, mivel túl sok találat lenne rá, és nem annyira releváns. (A html5 viszont szerepel.) Amennyiben úgy gondolod, hogy jó lenne az általad keresett kifejezést is nyomonkövetnünk, kérjük tegyél javaslatot! Köszönjük!<br /><hr>' page += ''' <form id="submit_term" action="./submit_term/" method="post"> <table width="100%" border="0" cellpadding="2px" cellspacing="0"> <input type="hidden" id="termsendid" name="termsendid" value="''' + s[ "termsendid"] + '''"> <tr> <td>Kifejezés:</td>