Một trang web cần proxy khác với phần còn lại của các yêu cầu HTTPS. Requests có thể diễn đạt lựa chọn đó ngay trong từ điển proxy:

routes = {
    "https://reports.example": "http://reports-proxy.example:8080",
    "https": "http://default-proxy.example:8080",
}
response = requests.get(
    "https://reports.example/monthly",
    proxies=routes,
    timeout=(5, 20),
)
response.raise_for_status()

Với đích đó, khóa riêng cho tên máy chủ sẽ thắng. Một tên máy chủ HTTPS khác dùng mục áp dụng cho toàn bộ lược đồ. Các giá trị mô tả kết nối proxy, nên một đích HTTPS vẫn có thể ánh xạ đúng sang URL proxy HTTP. Khi đây là các tuyến trang công khai được phép không dùng tài khoản proxy, danh sách proxy HTTP có thể cung cấp ứng viên cho các giá trị đó; hãy giữ mỗi quy tắc đích thật rõ ràng.

Khớp tên máy chủ, không phải URL tài nguyên

Trong Requests 2.32.5, khóa cụ thể được tạo từ lược đồ của đích và tên máy chủ đã phân tích. Nó không chứa đường dẫn, truy vấn hay cổng.

Thêm /monthly vào khóa từ điển sẽ không giới hạn quy tắc vào đường dẫn đó. Tương tự, https://reports.example:8443 không phải khóa riêng cho cổng mà bộ chọn này nhận diện. Quy tắc tên máy chủ cũng áp dụng khi URL đích dùng cổng khác.

Không có mở rộng ký tự đại diện trong tra cứu này. Một quy tắc cho reports.example không tự động bao phủ miền con. Hãy dùng một quyết định định tuyến rõ ràng bên ngoài từ điển đơn giản này khi chính sách cần khớp đường dẫn, cổng hoặc hậu tố.

Biết phương án dự phòng nào đến tiếp theo

Phần thực thi kiểm tra khóa theo thứ tự này: scheme://hostname, scheme, all://hostname, rồi all. Vì vậy mục HTTPS toàn lược đồ được ưu tiên hơn mục tên máy chủ cho mọi lược đồ. Hãy đặt quy tắc tên máy chủ riêng cho lược đồ lên đầu trong thiết kế của bạn khi đó là ngoại lệ mong muốn.

Cũng cần tính đến cách Session của bạn hợp nhất giá trị mặc định và cài đặt bắt nguồn từ môi trường. Truyền hai mục rõ ràng này cùng yêu cầu làm rõ các tuyến dự định của chúng, nhưng không định nghĩa chính sách cho bất kỳ lược đồ đích nào khác.

Một chuyển hướng có thể đưa vào tên máy chủ khác, và việc chọn proxy cũng liên quan đến đích mới đó. Hãy đọc quy tắc như một quyết định về từng URL được yêu cầu, chứ không phải một tuyến cố định gắn với trang đầu tiên.

Bài viết liên quan