Välityspalvelimen otsikoiden asettaminen Requests-kirjaston HTTPAdapter.proxy_headers-ominaisuudella
Laajenna HTTPAdapter.proxy_headers välityspalvelimen määrittämälle kentälle säilyttäen Requestsin nykyinen välityspalvelimen todennusotsikon luonti.
Kun välityspalvelimen ylläpitäjä määrittää otsikon, Requests tarjoaa HTTPAdapter.proxy_headers-menetelmän ohituspisteeksi:
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 esimerkki kentästä, jonka juuri tämä välityspalvelin ymmärtää, ei yleinen tapa todentaa kaikkien välittäjien kanssa.
Aloita super().proxy_headers(proxy)-kutsulla. Requests käyttää sitä Proxy-Authorization-otsikon luontiin, kun URL tarjoaa Basic-tilin. Koko tuloksen korvaaminen voi kadottaa tämän toiminnan.
Adapteri välittää arvot urllib3:n ProxyManagerille. HTTPS-tunnelissa ne kulkevat CONNECTin mukana. Tavallinen pyyntöotsikoiden yhdistäminen kuvaa myöhempää kohdepyyntöä.
Välityspalvelinten hallinnat välimuistitetaan välityspalvelimen URL:n mukaan. Älä käsittele tätä koukkua välimuistittomana liiketoimintapyyntökohtaisena takaisinkutsuna arvolle, jonka on muututtava joka kutsulla. Valitse siirtokerroksen omistajuus sen mukaisesti, kun tilimerkki vaihtelee.
Tavallisessa HTTP-edelleenlähetyksessä välityspalvelinkentät tarvitsevat yhä välittäjän tarkoittaman käyttökäytännön. Se, että otsikko on asiakasrajapinnassa välityspalvelinkohtainen, ei takaa luottamuksellisuutta, jos välityspalvelin välittää sen eteenpäin.