From 56bedf9ec315298dda5f2168ea10d11f32539ae7 Mon Sep 17 00:00:00 2001 From: NewUserHa <32261870+NewUserHa@users.noreply.github.com> Date: Mon, 9 Dec 2024 23:56:39 +0800 Subject: [PATCH 1/4] Update request.py --- Lib/urllib/request.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index c5a6a18a32bba1..c4dfd819ccbf40 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -2069,7 +2069,7 @@ def getproxies(): """ return getproxies_environment() or getproxies_registry() - def proxy_bypass_registry(host): + def getproxy_bypass_registry(): try: import winreg except ImportError: @@ -2087,7 +2087,15 @@ def proxy_bypass_registry(host): return False if not proxyEnable or not proxyOverride: return False - return _proxy_bypass_winreg_override(host, proxyOverride) + + return proxyOverride + + def proxy_bypass_registry(host, proxyOverride=None): + if proxyOverride is None: + proxyOverride = getproxy_bypass_registry() + + if proxyOverride: + return _proxy_bypass_winreg_override(host, proxyOverride) def proxy_bypass(host): """Return True, if host should be bypassed. From 51caa929d1e750f9b93dd72739664e1d8f0169aa Mon Sep 17 00:00:00 2001 From: NewUserHa <32261870+NewUserHa@users.noreply.github.com> Date: Tue, 10 Dec 2024 00:15:40 +0800 Subject: [PATCH 2/4] Update request.py --- Lib/urllib/request.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index c4dfd819ccbf40..c07e570667850b 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -1838,8 +1838,8 @@ def getproxies_environment(): proxies[proxy_name] = value # CVE-2016-1000110 - If we are running as CGI script, forget HTTP_PROXY # (non-all-lowercase) as it may be set from the web server by a "Proxy:" - # header from the client - # If "proxy" is lowercase, it will still be used thanks to the next block + # header from the client. + # The below check it and only accepts the lowercase "_proxy" if 'REQUEST_METHOD' in os.environ: proxies.pop('http', None) for name, value, proxy_name in environment: From 5eaa29096afc41998d4a65c086c5634978b3d4d9 Mon Sep 17 00:00:00 2001 From: NewUserHa <32261870+NewUserHa@users.noreply.github.com> Date: Tue, 10 Dec 2024 00:26:22 +0800 Subject: [PATCH 3/4] Update request.py --- Lib/urllib/request.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index c07e570667850b..eb665dd73eae51 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -2091,24 +2091,22 @@ def getproxy_bypass_registry(): return proxyOverride def proxy_bypass_registry(host, proxyOverride=None): - if proxyOverride is None: - proxyOverride = getproxy_bypass_registry() - - if proxyOverride: + if proxyOverride:= proxyOverride or getproxy_bypass_registry(): return _proxy_bypass_winreg_override(host, proxyOverride) + return False - def proxy_bypass(host): + def proxy_bypass(host, env_proxies=None, proxyOverride=None): """Return True, if host should be bypassed. Checks proxy settings gathered from the environment, if specified, or the registry. """ - proxies = getproxies_environment() - if proxies: + if proxies:= env_proxies or getproxies_environment(): return proxy_bypass_environment(host, proxies) else: - return proxy_bypass_registry(host) + proxyOverride = proxyOverride or getproxy_bypass_registry() + return proxy_bypass_registry(host, proxyOverride) else: # By default use environment variables From c9e333ab0172f0692b1327f25f7e5fa6a8fdd330 Mon Sep 17 00:00:00 2001 From: NewUserHa <32261870+NewUserHa@users.noreply.github.com> Date: Wed, 11 Dec 2024 01:59:37 +0800 Subject: [PATCH 4/4] Update request.py --- Lib/urllib/request.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index eb665dd73eae51..4f702a59ef4fd1 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -2090,23 +2090,23 @@ def getproxy_bypass_registry(): return proxyOverride - def proxy_bypass_registry(host, proxyOverride=None): - if proxyOverride:= proxyOverride or getproxy_bypass_registry(): - return _proxy_bypass_winreg_override(host, proxyOverride) + def proxy_bypass_registry(host, proxy_override=None): + if proxy_override := proxy_override or getproxy_bypass_registry(): + return _proxy_bypass_winreg_override(host, proxy_override) return False - def proxy_bypass(host, env_proxies=None, proxyOverride=None): + def proxy_bypass(host, env_proxies=None, proxy_override=None): """Return True, if host should be bypassed. Checks proxy settings gathered from the environment, if specified, or the registry. """ - if proxies:= env_proxies or getproxies_environment(): + if proxies := env_proxies or getproxies_environment(): return proxy_bypass_environment(host, proxies) else: - proxyOverride = proxyOverride or getproxy_bypass_registry() - return proxy_bypass_registry(host, proxyOverride) + proxy_override = proxy_override or getproxy_bypass_registry() + return proxy_bypass_registry(host, proxy_override) else: # By default use environment variables