Python http.client CONNECT: پروتکل HTTP/1.1 از Python 3.12 به بعد
پیش از اعمال راهحلهای قدیمی HTTP/1.0 CONNECT، پیادهسازی Python و لایه انتقال را بررسی کنید.
این گفته قدیمی که Python همیشه برای CONNECT از HTTP/1.0 استفاده میکند دیگر قاعده کلی امنی نیست. Python 3.12 تونلسازی http.client را به HTTP/1.1 تغییر داد و تولید خودکار سرایند Host را وقتی ارائه نشود افزود.
این تغییر به پیادهسازی مستند کتابخانه استاندارد تعلق دارد. کتابخانه HTTP سطح بالاتر میتواند رفتار تونل را بازنویسی یا بستهبندی کند، بنابراین نسخه آن و نسخه Python را ثبت کنید.
اگر کارگزار واسط تونل را رد کند، تبادل CONNECT را که آن کارخواه واقعاً تولید کرده است بررسی کنید. تغییر نسخه HTTP درخواست مقصد یا افزودن سرایند Host به درخواست وبسایت لزوماً درخواست تونل پیشین را تغییر نمیدهد.
به همین ترتیب، ویرایش فیلدهای خصوصی در نمونه قدیمی مبدل Requests میتواند برنامه را به یک API داخلی منسوخ قفل کند. ترکیب سازگار و پشتیبانیشده کارخواه و محیط اجرا و یکپارچهسازی مستند کارگزار واسط را ترجیح دهید.
دو گفتگو را در گزارش جدا نگه دارید: درخواست HTTP که برای باز کردن تونل استفاده شد، سپس پروتکلی که با مقصد در داخل آن مذاکره شد. آنها میتوانند نسخههای متفاوت داشته باشند و در مراحل مختلف شکست بخورند.