From bab98d75d76a17961c20c9abda5dc430d5cbb0c4 Mon Sep 17 00:00:00 2001 From: Ori Date: Thu, 16 Nov 2023 13:11:15 -0800 Subject: [PATCH] adding raw_url and updating px_metadata --- perimeterx/px_activities_client.py | 2 ++ perimeterx/px_api.py | 3 +++ perimeterx/px_context.py | 11 +++++++++++ px_metadata.json | 3 ++- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/perimeterx/px_activities_client.py b/perimeterx/px_activities_client.py index 7a44d75..8bb383b 100644 --- a/perimeterx/px_activities_client.py +++ b/perimeterx/px_activities_client.py @@ -53,6 +53,8 @@ def send_to_perimeterx(activity_type, ctx, config, detail): 'client_uuid': ctx.uuid, 'request_id': ctx.request_id } + if ctx.raw_url: + _details['raw_url'] = ctx.raw_url if len(detail.keys()) > 0: _details = dict(list(_details.items()) + list(detail.items())) diff --git a/perimeterx/px_api.py b/perimeterx/px_api.py index 0886299..772135a 100644 --- a/perimeterx/px_api.py +++ b/perimeterx/px_api.py @@ -229,6 +229,9 @@ def prepare_risk_body(ctx, config): logger.debug('attaching px_cookie to request') body['additional']['px_cookie'] = ctx.decoded_cookie + if ctx.raw_url: + body['additional']['raw_url'] = ctx.raw_url + return body diff --git a/perimeterx/px_context.py b/perimeterx/px_context.py index d17bc1e..f8399d2 100644 --- a/perimeterx/px_context.py +++ b/perimeterx/px_context.py @@ -66,6 +66,8 @@ def __init__(self, request, config): else: uri = request.path full_url = request.url + + raw_url = request.url if request.url != full_url else None hostname = request.host is_filtered = is_filtered_request(config, request) sensitive_route = sum(1 for _ in filter(lambda sensitive_route_item: re.match(sensitive_route_item, uri), config.sensitive_routes_regex)) > 0 or sum(1 for _ in filter(lambda sensitive_route_item: uri == sensitive_route_item, config.sensitive_routes)) > 0 @@ -79,6 +81,7 @@ def __init__(self, request, config): self._user_agent = user_agent self._full_url = full_url self._uri = uri + self._raw_url = raw_url self._hostname = hostname self._px_cookies = px_cookies self._cookie_names = request_cookie_names @@ -215,6 +218,14 @@ def uri(self): def uri(self, uri): self._uri = uri + @property + def raw_url(self): + return self._raw_url + + @raw_url.setter + def raw_url(self, raw_url): + self._raw_url = raw_url + @property def hostname(self): return self._hostname diff --git a/px_metadata.json b/px_metadata.json index 7823f83..1c5183b 100644 --- a/px_metadata.json +++ b/px_metadata.json @@ -35,6 +35,7 @@ "vid_extraction" ], "excluded_tests": [ - "test_url_decode_reserved_characters_with_character\\[;-" + "test_url_decode_reserved_characters_send_decoded_url\\[;-", + "test_url_decode_reserved_characters_send_additional_raw_url\\[(/|:)-" ] } \ No newline at end of file