Përdorni një IP proxy me urllib3
Zgjidhni ProxyManager për proxy HTTP, shikoni fushat e përgjigjes urllib3 dhe merrni parasysh riprovimet dhe menaxherin e veçantë SOCKS.
Për një diagnostikim të vogël proxy me urllib3, përdorni ProxyManager me riprovimet të çaktivizuara. Kjo raporton përpjekjen e parë në vend që të humbasë kohë me një hyrje që ka pushuar së punuari. Në një projekt të menaxhuar me uv:
uv add urllib3Zëvendësoni pikën fundore të dokumentimit me një proxy HTTP nga shërbimi juaj ose lista e proxy-ve HTTP dhe ekzekutoni kërkesën përmes atij menaxheri:
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()
Lexoni fillimisht response.status, pastaj shqyrtoni response.data. Këto janë fushat e urllib3; status_code dhe text të stilit Requests nuk janë zëvendësime. Refuzimi i faqes mund të vijë përmes një proxy funksional. Një përjashtim para përgjigjes tregon, përkundrazi, dështim në përfundimin e kërkesës.
retries=False është zgjedhje diagnostikimi, jo politikë riprovimi për prodhim. Cilësimet 5 sekonda për lidhjen dhe 10 sekonda për leximin kufizojnë fazat e tyre; nuk formojnë një afat të përgjithshëm të garantuar prej 15 sekondash. DNS dhe përparimi i përgjigjes mund të ndikojnë në pritjen totale.
Shembulli e ngarkon paraprakisht trupin dhe pastron në fund grupet e lidhjeve të menaxherit. Për kërkesa të përsëritura përmes së njëjtës pikë, mbajeni menaxherin deri në fund të punës që lidhjet të ripërdoren. Kalimi në preload_content=False ndryshon ciklin: thirrësi duhet të lexojë dhe lirojë përgjigjen në rrjedhë.
Zgjidhni menaxherin sipas shërbimit që dëgjon. Një PoolManager i zakonshëm nuk fillon të përdorë proxy sepse një URL ruhet diku tjetër; SOCKS përdor urllib3.contrib.socks.SOCKSProxyManager dhe varësitë e tij opsionale. Kodi më lart ndjek rrugën HTTP ProxyManager.