Skip to content

Commit bc1e95d

Browse files
authored
Merge pull request #2094 from seleniumbase/fix-proxy-with-auth-and-bypass-list
Fix proxying with auth, proxy_bypass_list, and Edge notifications
2 parents 74666b8 + efc902e commit bc1e95d

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed

mkdocs_build/requirements.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ paginate==0.5.6
2020
pyquery==2.0.0
2121
readtime==3.0.0
2222
mkdocs==1.5.2
23-
mkdocs-material==9.2.8
23+
mkdocs-material==9.3.1
2424
mkdocs-exclude-search==0.6.5
2525
mkdocs-simple-hooks==0.1.5
2626
mkdocs-material-extensions==1.1.1

seleniumbase/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
# seleniumbase package
2-
__version__ = "4.18.4"
2+
__version__ = "4.18.5"

seleniumbase/core/browser_launcher.py

Lines changed: 18 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
)
@@ -2258,6 +2268,8 @@ def get_local_driver(
22582268
prefs["enable_do_not_track"] = True
22592269
if external_pdf:
22602270
prefs["plugins.always_open_pdf_externally"] = True
2271+
pdce = "user_experience_metrics.personalization_data_consent_enabled"
2272+
prefs[pdce] = True # Remove "Personalize your web experience" prompt
22612273
edge_options.add_experimental_option("prefs", prefs)
22622274
edge_options.add_argument(
22632275
"--disable-blink-features=AutomationControlled"
@@ -2402,6 +2414,7 @@ def get_local_driver(
24022414
proxy_string,
24032415
proxy_user,
24042416
proxy_pass,
2417+
proxy_bypass_list,
24052418
zip_it=True,
24062419
multi_proxy=multi_proxy,
24072420
)
@@ -2417,6 +2430,7 @@ def get_local_driver(
24172430
None,
24182431
proxy_user,
24192432
proxy_pass,
2433+
proxy_bypass_list,
24202434
zip_it=True,
24212435
multi_proxy=multi_proxy,
24222436
)

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)