Puhverserveri operaatori määratud päise jaoks pakub Requests HTTPAdapter.proxy_headers alistuspunktina:

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,
    )

X-Proxy-Account on näide väljast, mida see konkreetne puhverserver mõistab, mitte standardne viis autentida iga vahendaja juures.

Alustage super().proxy_headers(proxy)-st. Requests kasutab seda meetodit Proxy-Authorization genereerimiseks, kui URL annab Basic-konto. Kogu tulemuse asendamine võib selle käitumise kaotada.

Adapter edastab need väärtused urllib3 ProxyManageri. HTTPS-tunneli puhul saadavad need CONNECT-i. Tavaline päringu päiste vastendus kirjeldab hilisemat sihtkoha päringut.

Puhverserveri haldureid hoitakse vahemällu puhverserveri URL-i järgi. Ärge käsitlege seda konksu vahemällu salvestamata tagasikutse na äriloogika päringu kohta väärtuse jaoks, mis peab muutuma igal väljakutsel. Kui kontomärgis muutub, valige transporti omand vastavalt.

Lihtsa HTTP edastuse puhul vajavad puhverserveri väljad endiselt vahendaja kavandatud tarbimispoliitikat. See, et päis on kliendi API-s puhverserverispetsiifiline, ei taga konfidentsiaalsust, kui puhverserver edastab selle edasi.

Seotud artiklid