ProxyManager memiliki argumen terpisah proxy_headers untuk header yang dikirim ke perantara. Untuk proksi yang menerima autentikasi Basic:

import urllib3

proxy_headers = urllib3.make_headers(
    proxy_basic_auth=f'{proxy_user}:{proxy_password}'
)
with urllib3.ProxyManager(
    'http://proxy.example:8080',
    proxy_headers=proxy_headers,
    timeout=urllib3.Timeout(connect=5, read=10),
) as http:
    response = http.request('GET', 'https://service.example/data')
    print(response.status)

Untuk tujuan HTTP biasa, header ini ikut bersama permintaan yang diteruskan ke proksi. Untuk tujuan HTTPS dengan CONNECT, header tersebut termasuk dalam penyiapan terowongan, bukan setiap permintaan situs web yang terenkripsi.

Argumen biasa headers menjelaskan header permintaan tujuan. Autentikasi proksi ini milik penerima lain. Menaruh akun proksi di sana tidak setara dengan mengonfigurasi pertukaran CONNECT sebelumnya.

make_headers membangun nilai header Basic. Fungsi ini tidak menegosiasikan NTLM, tidak memilih skema yang didukung secara otomatis, dan tidak membuktikan bahwa proksi menerima akun tersebut.

Proksi dengan pendengar TLS menambahkan konteks TLS proksi tersendiri. Titik akhir http:// di atas sengaja menjelaskan pendengar HTTP biasa yang membawa tujuan HTTPS melalui terowongan.

Artikel terkait