urllib3 ProxyManager: ارسال اعتبارنامههای Basic در proxy_headers
اعتبارنامههای پروکسی Basic را از طریق ProxyManager.proxy_headers تأمین کنید تا در هنگام HTTPS CONNECT در دسترس باشند و به سرآیندهای مقصد تبدیل نشوند.
ProxyManager یک آرگومان جداگانه به نام proxy_headers برای سرآیندهایی دارد که به واسطه ارسال میشود. برای پروکسیای که احراز هویت 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)
برای مقصد HTTP ساده، این سرآیندها همراه درخواست ارسالشده به پروکسی میروند. برای مقصد HTTPS با CONNECT، آنها به راهاندازی تونل تعلق دارند نه به هر درخواست رمزنگاریشده وبسایت.
آرگومان معمول headers سرآیندهای درخواست مقصد را توصیف میکند. این احراز هویت پروکسی به گیرنده دیگری تعلق دارد. قرار دادن حساب پروکسی در آنجا با پیکربندی تبادل CONNECT پیشین یکسان نیست.
make_headers مقدار سرآیند Basic را میسازد. این تابع NTLM را مذاکره نمیکند، طرح پشتیبانیشده را خودکار انتخاب نمیکند و ثابت نمیکند که پروکسی آن حساب را میپذیرد.
پروکسی با شنونده TLS یک بافت TLS جداگانه برای پروکسی اضافه میکند. نقطه پایانی http:// بالا آگاهانه یک شنونده HTTP معمولی را توصیف میکند که مقصد HTTPS را از طریق تونل حمل میکند.