Spaces:
Paused
Paused
| 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.") | |