Proxy của văn phòng yêu cầu một tài khoản. Trang web phía sau yêu cầu tài khoản khác. Requests có các đầu vào riêng cho hai lần đăng nhập Basic đó: thông tin xác thực trong URL của proxy và đối số auth của yêu cầu.

from urllib.parse import quote
import requests

proxy_url = (
    f"http://{quote(proxy_user, safe='')}:"
    f"{quote(proxy_password, safe='')}@proxy.example:8080"
)
response = requests.get(
    "https://reports.example/private/",
    proxies={"https": proxy_url},
    auth=(site_user, site_password),
    timeout=(5, 20),
)
response.raise_for_status()

Bốn biến tài khoản đến từ cấu hình thông tin xác thực của ứng dụng. Mã hóa riêng tên người dùng và mật khẩu của proxy giữ nguyên những ký tự như dấu at mà không biến chúng thành dấu phân cách URL.

Khóa https trong từ điển chọn tuyến này cho đích HTTPS. Giá trị của nó vẫn bắt đầu bằng http:// vì đó là giao thức dùng để đến proxy ví dụ này.

Với yêu cầu HTTPS đó, thông tin đăng nhập của proxy thuộc về trao đổi CONNECT. Thông tin đăng nhập của trang thuộc về yêu cầu sau đó qua đường hầm đã thiết lập. Để adapter tự suy ra quyền của proxy từ chính URL của nó giữ thông tin đó ở chặng phù hợp; với trường hợp Basic này không cần lớp xác thực kết hợp.

Mã 407 cho biết thử thách của trung gian. Mã 401 từ trang cho biết thử thách của đích. Dùng phản hồi đó để quyết định tài khoản nào trong hai tài khoản đã cấu hình cần được xử lý.

Bài viết liên quan