From 4bf57eb7526fbac6f30b06492927d3f28ef6b39f Mon Sep 17 00:00:00 2001 From: Yuvi9587 <114073886+Yuvi9587@users.noreply.github.com> Date: Wed, 24 Dec 2025 09:27:01 +0530 Subject: [PATCH] Socks 4 and 5 proxy support --- src/ui/main_window.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/ui/main_window.py b/src/ui/main_window.py index eb047cc..cc12c6d 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -849,12 +849,24 @@ class DownloaderApp (QWidget ): settings['proxy_port'] = self.settings.value(PROXY_PORT_KEY, "", type=str) settings['proxy_username'] = self.settings.value(PROXY_USERNAME_KEY, "", type=str) settings['proxy_password'] = self.settings.value(PROXY_PASSWORD_KEY, "", type=str) + proxy_type_str = self.settings.value("proxy_type", "HTTP", type=str) settings['proxies'] = None if settings['proxy_enabled'] and settings['proxy_host'] and settings['proxy_port']: - proxy_str = f"http://{settings['proxy_host']}:{settings['proxy_port']}" + + # Determine correct scheme + scheme = "http" + if proxy_type_str == "SOCKS5": + scheme = "socks5h" # 'socks5h' forces remote DNS resolution (safer/better for bypassing) + elif proxy_type_str == "SOCKS4": + scheme = "socks4" + + # Build URL string if settings['proxy_username'] and settings['proxy_password']: - proxy_str = f"http://{settings['proxy_username']}:{settings['proxy_password']}@{settings['proxy_host']}:{settings['proxy_port']}" + proxy_str = f"{scheme}://{settings['proxy_username']}:{settings['proxy_password']}@{settings['proxy_host']}:{settings['proxy_port']}" + else: + proxy_str = f"{scheme}://{settings['proxy_host']}:{settings['proxy_port']}" + settings['proxies'] = {'http': proxy_str, 'https': proxy_str} return settings