def submit(recaptcha_response_field, secret_key, remoteip, verify_server=VERIFY_SERVER): """ Submits a reCAPTCHA request for verification. Returns RecaptchaResponse for the request recaptcha_response_field -- The value from the form secret_key -- your reCAPTCHA secret key remoteip -- the user's ip address """ if not (recaptcha_response_field and len(recaptcha_response_field)): return RecaptchaResponse(is_valid=False, error_code="incorrect-captcha-sol") def encode_if_necessary(s): if isinstance(s, six.text_type): return s.encode("utf-8") return s if six.PY2: secret_key = encode_if_necessary(secret_key) remoteip = encode_if_necessary(remoteip) recaptcha_response_field = encode_if_necessary(recaptcha_response_field) params = parse.urlencode( { "secret": secret_key, "remoteip": remoteip, "response": recaptcha_response_field, } ) request = Request( url="https://{0}/recaptcha/api/siteverify".format(verify_server), data=params, headers={ "Content-type": "application/x-www-form-urlencoded", "User-agent": "noReCAPTCHA Python", }, ) if six.PY3: request.data = request.data.encode("utf-8") httpresp = urlopen(request) return_values = json.loads(httpresp.read()) httpresp.close() return_code = return_values["success"] error_codes = return_values.get("error-codes", []) if return_code: return RecaptchaResponse(is_valid=True) else: return RecaptchaResponse(is_valid=False, error_code=error_codes)
def _action(self, params, body=None, content_type=None): # about token, see https://github.com/bittorrent/webui/wiki/TokenSystem url = self.base_url + '?token=' + self.token + '&' + urlencode(params) request = Request(url) if body: request.data = body request.add_header('Content-length', len(body)) if content_type: request.add_header('Content-type', content_type) response = self.opener.open(request) return response.code, json.loads(response.read())
def test_urllib_proxy(httpbin, method, proxies, headers, data): run_proxy_server() url = httpbin.url + '/' + method request = Request(url=url, headers=headers) if data: request.data = data.encode('utf-8') http_proxy = proxies.get('http') os.environ['HTTP_PROXY'] = http_proxy result = get_and_assert_urllib_response(request) req = UrllibRequest(request) del os.environ['HTTP_PROXY'] assert_curl_response(req, object(), result)
def submit(recaptcha_response_field, secret_key, remoteip, verify_server=VERIFY_SERVER): """ Submits a reCAPTCHA request for verification. Returns RecaptchaResponse for the request recaptcha_response_field -- The value from the form secret_key -- your reCAPTCHA secret key remoteip -- the user's ip address """ if not (recaptcha_response_field and len(recaptcha_response_field)): return RecaptchaResponse( is_valid=False, error_code='incorrect-captcha-sol' ) def encode_if_necessary(s): if isinstance(s, six.text_type): return s.encode('utf-8') return s if six.PY2: secret_key = encode_if_necessary(secret_key) remoteip = encode_if_necessary(remoteip) recaptcha_response_field = encode_if_necessary( recaptcha_response_field) params = parse.urlencode({ 'secret': secret_key, 'remoteip': remoteip, 'response': recaptcha_response_field, }) request = Request( url="https://{0}/recaptcha/api/siteverify".format(verify_server), data=params, headers={ "Content-type": "application/x-www-form-urlencoded", "User-agent": "noReCAPTCHA Python" } ) if six.PY3: request.data = request.data.encode('utf-8') httpresp = urlopen(request) return_values = json.loads(httpresp.read()) httpresp.close() return_code = return_values['success'] error_codes = return_values.get('error-codes', []) if return_code: return RecaptchaResponse(is_valid=True) else: return RecaptchaResponse( is_valid=False, error_code=error_codes )