Proxy operatörünün tanımladığı bir başlık için Requests, HTTPAdapter.proxy_headers'ı geçersiz kılma noktası olarak sunar:

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, tam olarak bu proxy'nin anladığı bir alan örneğidir; her aracıya karşı kimlik doğrulamanın standart yolu değildir.

super().proxy_headers(proxy) ile başlayın. Requests, URL bir Basic hesap sağladığında Proxy-Authorization üretmek için bu yöntemi kullanır. Sonucun tamamını değiştirmek bu davranışı kaybettirebilir.

Bağdaştırıcı bu değerleri urllib3'ün ProxyManager nesnesine aktarır. HTTPS tünelinde bunlar CONNECT ile birlikte gider. Olağan istek başlığı eşlemesi, daha sonraki hedef isteğini tanımlar.

Proxy yöneticileri proxy URL'sine göre önbelleğe alınır. Her çağrıda değişmesi gereken bir değer için bu kancayı önbelleksiz, iş isteği başına bir geri çağırma olarak değerlendirmeyin. Hesap işareti değiştiğinde taşıma sahipliğini buna göre seçin.

Düz HTTP yönlendirmede proxy alanları yine de aracının amaçladığı tüketim politikasına ihtiyaç duyar. Başlığın istemci API'sinde proxy'ye özgü olması, proxy onu ileri aktarırsa bir gizlilik garantisi değildir.

İlgili makaleler