from io import BytesIO
import pycurl

body = BytesIO()
curl = pycurl.Curl()
try:
    curl.setopt(pycurl.URL, "https://api.example/")
    curl.setopt(pycurl.PROXY, "https://proxy.example:8443")
    curl.setopt(pycurl.PROXY_CAINFO, "/path/to/proxy-ca.pem")
    curl.setopt(pycurl.CAINFO, "/path/to/origin-ca.pem")
    curl.setopt(pycurl.CONNECTTIMEOUT, 5)
    curl.setopt(pycurl.TIMEOUT, 30)
    curl.setopt(pycurl.WRITEDATA, body)
    curl.perform()
finally:
    curl.close()

Dùng bản dựng PycURL/libcurl hỗ trợ proxy HTTPS. Đường dẫn bộ CA thể hiện các tập tin cậy dự kiến: PROXY_CAINFO xác minh trung gian; CAINFO xác minh TLS của đích đến. Bỏ qua việc ghi đè rõ ràng khi sự tin cậy hiện có đã bao phủ kết nối đó.

URL trong PROXY mô tả trình lắng nghe của nó. Không cần đoán số PROXYTYPE. Với trình lắng nghe HTTP thông thường, URL vẫn là http:// ngay cả khi đích đến là HTTPS. Trong trường hợp đó, danh sách proxy HTTP cung cấp các điểm cuối ứng viên; bộ TLS của proxy chỉ áp dụng khi trình lắng nghe thực sự dùng TLS.

Cung cấp tài khoản proxy qua PROXYUSERNAME và PROXYPASSWORD khi cần. Giữ nguyên việc xác minh chứng chỉ: tắt xác minh proxy sẽ loại bỏ việc kiểm tra danh tính của trung gian thay vì cài đặt tổ chức phát hành còn thiếu.

Bài viết liên quan