Comment utiliser un proxy dans Python Requests (HTTP/HTTPS et pooling de Session)
Mis à jour:
La bibliothèque Python requests prend en charge les proxys authentifiés de VinaProxy via un dictionnaire proxies associant les clés 'http' et 'https' à http://user:pass@ip:port. Lier ce dictionnaire à un objet persistant requests.Session() réutilise les sockets TCP sous-jacents pour un scraping rapide et économe en ressources.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40 000 ₫
- 5+ IPs35 000 ₫
- 10+ IPs25 000 ₫
- 20+ IPs25 000 ₫
- 50+ IPs25 000 ₫
- 100+ IPs25 000 ₫
- 200+ IPs25 000 ₫
- 500+ IPs25 000 ₫
- 1000+ IPs22 000 ₫
- 2000+ IPs20 000 ₫
- 1 IP40 000 ₫
- 5+ IPs35 000 ₫
- 10+ IPs25 000 ₫
- 20+ IPs25 000 ₫
- 50+ IPs25 000 ₫
- 100+ IPs25 000 ₫
- 200+ IPs25 000 ₫
- 500+ IPs25 000 ₫
- 1000+ IPs22 000 ₫
- 2000+ IPs20 000 ₫
Formatage du dictionnaire proxies et réutilisation des Sessions
Appeler requests.get() sur chaque URL recrée une négociation TCP et TLS complète à chaque requête. Rattacher votre proxy à session = requests.Session() maintient le tunnel de proxy ouvert entre les requêtes consécutives.
| Paramètre Requests | Syntaxe recommandée | Rôle technique |
|---|---|---|
Clé 'http' | 'http://user:pass@ip:port' | Achemine les requêtes HTTP standard via le proxy |
Clé 'https' | 'http://user:pass@ip:port' | Utilise le protocole http:// pour que urllib3 établisse un tunnel HTTP CONNECT pour TLS |
Tuple timeout | timeout=(5, 15) | 5 s de connexion et 15 s de lecture pour éviter les blocages de threads |
| Rotation du pool | itertools.cycle(proxy_list) | Répartit équitablement les requêtes sur votre pool d'IP statiques |
Éviter les erreurs courantes liées à urllib3 et ProxyError
- Utilisez impérativement
http://(et nonhttps://) comme schéma d'URL de proxy pour les deux clés'http'et'https', sauf si le port exige expressément du TLS-over-TLS - Encodez les caractères spéciaux des mots de passe à l'aide de
urllib.parse.quote(password, safe='') - Une erreur
407 Proxy Authentication Requiredsignifie que l'identifiant ou le mot de passe dans l'URL ne correspond pas à vos identifiants VinaProxy - Fonctionne de manière identique avec
httpx.Client(proxy='http://user:pass@ip:port')etaiohttpviasession.get(url, proxy=...)
Étape par étape
- 1
Convertir ip:port:user:pass en syntaxe URL
Utilisez notre convertisseur de format proxy pour transformer votre liste VinaProxy en chaînes
http://user:pass@ip:port. - 2
Définir le dictionnaire proxies
Déclarez
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}dans votre script Python. - 3
Associer à une instance requests.Session()
Initialisez
s = requests.Session()et appliquezs.proxies.update(proxies)pour activer le poolingKeep-Alive. - 4
Valider l'IP de sortie par une requête de test
Exécutez
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())pour vérifier l'IP du proxy.
Questions fréquentes
Pourquoi la clé 'https' prend-elle la valeur 'http://user:pass@ip:port' ?
Le préfixe http:// indique à urllib3 le protocole pour joindre le serveur proxy (via le tunnel HTTP CONNECT), tandis que votre trafic de bout en bout vers le site https:// reste intégralement chiffré en TLS.
Comment alterner 25 proxys statiques d'une requête à l'autre en Python ?
Chargez vos 25 URL dans pool = itertools.cycle(PROXIES) et passez proxies={'http': p, 'https': p} à chaque appel avec une limitation de fréquence raisonnable par IP.
VinaProxy facture-t-il la bande passante sur les scripts de scraping Python ?
Non. Tous les forfaits IPv4 dédiés et ISP statiques incluent un trafic mensuel illimité.
Montez un pool de proxys de scraping Python avec trafic illimité
Proxys IPv4 dédiés et ISP statiques instantanés dans 7 pays clés.
Acheter des proxys Python