From 3963da7cf4bc5cea979c7d491e1f8a005ad375fe Mon Sep 17 00:00:00 2001 From: 23241a6749 Date: Mon, 13 Jul 2026 11:49:58 +0000 Subject: [PATCH] fix(http): sanitize non-ASCII in URL before urllib.request to prevent latin-1 encode crash --- skills/last30days/scripts/lib/http.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/skills/last30days/scripts/lib/http.py b/skills/last30days/scripts/lib/http.py index b525c25b..c22065de 100644 --- a/skills/last30days/scripts/lib/http.py +++ b/skills/last30days/scripts/lib/http.py @@ -13,7 +13,7 @@ from contextvars import ContextVar, copy_context from pathlib import Path from typing import Any, Dict, Optional, Union -from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit +from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit, quote from . import health from . import log as _log @@ -556,6 +556,9 @@ def request( if filtered: separator = "&" if ("?" in url) else "?" url = f"{url}{separator}{urlencode(filtered)}" + # Encode any non-ASCII characters to prevent UnicodeEncodeError from + # http.client.HTTPConnection.putrequest (which uses latin-1 internally). + url = quote(url, safe='/:@!$&\'()*+,;=-._~%?#[]=+') fixture_request = _fixture_request(method, url, json_data, raw) fixture_redactions = _fixture_redactions(url, headers, json_data)