لپ‌تاپ و فرایند میزبانی‌شده را در دو لایه متفاوت مقایسه کنید:

لایهپرسش
Content-Encodingآیا کلاینت می‌تواند بایت‌های gzip/deflate/Brotli بازگشتی را از حالت فشرده خارج کند؟
Charsetبایت‌های خارج‌شده از فشرده‌سازی چگونه متن می‌شوند؟

Requests معمولاً gzip/deflate را مدیریت می‌کند؛ Brotli به کتابخانه نصب‌شده و پشتیبانی‌شده نیاز دارد. Accept-Encoding که دستی کپی شده ممکن است br را اعلام کند در حالی که این محیط نمی‌تواند رمزگشایی‌اش کند. انتخاب متن UTF-8 باعث خارج‌شدن Brotli از فشرده‌سازی نمی‌شود.

هنگامی که مذاکره عمداً محدود می‌شود:

response = session.get(
    url,
    proxies={"https": "http://proxy.example:8080"},
    headers={"Accept-Encoding": "gzip, deflate"},
    timeout=30,
)
response.raise_for_status()

از همان Session، نشانی HTTPS و سرآیندها/احراز هویت لازم استفاده کنید. Accept-Encoding خروجی، Content-Encoding ورودی و پشتیبانی بسته‌ها را روی هر دو ماشین مقایسه کنید؛ یک واسطه تغییردهنده نیز می‌تواند فراداده کهنه بدهد. مقایسه جداگانه یک صفحه عمومی می‌تواند فهرست پروکسی HTTP را برای نشانی پروکسی خود به کار برد آنجا که واسطه‌های عمومی مجازند، بدون اعتبارنامه پروکسی موروثی، سرآیند حساب کپی‌شده یا داده بدنه خصوصی.

در غیر این صورت مذاکره عادی کلاینت را ترجیح دهید. رابط‌های راحت content/text در Requests کدگذاری پشتیبانی‌شده را رمزگشایی می‌کنند، پس فقط به این دلیل که سرآیند نامش را می‌برد خروجی آن‌ها را دوباره از فشرده‌سازی خارج نکنید.

مقالات مرتبط