Gunakan proxy= bila satu endpoint harus menangani permintaan klien. Gunakan mounts= bila skema tujuan memerlukan rute berbeda. Contoh ini memakai antarmuka HTTPX tersebut; proyek dengan API lama proxies= perlu konfigurasi yang sesuai versinya.

Satu endpoint

import httpx

timeout = httpx.Timeout(15.0, connect=5.0)

with httpx.Client(
    proxy="http://127.0.0.1:8080",
    trust_env=False,
    timeout=timeout,
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Ganti listener lokal dengan proxy HTTP yang berjalan. Kandidat dari daftar proxy HTTP tetap perlu diuji terhadap tujuan Anda. Target HTTPS dapat memakai endpoint http:// ini melalui CONNECT. Mengubah skema ke https:// meminta TLS ke proxy itu sendiri, yang harus didukung listener dan klien.

Rute terpisah menurut skema tujuan

import httpx

mounts = {
    "http://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8080",
        trust_env=False,
    ),
    "https://": httpx.HTTPTransport(
        proxy="http://127.0.0.1:8081",
        trust_env=False,
    ),
}

with httpx.Client(
    mounts=mounts,
    trust_env=False,
    timeout=httpx.Timeout(15.0, connect=5.0),
) as client:
    response = client.get("https://example.com/")
    response.raise_for_status()
    print(response.status_code)

Kunci mount cocok dengan URL target. Target HTTP di sini memilih port 8080; HTTPS memilih 8081. Nilai proxy menjelaskan protokol listener itu sendiri, jadi mount HTTPS dapat berisi proxy http:// dengan benar. Masukkan endpoint Anda dan periksa kedua skema tujuan.

Kedua resep menetapkan trust_env=False pada klien dan, bila diberikan, pada transport. Jika tidak, HTTPX secara bawaan membaca variabel lingkungan proxy dan sertifikat. Bila penerapan bergantung padanya, biarkan deteksi aktif atau atur rute serta kepercayaan yang diperlukan secara eksplisit. Untuk kepercayaan privat, gunakan konteks TLS dan konfigurasi CA yang didukung versi HTTPX Anda; biarkan verifikasi tujuan aktif. Kepercayaan proxy HTTPS dapat terpisah dari kepercayaan tujuan.

httpx.Timeout(15.0, connect=5.0) mengganti batas waktu koneksi dan memberikan nilai bawaan bagi komponen terkonfigurasi lainnya. Baca, tulis, dan antrean pool memiliki batas terpisah; lima belas detik bukan tenggat total waktu nyata. Timeout pool bisa berarti pekerjaan lain menahan koneksi yang tersedia. Tutup klien dan respons streaming dengan benar sebelum menganggapnya bukti bahwa proxy tidak terjangkau.

Artikel terkait