د 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 لاره تعقیبوي.

اړوندې مقالې