forked from CJackHwang/AIstudioProxyAPI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfetch_camoufox_data.py
More file actions
93 lines (83 loc) · 3.92 KB
/
fetch_camoufox_data.py
File metadata and controls
93 lines (83 loc) · 3.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import ssl
import sys
import traceback
# --- WARNING: THIS SCRIPT DISABLES SSL VERIFICATION --- #
# --- USE ONLY IF YOU TRUST YOUR NETWORK --- #
# --- AND `camoufox fetch` FAILS DUE TO SSL --- #
print("="*60)
print("WARNING: This script will temporarily disable SSL certificate verification")
print(" globally for this Python process to attempt fetching Camoufox data.")
print(" This can expose you to security risks like man-in-the-middle attacks.")
print("="*60)
confirm = input("Do you understand the risks and want to proceed? (yes/NO): ").strip().lower()
if confirm != 'yes':
print("Operation cancelled by user.")
sys.exit(0)
print("\nAttempting to disable SSL verification...")
original_ssl_context = None
try:
# Store the original context creation function
if hasattr(ssl, '_create_default_https_context'):
original_ssl_context = ssl._create_default_https_context
# Get the unverified context creation function
_create_unverified_https_context = ssl._create_unverified_context
# Monkey patch the default context creation
ssl._create_default_https_context = _create_unverified_https_context
print("SSL verification temporarily disabled for this process.")
except AttributeError:
print("ERROR: Cannot disable SSL verification on this Python version (missing necessary SSL functions).")
sys.exit(1)
except Exception as e:
print(f"ERROR: An unexpected error occurred while trying to disable SSL verification: {e}")
traceback.print_exc()
sys.exit(1)
# Now, try to import and run the fetch command logic from camoufox
print("\nAttempting to run Camoufox fetch logic...")
fetch_success = False
try:
# The exact way to trigger fetch programmatically might differ.
# This tries to import the CLI module and run the fetch command.
from camoufox import cli
# Simulate command line arguments: ['fetch']
# Note: cli.cli() might exit the process directly on completion or error.
# We assume it might raise an exception or return normally.
cli.cli(['fetch'])
print("Camoufox fetch process seems to have completed.")
# We assume success if no exception was raised and the process didn't exit.
# A more robust check would involve verifying the downloaded files,
# but that's beyond the scope of this simple script.
fetch_success = True
except ImportError:
print("\nERROR: Could not import camoufox.cli. Make sure camoufox package is installed.")
print(" Try running: pip show camoufox")
except FileNotFoundError as e:
print(f"\nERROR during fetch (FileNotFoundError): {e}")
print(" This might indicate issues with file paths or permissions during download/extraction.")
print(" Please check network connectivity and directory write permissions.")
except SystemExit as e:
# The CLI might use sys.exit(). We interpret non-zero exit codes as failure.
if e.code == 0:
print("Camoufox fetch process exited successfully (code 0).")
fetch_success = True
else:
print(f"\nERROR: Camoufox fetch process exited with error code: {e.code}")
except Exception as e:
print(f"\nERROR: An unexpected error occurred while running camoufox fetch: {e}")
traceback.print_exc()
finally:
# Attempt to restore the original SSL context
if original_ssl_context:
try:
ssl._create_default_https_context = original_ssl_context
print("\nOriginal SSL context restored.")
except Exception as restore_e:
print(f"\nWarning: Failed to restore original SSL context: {restore_e}")
else:
# If we couldn't store the original, we can't restore it.
# The effect was process-local anyway.
pass
if fetch_success:
print("\nFetch attempt finished. Please verify if Camoufox browser files were downloaded successfully.")
else:
print("\nFetch attempt failed or exited with an error.")
print("Script finished.")