Koristite proxy IP s urllib3
Odaberite ProxyManager za HTTP proxy, pregledajte polja odgovora urllib3 te uzmite u obzir ponovne pokušaje i zaseban SOCKS upravitelj.
Za malu dijagnostiku proxyja u urllib3 koristite ProxyManager s isključenim ponovnim pokušajima. Time se prikazuje prvi pokušaj umjesto duljeg ponavljanja unosa koji je prestao raditi. U projektu kojim upravlja uv:
uv add urllib3Zamijenite dokumentacijsku krajnju točku HTTP proxyjem iz svoje usluge ili popisa HTTP proxyja i izvršite zahtjev putem tog upravitelja:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
Najprije pročitajte response.status, a zatim pregledajte response.data. To su polja urllib3; status_code i text iz Requestsa nisu zamjene. Odbijanje stranice može stići kroz funkcionalan proxy. Iznimka prije odgovora pak znači da zahtjev nije dovršen.
retries=False je dijagnostički izbor, a ne produkcijska politika ponovnih pokušaja. Postavke povezivanja od 5 i čitanja od 10 sekundi ograničavaju svoje faze; ne zbrajaju se u zajamčeni ukupni rok od 15 sekundi. DNS i napredovanje odgovora mogu utjecati na ukupno čekanje.
Primjer unaprijed učitava tijelo i na kraju prazni skupove veza upravitelja. Za ponovljene zahtjeve kroz istu krajnju točku zadržite upravitelj do kraja rada radi ponovne upotrebe veza. Prelazak na preload_content=False mijenja životni ciklus: pozivatelj mora pročitati i osloboditi odgovor koji se prenosi u toku.
Odaberite upravitelj prema usluzi koja sluša. Obični PoolManager ne počinje koristiti proxy jer je URL spremljen drugdje; SOCKS koristi urllib3.contrib.socks.SOCKSProxyManager i njegove neobavezne ovisnosti. Gornji kod prati HTTP ProxyManager put.