Notaðu proxy-IP með urllib3
Veldu ProxyManager fyrir HTTP-milliþjón, skoðaðu svarreiti urllib3 og taktu tillit til endurtilrauna og sérstaks SOCKS-stjóra.
Fyrir litla urllib3-milliþjónsgreiningu skaltu nota ProxyManager með endurtilraunir óvirkar. Þá er fyrsta tilraun birt í stað þess að eyða meiri tíma í færslu sem er hætt að virka. Í verkefni stýrðu með uv:
uv add urllib3Skiptu skjalaendapunktinum út fyrir HTTP-milliþjón frá þjónustunni þinni eða listanum yfir HTTP-milliþjóna og keyrðu beiðnina í gegnum þann stjóra:
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()
Lestu response.status fyrst og skoðaðu síðan response.data. Þetta eru reitir urllib3; status_code og text úr Requests koma ekki í staðinn. Höfnun vefsíðu getur borist í gegnum virkan milliþjón. Undantekning fyrir svar sýnir hins vegar að ekki tókst að ljúka beiðninni.
retries=False er greiningarval, ekki endurtilraunastefna fyrir rekstur. 5 sekúndna tengi- og 10 sekúndna lesstillingar takmarka sína eigin áfanga; þær mynda ekki tryggð 15 sekúndna heildartímamörk. DNS og framvinda svarsins geta haft áhrif á heildarbiðina.
Dæmið forhleður meginmálið og hreinsar tengisöfn stjórans í lokin. Fyrir endurteknar beiðnir um sama endapunkt skaltu halda stjóranum til verkloka svo tengingar nýtist aftur. Að skipta í preload_content=False breytir lífsferlinum: kallandinn verður að lesa og losa streymissvarið.
Veldu stjóra sem passar við hlustandi þjónustuna. Venjulegur PoolManager verður ekki meðvitaður um milliþjón þótt URL sé geymt annars staðar; SOCKS notar urllib3.contrib.socks.SOCKSProxyManager og valfrjálsar háðir þess. Kóðinn hér að ofan fylgir HTTP-ProxyManager-leiðinni.