Použite IP proxy s urllib3
Pre HTTP proxy zvoľte ProxyManager, skontrolujte polia odpovede urllib3 a zohľadnite opakovanie aj samostatného správcu SOCKS.
Na malú diagnostiku proxy v urllib3 použite ProxyManager s vypnutým opakovaním. Zobrazí prvý pokus namiesto dlhého opakovania položky, ktorá prestala fungovať. V projekte spravovanom uv:
uv add urllib3Dokumentačný koncový bod nahraďte HTTP proxy svojej služby alebo položkou zo zoznamu HTTP proxy a požiadavku vykonajte cez tohto správcu:
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()
Najprv čítajte response.status a potom skontrolujte response.data. To sú polia urllib3; status_code a text v štýle Requests nie sú náhradou. Odmietnutie webu môže prísť cez fungujúcu proxy. Výnimka pred odpoveďou naopak znamená, že sa požiadavku nepodarilo dokončiť.
retries=False je diagnostická voľba, nie produkčná politika opakovania. Nastavenia 5 sekúnd pre pripojenie a 10 sekúnd pre čítanie obmedzujú vlastné fázy; nedávajú spolu zaručený celkový limit 15 sekúnd. DNS a priebeh odpovede môžu ovplyvniť celkové čakanie.
Príklad vopred načíta telo a nakoniec vyčistí fondy spojení správcu. Pri opakovaných požiadavkách cez rovnaký bod ponechajte správcu do konca práce na opätovné použitie spojení. Prechod na preload_content=False mení životný cyklus: volajúci musí prúdovú odpoveď prečítať a uvoľniť.
Zvoľte správcu podľa počúvajúcej služby. Bežný PoolManager nezačne používať proxy len preto, že je URL uložené inde; SOCKS používa urllib3.contrib.socks.SOCKSProxyManager a jeho voliteľné závislosti. Vyššie uvedený kód používa cestu HTTP cez ProxyManager.