Khẳng định cũ rằng Python luôn gửi HTTP/1.0 cho CONNECT không còn là quy tắc chung an toàn nữa. Python 3.12 đã đổi việc tạo đường hầm của http.client sang HTTP/1.1 và thêm việc tự động tạo tiêu đề Host khi không được cung cấp.

Thay đổi đó thuộc về cách triển khai thư viện chuẩn đã được ghi tài liệu. Một thư viện HTTP cấp cao hơn có thể ghi đè hoặc bao bọc hành vi đường hầm, vì vậy hãy ghi lại phiên bản của nó cùng với phiên bản Python.

Nếu proxy từ chối đường hầm, hãy kiểm tra trao đổi CONNECT mà máy khách đó thực sự tạo ra. Việc thay đổi phiên bản HTTP của yêu cầu đích hoặc thêm tiêu đề Host vào yêu cầu trang web không nhất thiết thay đổi yêu cầu đường hầm trước đó.

Tương tự, chỉnh sửa các trường riêng trong một ví dụ bộ điều hợp Requests cũ có thể khóa ứng dụng vào một API nội bộ đã lỗi thời. Hãy ưu tiên sự kết hợp tương thích, được hỗ trợ giữa máy khách và môi trường chạy, cùng một tích hợp proxy được ghi tài liệu.

Hãy tách hai cuộc trao đổi trong báo cáo: yêu cầu HTTP dùng để mở đường hầm, sau đó là giao thức đã thương lượng với đích bên trong nó. Chúng có thể dùng phiên bản khác nhau và thất bại ở các giai đoạn khác nhau.

Bài viết liên quan