From 711a352c5fd26a95b29ac2b2c017d0a075cdd9d0 Mon Sep 17 00:00:00 2001 From: abhijeet117 Date: Sat, 22 Aug 2026 17:43:57 +0530 Subject: [PATCH] fix(proxy): encode multi-value param overrides as repeated pairs --- strix/tools/proxy/caido_api.py | 2 +- tests/test_proxy_modifications.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/strix/tools/proxy/caido_api.py b/strix/tools/proxy/caido_api.py index a210c2bf..d3013f2f 100644 --- a/strix/tools/proxy/caido_api.py +++ b/strix/tools/proxy/caido_api.py @@ -261,7 +261,7 @@ def apply_modifications( if key not in overrides ] pairs.extend(overrides.items()) - final_url = urlunparse(parsed._replace(query=urlencode(pairs))) + final_url = urlunparse(parsed._replace(query=urlencode(pairs, doseq=True))) if "headers" in modifications: headers.update(modifications["headers"]) if "body" in modifications: diff --git a/tests/test_proxy_modifications.py b/tests/test_proxy_modifications.py index 9dce2926..3b93f11f 100644 --- a/tests/test_proxy_modifications.py +++ b/tests/test_proxy_modifications.py @@ -67,3 +67,16 @@ def test_params_add_new_param() -> None: pairs = _query_pairs(result["url"]) assert ("a", "1") in pairs assert ("new", "1") in pairs + + +def test_params_override_with_multiple_values() -> None: + result = apply_modifications( + _components(), + {"params": {"tag": ["a", "b"]}}, + "http://victim.com/search?tag=old&q=x", + ) + pairs = _query_pairs(result["url"]) + assert ("tag", "a") in pairs + assert ("tag", "b") in pairs + assert ("tag", "old") not in pairs + assert ("q", "x") in pairs