وقتی یک نقطهٔ پایانی باید درخواست‌های کلاینت را بگیرد، proxy= به کار ببرید. وقتی طرح مقصدها مسیرهای متفاوت می‌خواهند، mounts= را به کار ببرید. نمونه‌ها از این رابط‌های HTTPX استفاده می‌کنند؛ پروژه‌ای با API قدیمی proxies= به پیکربندی سازگار با همان نسخه نیاز دارد.

یک نقطهٔ پایانی

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)

شنوندهٔ محلی را با پروکسی HTTP فعال جایگزین کنید. گزینه‌ای از فهرست پروکسی‌های HTTP هم باید با مقصد شما آزمایش شود. مقصد HTTPS می‌تواند از این نقطهٔ http:// با CONNECT استفاده کند. تغییر طرح به https:// در عوض TLS تا خود پروکسی را می‌خواهد و به پشتیبانی شنونده و کلاینت نیاز دارد.

مسیرهای جدا بر اساس طرح مقصد

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)

کلیدهای اتصال با URL مقصد تطبیق دارند. مقصد HTTP اینجا درگاه 8080 و HTTPS درگاه 8081 را انتخاب می‌کند. مقدار پروکسی پروتکل خود شنونده را نشان می‌دهد؛ پس اتصال HTTPS می‌تواند به‌درستی شامل پروکسی http:// باشد. نقاط خودتان را بگذارید و هر دو طرح مقصد را بررسی کنید.

هر دو روش trust_env=False را روی کلاینت و، در صورت ارائه، روی transportها تنظیم می‌کنند. در غیر این صورت HTTPX پیش‌فرض متغیرهای محیطی پروکسی و گواهی را می‌خواند. اگر استقرار به آن‌ها متکی است، کشف را روشن بگذارید یا مسیر و اعتماد لازم را صریح تنظیم کنید. برای اعتماد خصوصی، از زمینهٔ TLS و تنظیم CA پشتیبانی‌شده در نسخهٔ HTTPX خود استفاده کنید؛ اعتبارسنجی مقصد روشن بماند. اعتماد به پروکسی HTTPS می‌تواند از اعتماد به مقصد جدا باشد.

httpx.Timeout(15.0, connect=5.0) زمان اتصال را بازنویسی می‌کند و به بقیهٔ مؤلفه‌های تنظیم‌شده مقدار پیش‌فرض می‌دهد. خواندن، نوشتن و انتظار pool محدودیت جدا دارند؛ پانزده ثانیه مهلت کلی زمان سپری‌شده نیست. پایان مهلت pool می‌تواند یعنی کار دیگری اتصال‌های موجود را نگه داشته است. پیش از تلقی آن به‌عنوان نشانهٔ دسترس‌ناپذیری پروکسی، کلاینت‌ها و پاسخ‌های جریانی را درست ببندید.

مقالات مرتبط