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 : object

Gestion 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:
  • url (str, optional) – URL cible pour laquelle obtenir la configuration

  • force_refresh (bool, optional) – Forcer le rafraîchissement du cache

Renvoie:

Configuration de proxy à utiliser

Type renvoyé:

SecureProxyConfig

get_proxy_dict(url=None, force_refresh=False)[source]

Obtient un dictionnaire de proxy utilisable avec requests

Paramètres:
  • url (str, optional) – URL cible pour laquelle obtenir la configuration

  • force_refresh (bool, optional) – Forcer le rafraîchissement du cache

Renvoie:

Dictionnaire de proxy {“http”: “…”, “https”: “…”}

Type renvoyé:

dict

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é:

str

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é:

int

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é:

requests.Session

create_session()[source]

Crée une nouvelle session requests configurée avec le proxy approprié

Renvoie:

Nouvelle session configurée

Type renvoyé:

requests.Session

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é:

dict

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é:

str

get_credentials()[source]

Retourne les identifiants de proxy actuels (sécurisés)

Renvoie:

(username, password, domain)

Type renvoyé:

tuple

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é:

IziProxy

set_debug(enabled=True)[source]

Active ou désactive le mode débogage

Paramètres:

enabled (bool) – True pour activer le débogage, False pour le désactiver

Renvoie:

Instance actuelle pour chaînage

Type renvoyé:

IziProxy

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é:

IziProxy

unpatch_requests()[source]

Restaure les méthodes originales du module requests

Renvoie:

Instance actuelle pour chaînage

Type renvoyé:

IziProxy

Classes de support

SecurePassword

class iziproxy.secure_config.SecurePassword(password)[source]

Bases : object

Classe 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

__init__(password)[source]

Initialise un mot de passe sécurisé en le chiffrant en mémoire

Paramètres:

password (str) – Le mot de passe en clair à sécuriser

__str__()[source]

Retourne une version masquée du mot de passe.

__repr__()[source]

Retourne une version masquée du mot de passe pour le débogage.

get_password()[source]

Retourne le mot de passe non masqué.

Renvoie:

Le mot de passe en clair

Type renvoyé:

str

SecureProxyConfig

class iziproxy.secure_config.SecureProxyConfig(proxy_dict=None)[source]

Bases : dict

Classe 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”})

__str__()[source]

Masque les mots de passe dans la représentation string.

__repr__()[source]

Masque les mots de passe dans la représentation repr.

get_real_config()[source]

Retourne la configuration réelle (non masquée) à utiliser dans les requêtes

Renvoie:

Configuration de proxy avec mots de passe en clair et encodés

Type renvoyé:

dict

get_credentials(proxy_type='http')[source]

Récupère les identifiants (username, SecurePassword) pour un type de proxy

Paramètres:

proxy_type (str) – Type de proxy (“http”, “https”, etc.)

Renvoie:

(username, SecurePassword) ou (None, None) si pas d’authentification

Type renvoyé:

tuple

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 : object

Dé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']
__init__(config=None)[source]

Initialise le détecteur d’environnement

Paramètres:

config (dict, optional) – Configuration avec des règles de détection personnalisées

detect_environment(force_refresh=False)[source]

Détecte l’environnement actuel en utilisant différentes méthodes

Paramètres:

force_refresh (bool) – Force le rafraîchissement du cache

Renvoie:

Type d’environnement détecté (“local”, “dev”, “prod”)

Type renvoyé:

str

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 : object

Dé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

detect_system_proxy(url=None, force_refresh=False)[source]

Détecte le proxy configuré sur le système

Paramètres:
  • url (str, optional) – URL cible pour laquelle trouver le proxy (utile pour PAC)

  • force_refresh (bool, optional) – Force la détection même si en cache

Renvoie:

Configuration de proxy {“http”: “…”, “https”: “…”}

Type renvoyé:

dict

clear_cache()[source]

Vide le cache de détection de proxy

Module config_manager

Module de gestion de la configuration d’IziProxy

class iziproxy.config_manager.ConfigManager(config_path=None)[source]

Bases : object

Gè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é:

dict

get_environment_config(env_type)[source]

Retourne la configuration spécifique à un environnement

Paramètres:

env_type (str) – Type d’environnement (“local”, “dev”, “prod”)

Renvoie:

Configuration de l’environnement

Type renvoyé:

dict

get_credentials(env_type, service_name='iziproxy')[source]

Obtient les identifiants pour un environnement donné

Paramètres:
  • env_type – Type d’environnement

  • service_name – Nom du service pour le stockage des identifiants

Renvoie:

(username, password, domain)

Type renvoyé:

tuple

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é:

bool

class iziproxy.ntlm_auth.NtlmProxyManager[source]

Bases : object

Gestionnaire 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

create_ntlm_proxy_session(proxy_host, proxy_port, username, password, domain='', workstation='WORKSTATION', debug=False)[source]

Crée une session requests configurée pour utiliser l’authentification NTLM

Paramètres:
  • proxy_host (str) – Hôte du proxy

  • proxy_port (int) – Port du proxy

  • username (str) – Nom d’utilisateur

  • password (str) – 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

Renvoie:

Session configurée avec l’adaptateur NTLM

Type renvoyé:

requests.Session

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

open_tunnel(target_host, target_port=443)[source]

Ouvre un tunnel vers l’hôte cible via le proxy NTLM

Paramètres:
  • target_host (str) – Hôte de destination

  • target_port (int, optional) – Port de destination (443 par défaut)

Renvoie:

Socket SSL connecté à la destination

Type renvoyé:

socket

Lève:

Exception – Si l’établissement du tunnel échoue

class iziproxy.ntlm_auth.PatchedHTTPSConnection(host, ssl_sock, port=443, timeout=60)[source]

Bases : HTTPSConnection

Connexion 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.

__init__(host, ssl_sock, port=443, timeout=60)[source]

Initialise la connexion patchée

Paramètres:
  • host (str) – Hôte de destination

  • ssl_sock (socket) – Socket SSL préconnecté

  • port (int, optional) – Port de destination

  • timeout (int, optional) – Timeout en secondes

connect()[source]

Méthode connect surchargée pour utiliser le socket préconnecté

class iziproxy.ntlm_auth.CustomHTTPSConnectionPool(tunnel, host, port)[source]

Bases : HTTPSConnectionPool

Pool 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 : BaseAdapter

Adaptateur 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:
  • proxy_host (str) – Hôte du proxy

  • proxy_port (int) – Port du proxy

  • username (str) – Nom d’utilisateur

  • password (str) – 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

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é:

requests.Response

Lève:

Exception – Si une erreur survient lors de l’envoi de la requête

close()[source]

Ferme l’adaptateur et ses ressources associées

class iziproxy.ntlm_auth.NtlmProxyDict(ntlm_session)[source]

Bases : object

Classe 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

Paramètres:

key (str) – Protocole (“http” ou “https”)

Renvoie:

Session NTLM

Type renvoyé:

requests.Session

Lève:

KeyError – Si le protocole n’est pas supporté

__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é:

requests.Session

keys()[source]

Retourne les clés supportées

Renvoie:

Liste des protocoles supportés

Type renvoyé:

list

__contains__(key)[source]

Permet de vérifier si une clé est dans le dictionnaire

Paramètres:

key (str) – Protocole à vérifier

Renvoie:

True si le protocole est supporté

Type renvoyé:

bool

Module logger

Module utilitaire pour la gestion du logging dans IziProxy

iziproxy.logger.get_logger(name, level=20)[source]

Configure et retourne un logger pour IziProxy

Paramètres:
  • name (str) – Nom du logger

  • level (int) – Niveau de log (par défaut: INFO)

Renvoie:

Logger configuré

Type renvoyé:

logging.Logger