|
| 1 | +import json |
1 | 2 | import logging |
2 | 3 | import os |
3 | 4 | import pathlib |
@@ -88,19 +89,19 @@ def __init__( |
88 | 89 | if not browser_args: |
89 | 90 | browser_args = [] |
90 | 91 | if not user_data_dir: |
91 | | - self.user_data_dir = temp_profile_dir() |
| 92 | + self.user_data_dir = temp_profile_dir(proxy=proxy) |
92 | 93 | self._user_data_dir = self.user_data_dir |
93 | 94 | self._custom_data_dir = False |
94 | 95 | else: |
95 | 96 | self.user_data_dir = user_data_dir |
96 | 97 | profile = os.path.join(self.user_data_dir, "Default") |
97 | 98 | preferences_file = os.path.join(profile, "Preferences") |
98 | | - preferences = get_default_preferences() |
| 99 | + preferences = get_default_preferences(proxy=proxy) |
99 | 100 | if not os.path.exists(profile): |
100 | 101 | with suppress(Exception): |
101 | 102 | os.makedirs(profile) |
102 | | - with open(preferences_file, "w") as f: |
103 | | - f.write(preferences) |
| 103 | + with open(preferences_file, "w", encoding="utf-8") as f: |
| 104 | + json.dump(preferences, f) |
104 | 105 | mock_keychain = False |
105 | 106 | if not browser_executable_path: |
106 | 107 | browser_executable_path = find_chrome_executable() |
@@ -343,25 +344,46 @@ def is_root(): |
343 | 344 | return ctypes.windll.shell32.IsUserAnAdmin() != 0 |
344 | 345 |
|
345 | 346 |
|
346 | | -def get_default_preferences(): |
347 | | - return ( |
348 | | - """{"credentials_enable_service": false, |
349 | | - "password_manager_enabled": false, |
350 | | - "password_manager_leak_detection": false}""" |
351 | | - ) |
| 347 | +def get_default_preferences(proxy=None): |
| 348 | + prefs = { |
| 349 | + "profile": { |
| 350 | + "password_manager_leak_detection": False, |
| 351 | + "password_manager_enabled": False |
| 352 | + }, |
| 353 | + "credentials_enable_service": False, |
| 354 | + "omnibox-max-zero-suggest-matches": 0, |
| 355 | + "omnibox-zero-suggest-prefetching": 0, |
| 356 | + "omnibox-zero-suggest-prefetching-on-srp": 0, |
| 357 | + "omnibox-zero-suggest-prefetching-on-web": 0, |
| 358 | + "omnibox-zero-suggest-in-memory-caching": 0, |
| 359 | + "local_discovery": { |
| 360 | + "notifications_enabled": False |
| 361 | + }, |
| 362 | + "autofill": { |
| 363 | + "profile_enabled": False, |
| 364 | + "credit_card_enabled": False |
| 365 | + } |
| 366 | + } |
| 367 | + if proxy: |
| 368 | + prefs["webrtc"] = { |
| 369 | + "ip_handling_policy": "disable_non_proxied_udp", |
| 370 | + "multiple_routes_enabled": False, |
| 371 | + "nonproxied_udp_enabled": False |
| 372 | + } |
| 373 | + return prefs |
352 | 374 |
|
353 | 375 |
|
354 | | -def temp_profile_dir(): |
| 376 | +def temp_profile_dir(proxy=None): |
355 | 377 | """Generate a temp dir (path)""" |
356 | 378 | path = os.path.normpath(tempfile.mkdtemp(prefix="uc_")) |
357 | 379 | profile = os.path.join(path, "Default") |
358 | 380 | preferences_file = os.path.join(profile, "Preferences") |
359 | | - preferences = get_default_preferences() |
| 381 | + preferences = get_default_preferences(proxy=proxy) |
360 | 382 | if not os.path.exists(profile): |
361 | 383 | with suppress(Exception): |
362 | 384 | os.makedirs(profile) |
363 | | - with open(preferences_file, "w") as f: |
364 | | - f.write(preferences) |
| 385 | + with open(preferences_file, "w", encoding="utf-8") as f: |
| 386 | + json.dump(preferences, f) |
365 | 387 | return path |
366 | 388 |
|
367 | 389 |
|
|
0 commit comments