Skip to content

Commit dbd6983

Browse files
authored
Merge pull request #286 from autoscrape-labs/fix/support-to-proxy-schema
Add support to proxy schema
2 parents 54f9bdc + ae38618 commit dbd6983

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

pydoll/browser/managers/browser_process_manager.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def start_browser_process(
5555
@staticmethod
5656
def _default_process_creator(command: list[str]) -> subprocess.Popen:
5757
"""Create browser process with output capture to prevent console clutter."""
58-
return subprocess.Popen(command, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
58+
return subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
5959

6060
def stop_process(self):
6161
"""

pydoll/browser/managers/proxy_manager.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,17 @@ def _parse_proxy(proxy_value: str) -> tuple[bool, Optional[str], Optional[str],
7474
return False, None, None, proxy_value
7575

7676
try:
77+
scheme = ''
78+
has_scheme = False
79+
if '://' in proxy_value:
80+
scheme, proxy_value = proxy_value.split('://', 1)
81+
has_scheme = True
82+
7783
creds_part, server_part = proxy_value.split('@', 1)
7884
username, password = creds_part.split(':', 1)
79-
return True, username, password, server_part
85+
86+
clean_proxy = f"{scheme}://{server_part}" if has_scheme else server_part
87+
return True, username, password, clean_proxy
8088
except ValueError:
8189
return False, None, None, proxy_value
8290

tests/test_managers/test_browser_managers.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,26 @@ def test_proxy_manager_invalid_credentials_format(proxy_options):
6666
]
6767

6868

69+
def test_proxy_manager_with_scheme_http(proxy_options):
70+
proxy_options.add_argument('--proxy-server=http://user:[email protected]:8080')
71+
manager = ProxyManager(proxy_options)
72+
result = manager.get_proxy_credentials()
73+
74+
assert result[0] is True
75+
assert result[1] == ('user', 'pass')
76+
assert proxy_options.arguments == ['--proxy-server=http://proxy.local:8080']
77+
78+
79+
def test_proxy_manager_with_scheme_socks(proxy_options):
80+
proxy_options.add_argument('--proxy-server=socks5://alice:[email protected]:1080')
81+
manager = ProxyManager(proxy_options)
82+
result = manager.get_proxy_credentials()
83+
84+
assert result[0] is True
85+
assert result[1] == ('alice', 'pwd')
86+
assert proxy_options.arguments == ['--proxy-server=socks5://1.2.3.4:1080']
87+
88+
6989
def test_proxy_manager_invalid_proxy_format(proxy_options):
7090
proxy_options.add_argument('--proxy-server=invalidformat')
7191
manager = ProxyManager(proxy_options)

0 commit comments

Comments
 (0)