Skip to content

Commit 4e7b87f

Browse files
committed
Fix issue with authenticated proxy and proxy_bypass_list
1 parent 74666b8 commit 4e7b87f

File tree

2 files changed

+28
-9
lines changed

2 files changed

+28
-9
lines changed

seleniumbase/core/browser_launcher.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -501,25 +501,29 @@ def _add_chrome_proxy_extension(
501501
proxy_string,
502502
proxy_user,
503503
proxy_pass,
504+
proxy_bypass_list=None,
504505
zip_it=True,
505506
multi_proxy=False,
506507
):
507508
"""Implementation of https://stackoverflow.com/a/35293284 for
508509
https://stackoverflow.com/questions/12848327/
509510
(Run Selenium on a proxy server that requires authentication.)"""
510511
args = " ".join(sys.argv)
512+
bypass_list = proxy_bypass_list
511513
if (
512514
not ("-n" in sys.argv or " -n=" in args or args == "-c")
513515
and not multi_proxy
514516
):
515517
# Single-threaded
516518
if zip_it:
517-
proxy_helper.create_proxy_ext(proxy_string, proxy_user, proxy_pass)
519+
proxy_helper.create_proxy_ext(
520+
proxy_string, proxy_user, proxy_pass, bypass_list
521+
)
518522
proxy_zip = proxy_helper.PROXY_ZIP_PATH
519523
chrome_options.add_extension(proxy_zip)
520524
else:
521525
proxy_helper.create_proxy_ext(
522-
proxy_string, proxy_user, proxy_pass, zip_it=False
526+
proxy_string, proxy_user, proxy_pass, bypass_list, zip_it=False
523527
)
524528
proxy_dir_path = proxy_helper.PROXY_DIR_PATH
525529
chrome_options = add_chrome_ext_dir(chrome_options, proxy_dir_path)
@@ -532,7 +536,7 @@ def _add_chrome_proxy_extension(
532536
_set_proxy_filenames()
533537
if not os.path.exists(proxy_helper.PROXY_ZIP_PATH):
534538
proxy_helper.create_proxy_ext(
535-
proxy_string, proxy_user, proxy_pass
539+
proxy_string, proxy_user, proxy_pass, bypass_list
536540
)
537541
proxy_zip = proxy_helper.PROXY_ZIP_PATH
538542
chrome_options.add_extension(proxy_zip)
@@ -543,7 +547,11 @@ def _add_chrome_proxy_extension(
543547
_set_proxy_filenames()
544548
if not os.path.exists(proxy_helper.PROXY_DIR_PATH):
545549
proxy_helper.create_proxy_ext(
546-
proxy_string, proxy_user, proxy_pass, False
550+
proxy_string,
551+
proxy_user,
552+
proxy_pass,
553+
bypass_list,
554+
False,
547555
)
548556
chrome_options = add_chrome_ext_dir(
549557
chrome_options, proxy_helper.PROXY_DIR_PATH
@@ -843,6 +851,7 @@ def _set_chrome_options(
843851
proxy_string,
844852
proxy_user,
845853
proxy_pass,
854+
proxy_bypass_list,
846855
zip_it,
847856
multi_proxy,
848857
)
@@ -861,6 +870,7 @@ def _set_chrome_options(
861870
None,
862871
proxy_user,
863872
proxy_pass,
873+
proxy_bypass_list,
864874
zip_it,
865875
multi_proxy,
866876
)
@@ -2402,6 +2412,7 @@ def get_local_driver(
24022412
proxy_string,
24032413
proxy_user,
24042414
proxy_pass,
2415+
proxy_bypass_list,
24052416
zip_it=True,
24062417
multi_proxy=multi_proxy,
24072418
)
@@ -2417,6 +2428,7 @@ def get_local_driver(
24172428
None,
24182429
proxy_user,
24192430
proxy_pass,
2431+
proxy_bypass_list,
24202432
zip_it=True,
24212433
multi_proxy=multi_proxy,
24222434
)

seleniumbase/core/proxy_helper.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,18 @@
1414
PROXY_DIR_LOCK = os.path.join(DOWNLOADS_DIR, "proxy_dir.lock")
1515

1616

17-
def create_proxy_ext(proxy_string, proxy_user, proxy_pass, zip_it=True):
17+
def create_proxy_ext(
18+
proxy_string, proxy_user, proxy_pass, bypass_list=None, zip_it=True
19+
):
1820
"""Implementation of https://stackoverflow.com/a/35293284 for
1921
https://stackoverflow.com/questions/12848327/
2022
(Run Selenium on a proxy server that requires authentication.)
2123
Solution involves creating & adding a Chromium extension at runtime.
2224
CHROMIUM-ONLY! *** Only Chrome and Edge browsers are supported. ***
2325
"""
2426
background_js = None
27+
if not bypass_list:
28+
bypass_list = ""
2529
if proxy_string:
2630
proxy_host = proxy_string.split(":")[0]
2731
proxy_port = proxy_string.split(":")[1]
@@ -31,10 +35,10 @@ def create_proxy_ext(proxy_string, proxy_user, proxy_pass, zip_it=True):
3135
""" rules: {\n"""
3236
""" singleProxy: {\n"""
3337
""" scheme: "http",\n"""
34-
""" bypassList: [],\n"""
3538
""" host: "%s",\n"""
3639
""" port: parseInt("%s")\n"""
3740
""" },\n"""
41+
""" bypassList: ["%s"]\n"""
3842
""" }\n"""
3943
""" };\n"""
4044
"""chrome.proxy.settings.set("""
@@ -52,14 +56,17 @@ def create_proxy_ext(proxy_string, proxy_user, proxy_pass, zip_it=True):
5256
""" callbackFn,\n"""
5357
""" {urls: ["<all_urls>"]},\n"""
5458
""" ['blocking']\n"""
55-
""");""" % (proxy_host, proxy_port, proxy_user, proxy_pass)
59+
""");""" % (
60+
proxy_host, proxy_port, bypass_list, proxy_user, proxy_pass
61+
)
5662
)
5763
else:
5864
background_js = (
5965
"""var config = {\n"""
6066
""" mode: "fixed_servers",\n"""
6167
""" rules: {\n"""
62-
""" }\n"""
68+
""" },\n"""
69+
""" bypassList: ["%s"]\n"""
6370
""" };\n"""
6471
"""chrome.proxy.settings.set("""
6572
"""{value: config, scope: "regular"}, function() {"""
@@ -76,7 +83,7 @@ def create_proxy_ext(proxy_string, proxy_user, proxy_pass, zip_it=True):
7683
""" callbackFn,\n"""
7784
""" {urls: ["<all_urls>"]},\n"""
7885
""" ['blocking']\n"""
79-
""");""" % (proxy_user, proxy_pass)
86+
""");""" % (bypass_list, proxy_user, proxy_pass)
8087
)
8188
manifest_json = (
8289
"""{\n"""

0 commit comments

Comments
 (0)