diff --git a/perimeterx/middleware.py b/perimeterx/middleware.py index 2e016ed..87f0995 100644 --- a/perimeterx/middleware.py +++ b/perimeterx/middleware.py @@ -69,7 +69,7 @@ def _verify(self, environ, start_response): return self.app(environ, start_response) def handle_verification(self, ctx, config, environ, start_response): - score = ctx.get('score', -1) + score = ctx.get('risk_score', -1) result = None headers = None status = None diff --git a/perimeterx/px_context.py b/perimeterx/px_context.py index e21da96..ecd29b8 100644 --- a/perimeterx/px_context.py +++ b/perimeterx/px_context.py @@ -28,7 +28,7 @@ def build_context(environ, config): if len(protocol_split) > 1: http_version = protocol_split[1] if key == 'CONTENT_TYPE' or key == 'CONTENT_LENGTH': - headers['Content-type'.replace('_', '-')] = environ.get(key) + headers[key.replace('_', '-').lower()] = environ.get(key) cookies = Cookie.SimpleCookie(environ.get('HTTP_COOKIE', '')) diff --git a/perimeterx/px_cookie_validator.py b/perimeterx/px_cookie_validator.py index 3a6a00a..9f3f68c 100644 --- a/perimeterx/px_cookie_validator.py +++ b/perimeterx/px_cookie_validator.py @@ -38,7 +38,7 @@ def verify(ctx, config): if px_cookie.is_high_score(): ctx['block_reason'] = 'cookie_high_score' logger.debug('Cookie with high score: ' + str(ctx['risk_score'])) - return True + return False if px_cookie.is_cookie_expired(): ctx['s2s_call_reason'] = 'cookie_expired' diff --git a/perimeterx/px_httpc.py b/perimeterx/px_httpc.py index c31fbb6..8e189b6 100644 --- a/perimeterx/px_httpc.py +++ b/perimeterx/px_httpc.py @@ -7,9 +7,9 @@ def send(full_url, body, headers, config, method): try: start = time.time() if method == 'GET': - response = requests.get(url=full_url, headers=headers, timeout=config.api_timeout) + response = requests.get(url='https://' + full_url, headers=headers, timeout=500, stream=True) else: - response = requests.post(url=full_url, headers=headers, data=body, timeout=config.api_timeout) + response = requests.post(url='https://' + full_url, headers=headers, data=body, timeout=config.api_timeout) if response.status_code >= 400: logger.debug('PerimeterX server call failed') diff --git a/perimeterx/px_proxy_handler.py b/perimeterx/px_proxy_handler.py index f0169fb..884e54e 100644 --- a/perimeterx/px_proxy_handler.py +++ b/perimeterx/px_proxy_handler.py @@ -50,11 +50,14 @@ def send_reverse_client_request(self, config, context, start_response): px_constants.ENFORCER_TRUE_IP_HEADER: context.get('ip')} filtered_headers = px_utils.handle_proxy_headers(context.get('headers'), context.get('ip')) filtered_headers = px_utils.merge_two_dicts(filtered_headers, headers) + del filtered_headers['content-length'] + del filtered_headers['content-type'] response = px_httpc.send(full_url=px_constants.CLIENT_HOST + client_request_uri, body='', headers=filtered_headers, config=config, method='GET') self.handle_proxy_response(response, start_response) - return response.content + return response.raw.read() + def send_reverse_xhr_request(self, config, context, start_response, body): uri = context.get('uri') @@ -119,11 +122,12 @@ def send_reverse_captcha_request(self, config, context, start_response): px_constants.ENFORCER_TRUE_IP_HEADER: context.get('ip')} filtered_headers = px_utils.handle_proxy_headers(context.get('headers'), context.get('ip')) filtered_headers = px_utils.merge_two_dicts(filtered_headers, headers) + del filtered_headers['content-length'] + del filtered_headers['content-type'] self._logger.debug('Forwarding request from {} to client at {}{}'.format(context.get('uri').lower(), host, uri)) response = px_httpc.send(full_url=host + uri, body='', headers=filtered_headers, config=config, method='GET') self.handle_proxy_response(response, start_response) - return response.content - + return response.raw.read()