Proxy fejlécek beállítása a Requests HTTPAdapter.proxy_headers metódusával
Bővítse a HTTPAdapter.proxy_headers-t egy proxy által meghatározott mezővel, miközben a Requests meglévő proxy-hitelesítési fejléc-képzése megmarad.
A proxy üzemeltetője által meghatározott fejléc esetén a Requests a HTTPAdapter.proxy_headers-t kínálja felülírási pontként:
from urllib.parse import urlsplit
import requests
from requests.adapters import HTTPAdapter
class TaggedProxy(HTTPAdapter):
def proxy_headers(self, proxy):
headers = super().proxy_headers(proxy)
endpoint = urlsplit(proxy)
if (endpoint.scheme == 'http'
and endpoint.hostname == 'proxy.example'
and endpoint.port == 8080):
headers['X-Proxy-Account'] = 'department-a'
return headers
with requests.Session() as session:
adapter = TaggedProxy()
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get(
'https://service.example/data',
proxies={'https': 'http://proxy.example:8080'},
timeout=15,
)
Az X-Proxy-Account egy olyan mező példája, amelyet ez a konkrét proxy ért, nem pedig a hitelesítés szabványos módja minden közvetítőnél.
Kezdje a super().proxy_headers(proxy) hívással. A Requests ezt használja a Proxy-Authorization létrehozására, ha az URL Basic fiókot ad. A teljes eredmény lecserélése elveszítheti ezt a viselkedést.
Az adapter ezeket az értékeket az urllib3 ProxyManager felé továbbítja. HTTPS-alagútnál a CONNECT-t kísérik. A szokásos kérésfejléc-leképezés a későbbi célkérést írja le.
A proxy-kezelőket a proxy URL-je szerint gyorsítótárazzák. Ne tekintse ezt a horgot gyorsítótárazás nélküli, üzleti kérésenkénti visszahívásnak olyan értékhez, amelynek minden híváskor változnia kell. Ha a fiókjelölő változik, ennek megfelelően válasszon átviteli tulajdonost.
Egyszerű HTTP-továbbításnál a proxy mezőknek továbbra is szükségük van a közvetítő szándékolt fogyasztási szabályára. Az, hogy egy fejléc proxy-specifikus az ügyfél API-jában, nem garancia a bizalmasságra, ha a proxy továbbadja.