Koristite proxy IP uz urllib3
Odaberite ProxyManager za HTTP proxy, pregledajte urllib3 polja odgovora te uzmite u obzir ponovne pokušaje i poseban SOCKS menadžer.
Za malu urllib3 proxy dijagnostiku koristite ProxyManager s isključenim ponovnim pokušajima. Tako se prijavljuje prvi pokušaj umjesto dužeg ponavljanja unosa koji više ne radi. U projektu kojim upravlja uv:
uv add urllib3Zamijenite dokumentacijsku krajnju tačku HTTP proxyjem iz svoje usluge ili liste HTTP proxyja i pošaljite zahtjev kroz taj menadžer:
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()
Prvo pročitajte response.status, pa pregledajte response.data. To su urllib3 polja; status_code i text iz Requests stila nisu zamjene. Odbijanje web-stranice može stići kroz funkcionalan proxy. Izuzetak prije odgovora, nasuprot tome, označava neuspjeh dovršavanja zahtjeva.
retries=False je dijagnostički izbor, a ne politika ponovnih pokušaja u produkciji. Postavke povezivanja od 5 i čitanja od 10 sekundi ograničavaju vlastite faze; ne sabiraju se u garantovan ukupni rok od 15 sekundi. DNS i napredovanje odgovora mogu utjecati na ukupno čekanje.
Primjer unaprijed učitava tijelo i na kraju prazni menadžerove skupove veza. Za ponovljene zahtjeve kroz istu krajnju tačku zadržite menadžer do kraja posla radi ponovne upotrebe veza. Prelazak na preload_content=False mijenja taj životni ciklus: pozivalac mora pročitati i osloboditi odgovor u toku.
Izaberite menadžer prema slušaocu. Obični PoolManager ne postaje proxy menadžer zato što je URL sačuvan drugdje; SOCKS koristi urllib3.contrib.socks.SOCKSProxyManager i njegove opcionalne zavisnosti. Gornji kod prati HTTP ProxyManager put.