Proksi-IP kasutamine urllib3-ga
Vali HTTP-puhverserverile ProxyManager, vaata urllib3 vastusevälju ning arvesta korduskatsete ja SOCKSi eraldi halduriga.
Väikeseks urllib3-puhverserveri diagnostikaks kasuta ProxyManager väljalülitatud korduskatsetega. See teatab esimesest katsest, kulutamata lisaaega enam mittetöötava kirje uuesti proovimisele. uv-ga hallatavas projektis:
uv add urllib3Asenda dokumentatsiooni lõpp-punkt oma teenuse HTTP-puhverserveri või kirjega HTTP-puhverserverite loendist ja tee päring selle halduri kaudu:
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()
Loe kõigepealt response.status, seejärel vaata response.data. Need on urllib3 väljad; Requestsi stiilis status_code ja text ei asenda neid. Veebisaidi keeldumine võib saabuda töötava puhverserveri kaudu. Erind enne vastust näitab seevastu, et päringut ei õnnestunud lõpule viia.
retries=False on diagnostiline valik, mitte tootmiskeskkonna korduskatsete poliitika. 5-sekundiline ühenduse ja 10-sekundiline lugemise seadistus piiravad oma faase; need ei anna garanteeritud 15-sekundilist kogukestuse tähtaega. DNS ja vastuse edenemine võivad koguooteaega mõjutada.
Näide laadib sisu ette ja puhastab halduri ühenduskogumid lõpus. Sama lõpp-punkti korduvate päringute puhul hoia haldurit töö lõpuni, et ühendusi saaks uuesti kasutada. Üleminek preload_content=False peale muudab elutsüklit: kutsuja peab voogvastuse lugema ja vabastama.
Vali haldur kuulava teenuse järgi. Tavaline PoolManager ei muutu puhverserveriteadlikuks, kui URL on mujal salvestatud; SOCKS kasutab urllib3.contrib.socks.SOCKSProxyManager ning selle valikulisi sõltuvusi. Ülaltoodud kood järgib HTTP ProxyManager teed.