Come usare un proxy in Python Requests (HTTP/HTTPS e Session pooling)
Aggiornato:
La libreria requests di Python supporta i proxy autenticati di VinaProxy tramite un dizionario proxies che mappa entrambi gli schemi 'http' e 'https' a http://user:pass@ip:port. Associare tale dizionario a un'istanza permanente requests.Session() riutilizza i socket TCP sottostanti per uno scraping web veloce e leggero.
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}- 1 IP40.000 VND
- 5+ IP35.000 VND
- 10+ IP25.000 VND
- 20+ IP25.000 VND
- 50+ IP25.000 VND
- 100+ IP25.000 VND
- 200+ IP25.000 VND
- 500+ IP25.000 VND
- 1000+ IP22.000 VND
- 2000+ IP20.000 VND
- 1 IP40.000 VND
- 5+ IP35.000 VND
- 10+ IP25.000 VND
- 20+ IP25.000 VND
- 50+ IP25.000 VND
- 100+ IP25.000 VND
- 200+ IP25.000 VND
- 500+ IP25.000 VND
- 1000+ IP22.000 VND
- 2000+ IP20.000 VND
Formattazione del dizionario proxies e riuso delle Session
Invocare requests.get() per ogni singolo URL crea una nuova connessione TCP e una negoziazione TLS a ogni chiamata. Assegnare il proxy a session = requests.Session() mantiene aperto il tunnel TCP del proxy tra richieste consecutive.
| Parametro Requests | Sintassi consigliata | Scopo tecnico |
|---|---|---|
Chiave 'http' | 'http://user:pass@ip:port' | Instrada le normali richieste HTTP attraverso il proxy |
Chiave 'https' | 'http://user:pass@ip:port' | Usa lo schema http:// in modo che urllib3 apra un tunnel HTTP CONNECT per TLS |
Tupla timeout | timeout=(5, 15) | 5 s connessione e 15 s lettura per evitare blocchi nei thread di lavoro |
| Rotazione del pool | itertools.cycle(proxy_list) | Distribuisce equamente le richieste sul pool di IP statici dedicati |
Evitare i tipici errori di urllib3 e ProxyError
- Usa sempre
http://(nonhttps://) come schema URL per entrambe le chiavi'http'e'https', salvo nel raro caso in cui la porta richieda TLS-over-TLS - Effettua la codifica percentuale di eventuali caratteri speciali nelle password con
urllib.parse.quote(password, safe='') - L'errore
407 Proxy Authentication Requiredsegnala che le credenziali contenute nell'URL non corrispondono a quelle della tua dashboard - Funziona allo stesso modo con
httpx.Client(proxy='http://user:pass@ip:port')e inaiohttpconsession.get(url, proxy=...)
Passo dopo passo
- 1
Convertire ip:port:user:pass in formato URL
Usa il nostro convertitore di formato proxy per trasformare il tuo elenco VinaProxy in stringhe
http://user:pass@ip:port. - 2
Definire il dizionario proxies
Dichiara
proxies = {'http': 'http://user:pass@ip:port', 'https': 'http://user:pass@ip:port'}nel tuo script Python. - 3
Collegare all'istanza requests.Session()
Inizializza
s = requests.Session()ed eseguis.proxies.update(proxies)per attivare il poolKeep-Alive. - 4
Verificare l'IP di uscita con una richiesta di test
Esegui
print(s.get('https://vinaproxy.com/api/my-ip', timeout=10).json())per confermare l'IP attivo.
Domande frequenti
Perché anche per la chiave 'https' si usa 'http://user:pass@ip:port'?
Il prefisso http:// indica a urllib3 come connettersi al server proxy stesso (tramite HTTP CONNECT), mentre il traffico end-to-end verso il sito https:// rimane completamente cifrato con TLS.
Come ruotare 25 proxy statici nelle richieste con Python?
Carica i tuoi 25 proxy in pool = itertools.cycle(PROXIES) e passa proxies={'http': p, 'https': p} per ogni richiesta applicando un opportuno rate limiting per IP.
VinaProxy applica limiti sul consumo di banda negli script Python?
No. Tutti i piani IPv4 dedicati e ISP statici offrono traffico dati illimitato.
Crea un pool di proxy per lo scraping Python a traffico illimitato
Proxy IPv4 dedicati e ISP statici subito pronti all'uso in 7 paesi.
Acquista proxy per Python