Το proxy του γραφείου ζητά έναν λογαριασμό. Ο ιστότοπος πίσω του ζητά άλλον. Το Requests έχει ξεχωριστές εισόδους για αυτά τα δύο Basic login: διαπιστευτήρια στο URL του proxy και το όρισμα auth του αιτήματος.

from urllib.parse import quote
import requests

proxy_url = (
    f"http://{quote(proxy_user, safe='')}:"
    f"{quote(proxy_password, safe='')}@proxy.example:8080"
)
response = requests.get(
    "https://reports.example/private/",
    proxies={"https": proxy_url},
    auth=(site_user, site_password),
    timeout=(5, 20),
)
response.raise_for_status()

Οι τέσσερις μεταβλητές λογαριασμού προέρχονται από τη ρύθμιση διαπιστευτηρίων της εφαρμογής. Η κωδικοποίηση του ονόματος χρήστη και του κωδικού του proxy χωριστά διατηρεί χαρακτήρες όπως το at χωρίς να τους μετατρέπει σε διαχωριστικά URL.

Το κλειδί https στο λεξικό επιλέγει αυτή τη διαδρομή για προορισμό HTTPS. Η τιμή του εξακολουθεί να ξεκινά με http:// επειδή αυτό είναι το πρωτόκολλο που χρησιμοποιείται για να φτάσουμε σε αυτό το παράδειγμα proxy.

Για αυτό το αίτημα HTTPS, το login του proxy ανήκει στην ανταλλαγή CONNECT. Το login του ιστότοπου ανήκει στο επόμενο αίτημα μέσα από τη σήραγγα που έχει στηθεί. Το να αντλεί ο προσαρμογέας την εξουσιοδότηση του proxy από το δικό του URL την κρατά στο σχετικό άλμα· δεν χρειάζεται συνδυασμένη κλάση ταυτοποίησης για αυτή τη Basic περίπτωση.

Ένα 407 δηλώνει την πρόκληση του ενδιάμεσου. Ένα 401 από τον ιστότοπο δηλώνει την πρόκληση του προορισμού. Χρησιμοποίησε αυτή την απάντηση για να αποφασίσεις ποιος από τους δύο ρυθμισμένους λογαριασμούς χρειάζεται προσοχή.

Σχετικά άρθρα