له urllib3 سره پراکسي IP وکاروئ
د HTTP پراکسي لپاره ProxyManager وټاکئ، د 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 برخې دي؛ د Requests په بڼه status_code او text یې بدیل نه دي. د وېبپاڼې رد د کارکوونکې پراکسي له لارې راتلای شي. خو له ځواب مخکې استثنا د غوښتنې نه بشپړېدل ښيي.
retries=False د تشخیص غوراوی دی، نه د تولید چاپېریال د بیا هڅو تګلاره. د اړیکې 5 ثانیې او د لوستلو 10 ثانیې خپل پړاوونه محدودوي؛ دا د ټول تېر وخت لپاره د 15 ثانیو تضمین شوی حد نه جوړوي. DNS او د ځواب پرمختګ پر ټول انتظار اغېز کولای شي.
بېلګه متن مخکې باروي او په پای کې د مدیر د اړیکو زېرمې پاکوي. د هماغه پای ټکي د تکراري غوښتنو لپاره مدیر د کار تر پایه وساتئ، څو اړیکې بیا وکارول شي. preload_content=False ته تلل د ژوند پړاو بدلوي: بلونکی باید جریاني ځواب ولولي او ازاد یې کړي.
مدیر د اورېدونکي خدمت سره برابر وټاکئ. عادي PoolManager یوازې ځکه د پراکسي وړ نه شي چې URL بل ځای ساتل شوی وي؛ SOCKS له urllib3.contrib.socks.SOCKSProxyManager او اختیاري تړاوونو کار اخلي. پورته کوډ د HTTP ProxyManager لاره تعقیبوي.