Référence de l’API
Cette section décrit l’API publique d’IziProxy.
Classe principale
- class iziproxy.IziProxy(config_path=None, proxy_url=None, pac_url=None, environment=None, username=None, password=None, domain=None, debug=False)[source]
Bases :
objectGestion intelligente des proxys avec détection automatique de l’environnement et des configurations
Cette classe est le point d’entrée principal d’IziProxy et permet de: - Détecter automatiquement l’environnement d’exécution - Trouver et configurer le proxy approprié - Gérer l’authentification (basique ou NTLM) - Créer des sessions requests préconfigurées - Obtenir des dictionnaires de proxy utilisables
- __init__(config_path=None, proxy_url=None, pac_url=None, environment=None, username=None, password=None, domain=None, debug=False)[source]
Initialise IziProxy avec les options spécifiées
- Paramètres:
config_path (str, optional) – Chemin vers un fichier de configuration YAML
proxy_url (str, optional) – URL du proxy à utiliser (prioritaire)
pac_url (str, optional) – URL du fichier PAC à utiliser
environment (str, optional) – Forcer un environnement (“local”, “dev”, “prod”)
username (str, optional) – Nom d’utilisateur pour l’authentification
password (str, optional) – Mot de passe pour l’authentification
domain (str, optional) – Domaine pour l’authentification NTLM
debug (bool, optional) – Activer le mode débogage
- get_proxy_config(url=None, force_refresh=False)[source]
Obtient la configuration de proxy appropriée
- Paramètres:
- Renvoie:
Configuration de proxy à utiliser
- Type renvoyé:
- get_proxy_dict(url=None, force_refresh=False)[source]
Obtient un dictionnaire de proxy utilisable avec requests
- get_proxy_host()[source]
Récupère le nom d’hôte du proxy actuellement configuré
- Renvoie:
Nom d’hôte du proxy ou None si aucun proxy n’est configuré
- Type renvoyé:
- get_proxy_port()[source]
Récupère le port du proxy actuellement configuré
- Renvoie:
Port du proxy ou None si aucun proxy n’est configuré
- Type renvoyé:
- configure_session(session)[source]
Configure une session requests avec le proxy approprié
- Paramètres:
session (requests.Session) – Session requests à configurer
- Renvoie:
Session configurée
- Type renvoyé:
- create_session()[source]
Crée une nouvelle session requests configurée avec le proxy approprié
- Renvoie:
Nouvelle session configurée
- Type renvoyé:
- set_environment_variables()[source]
Configure les variables d’environnement avec les paramètres de proxy
Cette méthode est utile pour les applications qui n’utilisent pas requests mais respectent les variables d’environnement standard.
- Renvoie:
Les variables d’environnement définies
- Type renvoyé:
- clear_environment_variables()[source]
Supprime les variables d’environnement de proxy définies précédemment
- get_current_environment()[source]
Retourne l’environnement actuellement détecté
- Renvoie:
Environnement (“local”, “dev”, “prod”)
- Type renvoyé:
- get_credentials()[source]
Retourne les identifiants de proxy actuels (sécurisés)
- Renvoie:
(username, password, domain)
- Type renvoyé:
- clear_auth_cache()[source]
Vide le cache de détection d’authentification Utile quand la configuration proxy change
- refresh()[source]
Force le rafraîchissement de toutes les détections et caches
- Renvoie:
Instance actuelle pour chaînage
- Type renvoyé:
- patch_requests()[source]
Remplace les méthodes du module requests par celles de la session préconfigurée
Cette méthode effectue un « monkey patching » du module requests pour que toutes les requêtes utilisent automatiquement la configuration proxy.
Utile pour les applications existantes ou les bibliothèques tierces qui utilisent requests.get(), requests.post(), etc. directement.
- Renvoie:
Instance actuelle pour chaînage
- Type renvoyé:
Classes de support
SecurePassword
- class iziproxy.secure_config.SecurePassword(password)[source]
Bases :
objectClasse qui encapsule un mot de passe avec chiffrement en mémoire pour éviter l’exposition en clair dans la mémoire ou les logs.
Cette classe permet de manipuler des mots de passe de manière sécurisée en: - Chiffrant le mot de passe en mémoire - Masquant le mot de passe dans les représentations string/repr - Permettant un accès contrôlé au mot de passe en clair
SecureProxyConfig
- class iziproxy.secure_config.SecureProxyConfig(proxy_dict=None)[source]
Bases :
dictClasse de configuration de proxy sécurisée qui utilise SecurePassword pour masquer les mots de passe dans les URLs de proxy.
Cette classe permet de: - Stocker des configurations de proxy avec authentification - Masquer les mots de passe dans les représentations et logs - Récupérer les configurations réelles pour les requêtes HTTP
- __init__(proxy_dict=None)[source]
Initialise une configuration de proxy sécurisée
- Paramètres:
proxy_dict (dict, optional) – Dictionnaire de configuration de proxy (ex: {“http”: “http://user:pass@proxy:8080”})
Modules internes
Les modules suivants sont utilisés en interne par IziProxy et ne font pas partie de l’API publique. Ils sont documentés ici pour référence.
Module env_detector
Module de détection automatique de l’environnement d’exécution
- class iziproxy.env_detector.EnvironmentDetector(config=None)[source]
Bases :
objectDétecte automatiquement l’environnement d’exécution (local, dev, prod)
Cette classe permet de: - Identifier l’environnement d’exécution actuel - Utiliser différentes méthodes de détection - Personnaliser les règles de détection
- ENV_TYPES = ['local', 'dev', 'prod']
- ENV_VAR_NAMES = ['ENVIRONMENT', 'ENV', 'APP_ENV', 'ENVIRONMENT_TYPE', 'PROXY_ENV', 'IZIPROXY_ENV']
Module proxy_detector
Module de détection automatique des proxys système et des fichiers PAC
- class iziproxy.proxy_detector.ProxyDetector(config=None)[source]
Bases :
objectDétecte les proxys disponibles sur le système
Cette classe permet de: - Détecter les proxys configurés au niveau du système - Récupérer les paramètres depuis les variables d’environnement - Analyser les fichiers PAC (Proxy Auto-Configuration)
- ENV_PROXY_VARS = ['HTTP_PROXY', 'http_proxy', 'HTTPS_PROXY', 'https_proxy', 'ALL_PROXY', 'all_proxy', 'NO_PROXY', 'no_proxy']
- __init__(config=None)[source]
Initialise le détecteur de proxy
- Paramètres:
config (dict, optional) – Configuration spécifique
Module config_manager
Module de gestion de la configuration d’IziProxy
- class iziproxy.config_manager.ConfigManager(config_path=None)[source]
Bases :
objectGère la configuration d’IziProxy depuis différentes sources
Cette classe permet de: - Charger la configuration depuis un fichier YAML - Rechercher automatiquement les fichiers de configuration - Gérer les valeurs par défaut - Sécuriser les identifiants avec keyring - Saisie interactive GUI/CLI adaptative
- DEFAULT_CONFIG_PATHS = ['./iziproxy.yml', './iziproxy.yaml', '~/.config/iziproxy.yml', '~/.config/iziproxy.yaml', '~/.iziproxy.yml', '~/.iziproxy.yaml']
- __init__(config_path=None)[source]
Initialise le gestionnaire de configuration
- Paramètres:
config_path (str, optional) – Chemin vers un fichier de configuration
- get_config()[source]
Retourne la configuration complète
- Renvoie:
Configuration complète
- Type renvoyé:
Module ntlm_auth
Module d’authentification NTLM pour IziProxy
- iziproxy.ntlm_auth.is_ntlm_auth_available()[source]
Vérifie si les dépendances pour l’authentification NTLM sont disponibles
- Renvoie:
True si les dépendances sont disponibles
- Type renvoyé:
- class iziproxy.ntlm_auth.NtlmProxyManager[source]
Bases :
objectGestionnaire de proxy NTLM pour l’authentification sur les proxys d’entreprise
Cette classe simplifie l’utilisation de l’authentification NTLM avec requests
- __init__()[source]
Initialise le gestionnaire NTLM
- Lève:
ImportError – Si le package ntlm_auth n’est pas disponible
- class iziproxy.ntlm_auth.NtlmProxyTunnel(proxy_host, proxy_port, username, password, domain='', workstation='WORKSTATION', debug=False)[source]
Bases :
objectÉtablit un tunnel HTTPS à travers un proxy avec authentification NTLM
Cette classe gère la création et l’authentification d’un tunnel SSL à travers un proxy NTLM.
- __init__(proxy_host, proxy_port, username, password, domain='', workstation='WORKSTATION', debug=False)[source]
Initialise le tunnel proxy NTLM
- Paramètres:
proxy_host (str) – Hôte du proxy
proxy_port (int) – Port du proxy
username (str) – Nom d’utilisateur
password (str ou SecurePassword) – Mot de passe
domain (str, optional) – Domaine (optionnel)
workstation (str, optional) – Nom du poste de travail (optionnel)
debug (bool, optional) – Activer le mode débogage
- class iziproxy.ntlm_auth.PatchedHTTPSConnection(host, ssl_sock, port=443, timeout=60)[source]
Bases :
HTTPSConnectionConnexion HTTPS patchée pour utiliser un socket SSL préconnecté
Cette classe modifie HTTPSConnection pour utiliser un socket SSL déjà établi par le tunnel NTLM.
- class iziproxy.ntlm_auth.CustomHTTPSConnectionPool(tunnel, host, port)[source]
Bases :
HTTPSConnectionPoolPool de connexions HTTPS personnalisé pour gérer le tunnel NTLM
Cette classe étend HTTPSConnectionPool pour créer des connexions à travers un tunnel NTLM.
- __init__(tunnel, host, port)[source]
Initialise le pool de connexions
- Paramètres:
tunnel (NtlmProxyTunnel) – Instance de NtlmProxyTunnel
host (str) – Hôte de destination
port (int) – Port de destination
- class iziproxy.ntlm_auth.NtlmProxyAdapter(proxy_host, proxy_port, username, password, domain='', workstation='WORKSTATION', debug=False)[source]
Bases :
BaseAdapterAdaptateur requests pour l’authentification NTLM avec les proxys
Cette classe implémente un adaptateur requests personnalisé qui gère l’authentification NTLM pour les proxys d’entreprise.
- __init__(proxy_host, proxy_port, username, password, domain='', workstation='WORKSTATION', debug=False)[source]
Initialise l’adaptateur NTLM
- Paramètres:
- send(request, stream=False, timeout=None, verify=True, cert=None, proxies=None)[source]
Envoie une requête via le tunnel NTLM
Cette méthode établit un tunnel NTLM puis envoie la requête HTTP à travers ce tunnel. Elle gère également la lecture et le traitement de la réponse.
- Paramètres:
request (PreparedRequest) – Requête requests à envoyer
stream (bool, optional) – Activer le streaming
timeout (int, optional) – Timeout en secondes
verify (bool, optional) – Vérifier le certificat SSL
cert (str, optional) – Certificat client
proxies (dict, optional) – Configurations de proxy (ignorées)
- Renvoie:
Réponse à la requête
- Type renvoyé:
- Lève:
Exception – Si une erreur survient lors de l’envoi de la requête
- class iziproxy.ntlm_auth.NtlmProxyDict(ntlm_session)[source]
Bases :
objectClasse pour encapsuler une session NTLM comme un dictionnaire de proxy
Cette classe permet d’utiliser une session NTLM comme un dictionnaire de proxy standard, compatible avec les API requests
- __init__(ntlm_session)[source]
Initialise un dictionnaire de proxy NTLM
- Paramètres:
ntlm_session (requests.Session) – Session NTLM à encapsuler
- __getitem__(key)[source]
Retourne la session NTLM pour http ou https
- __setitem__(key, value)[source]
Ne pas autoriser la modification des proxies
- Lève:
NotImplementedError – Toujours levée car non supporté
- get(key, default=None)[source]
Gérer l’appel pour un proxy
- Paramètres:
key (str) – Protocole (“http” ou “https”)
default – Valeur par défaut si non trouvé
- Renvoie:
Session NTLM ou default
- Type renvoyé:
Module logger
Module utilitaire pour la gestion du logging dans IziProxy