Користите прокси IP уз urllib3
Изаберите ProxyManager за HTTP прокси, прегледајте поља одговора urllib3 и узмите у обзир поновне покушаје и посебан SOCKS менаџер.
За малу urllib3 прокси дијагностику користите ProxyManager са искљученим поновним покушајима. Тако се пријављује први покушај уместо дужег понављања уноса који више не ради. У пројекту којим управља uv:
uv add urllib3Замените документацијску крајњу тачку HTTP проксијем из своје услуге или листе HTTP проксија и пошаљите захтев кроз тај менаџер:
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()
Прво прочитајте response.status, па прегледајте response.data. То су urllib3 поља; status_code и text из Requests стила нису замене. Одбијање сајта може стићи кроз функционалан прокси. Изузетак пре одговора, насупрот томе, означава неуспех довршавања захтева.
retries=False је дијагностички избор, а не политика поновних покушаја у продукцији. Поставке повезивања од 5 и читања од 10 секунди ограничавају своје фазе; не сабирају се у гарантован укупан рок од 15 секунди. DNS и напредовање одговора могу утицати на укупно чекање.
Пример унапред учитава тело и на крају празни менаџерове скупове веза. За поновљене захтеве кроз исту крајњу тачку задржите менаџер до краја посла ради поновне употребе веза. Прелазак на preload_content=False мења животни циклус: позивалац мора прочитати и ослободити одговор у току.
Изаберите менаџер према услузи која слуша. Обични PoolManager не постаје прокси менаџер зато што је URL сачуван другде; SOCKS користи urllib3.contrib.socks.SOCKSProxyManager и његове опционе зависности. Горњи код прати HTTP ProxyManager пут.