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
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
-
Configuration répétitive : Plus besoin de réécrire la même logique de proxy dans chaque projet
-
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", ...}) -
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
-
Authentification répétitive : Fini la saisie répétée des identifiants à chaque exécution
-
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é) :
- Fichier de configuration YAML (si fourni)
- Variables d'environnement (
HTTP_PROXY,HTTPS_PROXY, etc.) - Fichiers PAC (Proxy Auto-Configuration)
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iziproxy-0.1.1.tar.gz.
File metadata
- Download URL: iziproxy-0.1.1.tar.gz
- Upload date:
- Size: 27.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
27343b9af5a73dd87010f37640a53dbaf1161d969cbfc5674cdffbcf0fc9cae6
|
|
| MD5 |
c310ac7a1947c54562450e1710e187f3
|
|
| BLAKE2b-256 |
bdb043319885e3faa7d973c581b59f3f2cc03af7827d9706b2f6d5a5ea911b33
|
File details
Details for the file iziproxy-0.1.1-py3-none-any.whl.
File metadata
- Download URL: iziproxy-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee85c45c85f6acc3e41c2d6e48d3877fdf41df1a2f89da272605c79ad1249963
|
|
| MD5 |
077a0e82849c4de7929e7cf980539c81
|
|
| BLAKE2b-256 |
0c908b5a5910381e6cf6b6965a2a0a3307f21b5780a477a3f97d891e9be5361d
|