ווייטערפירן gzip בייטן מיט די קעפלעך וואס באשרייבן זיי
קלייב אפיצירטע אדער דעקאדירטע פּעילוידס אין א פּראָקסי באזירט אויף Requests, דערנאך גיב דער אראפּווייניקער ענטפֿער פּאַסיקע content קעפּלעך און איר אייגענע פֿרײמינג.
אויב Requests האט שוין דעקומפּרעסירט א קערפּער, פֿרעגט ווייטערפירן אים מיט Content-Encoding: gzip דעם קומענדיקן קליענט אים נאכאמאל דעקומפּרעסירן. באַשליס וועלכע פּעילויד-פֿאָרשטעלונג דער פּראָקסי שיקט איידער דו קאפּירסט די קעפּלעך.
| געשיקטער פּעילויד | content קעפּלעך |
|---|---|
| אָריגינעלע אפיצירטע בייטן | האַלט די אָנווענדלעכע קאָדירונג און די פּינקטלעכע פּעילויד-לענג |
| דעקאדירטע בייטן | אַוועקנעם די דעקאדירטע קאָדירונג; אַוועקנעם אָדער רעכן איבער די פּאַסיקע לענג |
פֿאַר אפיצירטע פּעילויד-בייטן לייענט דער שטיקל דעם רויערן שטראָם פֿון urllib3 אָן content-דעקאָדירונג:
with requests.get(url, stream=True, timeout=(5, 30)) as upstream:
upstream.raise_for_status()
for block in upstream.raw.stream(65536, decode_content=False):
downstream.write(block)downstream איז דער עקזיסטירנדיקער ענטפֿער-אויסגאַנג. זיין סטאַטוס און קעפּלעך מוזן שוין נאָכגיין דער אויסגעקליבענער פּאָליטיק; דער שטיקל פֿירט נישט אויס אַ פֿולן פּראָקסי-סערווער.
טראַנספֿער-פֿרײמינג איז באַזונדער פֿון gzip content-קאָדירונג. די אויבערשטע HTTP ביבליאָטעק האָט שוין באַהאַנדלט די פֿרײמינג, אַרײַנגערעכנט אַוועקנעמען שטיקער, דעריבער קאָפּיר נישט Transfer-Encoding בלינד. דער אונטערשטער סערווער פֿרײמט זיין אייגענע ענטפֿער אַפֿילו ווען דער פּעילויד בלײַבט gzip-אפיצירט.
response.text נאָכגעפֿאָלגט פֿון UTF-8 קאָדירונג ענדערט אויך די פֿאָרשטעלונג און קען נישט אָפּהיטן אַרביטראַרישע בינערע דאַטן. פֿאַרמאַך אָדער פֿאַרניץ דעם אויבערשטן ענטפֿער אויף יעדן וועג, און באַהאַנדל HTTP-טעותן לויט דעם פּראָקסי-קאָנטראַקט: דאָס ביישפּיל וואַרפֿט זיי אַנשטאָט זיי ווייטערפירן.