נוצן אַ פּראָקסי־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־וועג.