Ορισμός κεφαλίδων διαμεσολαβητή με HTTPAdapter.proxy_headers του Requests
Επεκτείνετε το HTTPAdapter.proxy_headers για ένα πεδίο που ορίζει ο διαμεσολαβητής, διατηρώντας την υπάρχουσα παραγωγή κεφαλίδας ελέγχου ταυτότητας του Requests.
Για μια κεφαλίδα που ορίζει ο διαχειριστής του διαμεσολαβητή, το Requests εκθέτει το HTTPAdapter.proxy_headers ως σημείο παράκαμψης:
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 είναι παράδειγμα πεδίου που κατανοεί αυτός ο συγκεκριμένος διαμεσολαβητής, όχι τυπικός τρόπος ταυτοποίησης προς κάθε ενδιάμεσο.
Ξεκινήστε με super().proxy_headers(proxy). Το Requests χρησιμοποιεί αυτή τη μέθοδο για να παράγει Proxy-Authorization όταν το URL παρέχει λογαριασμό Basic. Η αντικατάσταση ολόκληρου του αποτελέσματος μπορεί να χάσει αυτή τη συμπεριφορά.
Ο προσαρμογέας περνά αυτές τις τιμές στο ProxyManager του urllib3. Σε σήραγγα HTTPS συνοδεύουν το CONNECT. Η συνήθης αντιστοίχιση κεφαλίδων περιγράφει το μεταγενέστερο αίτημα προς τον προορισμό.
Οι διαχειριστές διαμεσολαβητή αποθηκεύονται ανά URL διαμεσολαβητή. Μη θεωρείτε αυτό το άγκιστρο ως μη αποθηκευμένη επανάκληση ανά επιχειρηματικό αίτημα για τιμή που πρέπει να αλλάζει σε κάθε κλήση. Επιλέξτε ιδιοκτησία μεταφοράς αναλόγως όταν αλλάζει ο δείκτης λογαριασμού.
Στην απλή προώθηση HTTP, τα πεδία διαμεσολαβητή χρειάζονται ακόμη την προβλεπόμενη πολιτική κατανάλωσης του ενδιάμεσου. Το ότι μια κεφαλίδα είναι ειδική για τον διαμεσολαβητή στο API πελάτη δεν εγγυάται εμπιστευτικότητα αν ο διαμεσολαβητής την προωθήσει.