Skip to main content

Gestion intelligente et discrète des proxys pour développeurs Python

Project description

IziProxy

Gestion intelligente et discrète des proxys pour développeurs Python

PyPI version Python Versions License Environnements Maintenance Proxy Time Saved

Pourquoi IziProxy ?

Le développement local avec des proxys d'entreprise authentifiés est souvent un véritable casse-tête : configurations manuelles, identifiants à saisir régulièrement, et code à modifier lors du passage en production.

Alors que des outils comme CNTLM offrent une solution au niveau système, IziProxy propose une approche différente, directement intégrée à vos applications Python :

  • Contrairement à CNTLM : Pas besoin d'installer et configurer un service système
  • Plus flexible : Change automatiquement de configuration selon l'environnement détecté
  • Spécifique à Python : S'intègre directement dans votre code sans affecter les autres applications
  • Sans droits admin : Fonctionne sans privilèges administrateur sur la machine
  • Zéro configuration : Détecte automatiquement les proxys du système et les fichiers PAC

IziProxy résout les défis quotidiens de la gestion de proxy en environnement d'entreprise :

  • Détection automatique d'environnement : Bascule automatiquement entre les configurations local/dev/prod
  • Détection des proxys système : Utilise intelligemment les configurations existantes et fichiers PAC
  • Sécurité améliorée : Masque les mots de passe en mode débogage pour éviter les divulgations accidentelles
  • Stockage sécurisé : Intégration avec les gestionnaires d'identifiants du système
  • Configuration flexible : Via fichier YAML ou variables d'environnement

Comparaison avec d'autres approches

Avantage IziProxy CNTLM (solution système) Variables d'environnement
Intégration directe dans le code Python
Détection automatique d'environnement
Protection visuelle des mots de passe en débogage
Fonctionnement sans droits administrateur
Configuration adaptative selon le contexte
Stockage sécurisé des identifiants
Pas de modification du système global
Solution spécifique pour Python
Authentification NTLM native
Fonctionne avec toutes les applications
Accélération par mise en cache des requêtes
Facilité de déploiement dans des projets Python

Installation

pip install iziproxy

# Avec support complet des fichiers PAC
pip install iziproxy[pac]

Utilisation simple

from iziproxy import IziProxy

# Initialisation avec détection automatique d'environnement et proxy
proxy = IziProxy()  # Aucune configuration requise!

# Utilisation avec requests
import requests
session = requests.Session()
proxy.configure_session(session)

# Ou récupérer directement la configuration
proxy_config = proxy.get_proxy_config()
response = requests.get("https://api.exemple.com", proxies=proxy_config)

Comment IziProxy résout les problèmes courants

Avant vs. Après IziProxy

Sans IziProxy:

import requests
import os
import getpass

# Configuration manuelle selon l'environnement
if os.environ.get('ENVIRONMENT') == 'prod':
    proxy_url = "http://proxy.prod.example.com:8080"
    proxies = {"http": proxy_url, "https": proxy_url}
else:
    # En local, besoin d'authentification
    username = input("Username: ")
    password = getpass.getpass("Password: ")
    proxy_url = f"http://{username}:{password}@proxy.local.example.com:8080"
    proxies = {"http": proxy_url, "https": proxy_url}

# Le mot de passe apparaît en clair lors du débogage
print(f"Utilisation du proxy: {proxies}")  # 😱 Danger!

response = requests.get("https://api.exemple.com", proxies=proxies)

Avec IziProxy:

import requests
from iziproxy import IziProxy

# Configuration automatique
proxy = IziProxy()
proxies = proxy.get_proxy_config()

# Le mot de passe est masqué lors du débogage
print(f"Utilisation du proxy: {proxies}")  # ✅ Sécurisé!

response = requests.get("https://api.exemple.com", proxies=proxies)

Problèmes résolus par IziProxy

  1. Configuration répétitive : Plus besoin de réécrire la même logique de proxy dans chaque projet

  2. Exposition des mots de passe : La configuration classique expose les mots de passe durant le débogage :

    # Sans IziProxy - DANGEREUX durant le débogage
    {"http": "http://jdupont:MonM0tDePa$$e@proxy.local.exemple.com:8080", ...}
    
    # Avec IziProxy - SÉCURISÉ
    SecureProxyConfig({"http": "http://jdupont:********@proxy.local.exemple.com:8080", ...})
    
  3. Code conditionnel complexe : Simplification du code qui doit s'adapter à différents environnements

    # Sans IziProxy: 15+ lignes de code conditionnel complexe
    # Avec IziProxy: 2 lignes de code, quel que soit l'environnement
    
  4. Authentification répétitive : Fini la saisie répétée des identifiants à chaque exécution

  5. Détection des configurations système : Utilise automatiquement les proxys configurés sur votre machine

Configuration

IziProxy peut fonctionner sans configuration pour les cas simples, mais s'adapte à vos besoins spécifiques via un fichier YAML :

environments:
  local:
    proxy_url: "http://proxy.local.example.com:8080"
    requires_auth: true
  
  prod:
    proxy_url: "http://proxy.prod.example.com:8080"
    requires_auth: false

environment_detection:
  method: auto  # auto, env_var, hostname, ip, ask
  hostname_patterns:
    local: ["local", "laptop", "dev-pc"]
    prod: ["prod"]
  hostname_regex:
    local: ["^dev-\\w+$", "^laptop-\\d+$"]

Fonctionnalités

Détection d'environnement

IziProxy utilise plusieurs méthodes pour identifier automatiquement l'environnement d'exécution :

  • Variable d'environnement (ex: ENVIRONMENT=prod)
  • Nom d'hôte de la machine (avec support des expressions régulières)
  • Plage d'adresses IP
  • Demande interactive (en dernier recours)

Détection automatique de proxy

IziProxy trouve et utilise intelligemment les configurations proxy existantes :

  • Détection des variables d'environnement proxy standard
  • Support des fichiers PAC (Proxy Auto-Configuration)
  • Lecture des configurations système (Windows, macOS, Linux)
  • Mise en cache des résultats pour des performances optimales

Gestion sécurisée des identifiants

IziProxy utilise keyring pour le stockage sécurisé des identifiants :

  • Intégration avec le gestionnaire de mots de passe natif du système
  • Fonctionne sur Windows, macOS et Linux
  • Stockage hors du code et des fichiers de configuration

Protection visuelle en débogage

IziProxy masque intelligemment les mots de passe dans toutes les représentations d'objets pendant les sessions de débogage, tout en les utilisant correctement pour les requêtes.

Fin des galères de développement local

Finis les problèmes de:

  • Configuration manuelle des proxys à chaque changement d'environnement
  • Exposition accidentelle des mots de passe lors des sessions de débogage partagées
  • Saisie répétitive des identifiants de proxy
  • Code différent entre environnement local et production

Détection automatique de proxy

IziProxy inclut un système intelligent de détection qui trouve et utilise automatiquement les configurations proxy existantes sur votre système.

Sources de configuration détectées

IziProxy recherche les configurations proxy dans plusieurs sources (par ordre de priorité) :

  1. Fichier de configuration YAML (si fourni)
  2. Variables d'environnement (HTTP_PROXY, HTTPS_PROXY, etc.)
  3. Fichiers PAC (Proxy Auto-Configuration)
  4. Configuration système
    • Windows : Paramètres du Registre
    • macOS : Préférences Système réseau
    • Linux : Paramètres GNOME/KDE

Support des fichiers PAC

IziProxy peut analyser et utiliser les scripts PAC (Proxy Auto-Configuration) déployés dans votre organisation :

# Utilisation avancée avec fichiers PAC
from iziproxy import IziProxy

# Configurer avec un fichier PAC spécifique
proxy = IziProxy(pac_url="http://intranet.example.com/proxy.pac")

# OU laisser IziProxy détecter le PAC du système
proxy = IziProxy()  # Détection automatique des PAC configurés

Dépendances optionnelles pour le support PAC

Pour une analyse optimale des fichiers PAC, installez les dépendances optionnelles :

pip install iziproxy[pac]

Cela installera pypac qui offre la meilleure compatibilité avec les fichiers PAC complexes.

Performances optimisées

  • Les résultats de l'analyse PAC sont mis en cache pour éviter des analyses répétées
  • Le système de cache réduit le temps de démarrage et améliore les performances
  • Expiration automatique du cache pour s'adapter aux changements de configuration

Compatibilité

  • Python 3.7+
  • Windows, macOS, et Linux
  • Intégration transparente avec le module requests

Documentation

Pour une documentation complète, visitez https://iziproxy.readthedocs.io/

Contribuer

Les contributions sont les bienvenues ! Consultez CONTRIBUTING.md pour les directives.

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iziproxy-0.1.4.tar.gz (28.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iziproxy-0.1.4-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file iziproxy-0.1.4.tar.gz.

File metadata

  • Download URL: iziproxy-0.1.4.tar.gz
  • Upload date:
  • Size: 28.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for iziproxy-0.1.4.tar.gz
Algorithm Hash digest
SHA256 1d714a858a139013987825898b6791c5a9b1385f3f62081e1becd9ad017413f3
MD5 a80174853ee4c9b5678b5fd750ef2ed1
BLAKE2b-256 d0b4281f84c8375224a3e0fab25ab7f3bf6f050c687bb07c5ef722ea04e18fd7

See more details on using hashes here.

File details

Details for the file iziproxy-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: iziproxy-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.11

File hashes

Hashes for iziproxy-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 90b6eea1003b6f5df9d3b401260b0e70c0e313a486281afe929265cb736eb42e
MD5 69bcf486ca1e7bca4f26489dcc1c7d86
BLAKE2b-256 a946e02a1263749dfb271528c4fa1ca6d6ba3c4f0428bec82d8c8a3d0b9ad893

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page