From cb4ae98bee850f759734acd32abb08cd4799d8a3 Mon Sep 17 00:00:00 2001 From: Abolfazl Date: Thu, 7 May 2026 18:10:40 +0330 Subject: [PATCH] Major bugfix: added no-redirect to VPS exit node --- apps_script/vps_exit_node.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/apps_script/vps_exit_node.py b/apps_script/vps_exit_node.py index 6f74cfc..1a83bbb 100644 --- a/apps_script/vps_exit_node.py +++ b/apps_script/vps_exit_node.py @@ -95,6 +95,21 @@ _OUTBOUND_TIMEOUT = 30 # Pre-shared key loaded at startup. _PSK: str = "" +# --------------------------------------------------------------------------- +# HTTP client — no-redirect opener +# --------------------------------------------------------------------------- + +_NO_REDIRECT_OPENER = urllib.request.OpenerDirector() +for _h in ( + urllib.request.UnknownHandler(), + urllib.request.HTTPDefaultErrorHandler(), + urllib.request.HTTPErrorProcessor(), + urllib.request.HTTPHandler(), + urllib.request.HTTPSHandler(), +): + _NO_REDIRECT_OPENER.add_handler(_h) +del _h + # --------------------------------------------------------------------------- # Helpers # --------------------------------------------------------------------------- @@ -152,7 +167,7 @@ def _relay_request( request.data = body try: - with urllib.request.urlopen(request, timeout=_OUTBOUND_TIMEOUT) as resp: + with _NO_REDIRECT_OPENER.open(request, timeout=_OUTBOUND_TIMEOUT) as resp: data = resp.read(_MAX_RESPONSE_BODY) resp_headers: dict[str, str] = {} for k, v in resp.headers.items():