Proxy-IP:n käyttäminen urllib3:n kanssa
Valitse HTTP-välityspalvelimelle ProxyManager, tarkista urllib3:n vastauskentät ja huomioi uudelleenyritykset sekä erillinen SOCKS-hallinta.
Pieneen urllib3-välityspalvelindiagnoosiin käytä ProxyManager-luokkaa uudelleenyritykset poistettuina. Se raportoi ensimmäisen yrityksen tuhlaamatta lisäaikaa jo toimimattoman merkinnän yrittämiseen. uv:n hallitsemassa projektissa:
uv add urllib3Korvaa dokumentaation päätepiste palvelusi HTTP-välityspalvelimella tai merkinnällä HTTP-välityspalvelinten luettelosta ja tee pyyntö tämän hallintaolion kautta:
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()
Lue ensin response.status ja tarkista sitten response.data. Nämä ovat urllib3:n kenttiä; Requestsin status_code ja text eivät korvaa niitä. Sivuston torjunta voi tulla toimivan välityspalvelimen kautta. Poikkeus ennen vastausta puolestaan kertoo, ettei pyyntöä saatu valmiiksi.
retries=False on diagnostiikkavalinta, ei tuotannon uudelleenyrityskäytäntö. 5 sekunnin yhteys- ja 10 sekunnin lukuasetukset rajoittavat omia vaiheitaan; ne eivät muodosta taattua 15 sekunnin kokonaisaikarajaa. DNS ja vastauksen eteneminen voivat vaikuttaa kokonaisodotukseen.
Esimerkki esilataa sisällön ja tyhjentää hallintaolion yhteysvarannot lopuksi. Kun samaan päätepisteeseen tehdään toistuvia pyyntöjä, säilytä olio työn loppuun yhteyksien uudelleenkäyttöä varten. Siirtyminen asetukseen preload_content=False muuttaa elinkaarta: kutsujan on luettava ja vapautettava suoratoistovastaus.
Valitse kuuntelevaa palvelua vastaava hallintaolio. Tavallinen PoolManager ei ala käyttää välityspalvelinta siksi, että URL on tallennettu muualle; SOCKS käyttää luokkaa urllib3.contrib.socks.SOCKSProxyManager ja sen valinnaisia riippuvuuksia. Yllä oleva koodi käyttää HTTP-ProxyManager-reittiä.