Nếu session.proxies trỏ tới một điểm cuối nhưng tập lệnh dùng proxy của shell, gán lại cùng từ điển không giải quyết xung đột. Requests có thể hợp nhất cấu hình proxy môi trường với ưu tiên cao hơn mặc định Session. Hãy chọn Session có tiếp tục khám phá cấu hình từ môi trường không.

Giữ khám phá môi trường, cung cấp tuyến trên yêu cầu

Truyền giá trị tường minh cho từng lần gọi, như Requests khuyến nghị để tránh xung đột Session với môi trường:

proxies = {
    "http": "http://127.0.0.1:8080",
    "https": "http://127.0.0.1:8080",
}

with requests.Session() as session:
    response = session.get(
        "https://example.com/",
        proxies=proxies,
        timeout=(5, 15),
    )
    response.raise_for_status()

Thay điểm lắng nghe cục bộ bằng của bạn. Nếu so sánh điểm cuối HTTP công khai, lấy ứng viên từ danh sách proxy HTTP trong khi giữ nguyên chính sách Session. Việc này kiểm soát các mục ánh xạ được cung cấp; hãy chủ động chọn cho các lược đồ hoặc máy chủ khác mà ứng dụng dùng. Dịch vụ, IDE, vùng chứa hoặc trình chạy CI có thể kế thừa môi trường khác terminal.

Để Session tự quản lý cấu hình

Nếu ứng dụng không nên khám phá proxy từ môi trường, hãy đặt chính sách trước yêu cầu đầu tiên:

with requests.Session() as session:
    session.trust_env = False
    session.proxies = {
        "http": "http://127.0.0.1:8080",
        "https": "http://127.0.0.1:8080",
    }
    response = session.get(
        "https://example.com/",
        timeout=(5, 15),
    )
    response.raise_for_status()

trust_env=False cũng ảnh hưởng đến cấu hình chứng chỉ liên quan môi trường và xác thực netrc tự động. Cân nhắc các phụ thuộc đó trước khi chọn. Với bộ chứng chỉ CA riêng được phê duyệt, có thể truyền đường dẫn tường minh:

response = session.get(
    "https://example.com/",
    timeout=(5, 15),
    verify="/path/to/approved-ca-bundle.pem",
)

Dùng bộ thực sự được phê duyệt và giữ xác minh bật. Duy trì Session riêng cho từng chính sách định tuyến thay vì sửa một Session khi tác vụ khác đang dùng nó.

Nếu cả hai cách không giải thích được tuyến ứng dụng, so sánh Session cô lập với ứng dụng trong cùng môi trường chạy và tới cùng đích vô hại. Ghi biến proxy hiện có, giá trị trust_env và lần gọi có truyền proxies không; không đưa URL chứa thông tin đăng nhập vào nhật ký chia sẻ. Thành công khi cô lập hướng lần kiểm tra tiếp theo vào tạo Session, adapter, luồng yêu cầu đã chuẩn bị hoặc lớp truyền tải tùy chỉnh. Kiểm tra môi trường bằng curl không xác định hành vi hợp nhất của chính Requests.

Bài viết liên quan