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 каталарын прокси келишимине ылайык иштетиңиз: бул мисал аларды өткөрүүнүн ордуна ыргытат.