AIstudioProxyAPI / fetch_camoufox_data.py
hins111's picture
Upload 11 files
6a0eaad verified
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.")