ਪ੍ਰੌਕਸੀ ਆਪਰੇਟਰ ਵੱਲੋਂ ਪਰਿਭਾਸ਼ਿਤ ਹੈਡਰ ਲਈ 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) ਨਾਲ ਸ਼ੁਰੂ ਕਰੋ। ਜਦੋਂ URL Basic ਖਾਤਾ ਦਿੰਦਾ ਹੈ ਤਾਂ Requests ਉਸ ਵਿਧੀ ਨਾਲ Proxy-Authorization ਬਣਾਉਂਦਾ ਹੈ। ਪੂਰਾ ਨਤੀਜਾ ਬਦਲਣ ਨਾਲ ਉਹ ਵਿਵਹਾਰ ਗੁਆਚ ਸਕਦਾ ਹੈ।

ਅਡੈਪਟਰ ਇਹ ਮੁੱਲ urllib3 ਦੇ ProxyManager ਨੂੰ ਭੇਜਦਾ ਹੈ। HTTPS ਟਨਲ ਵਿੱਚ ਇਹ CONNECT ਨਾਲ ਜਾਂਦੇ ਹਨ। ਆਮ ਬੇਨਤੀ-ਹੈਡਰ ਮੈਪਿੰਗ ਬਾਅਦ ਵਾਲੀ ਮੰਜ਼ਿਲ ਬੇਨਤੀ ਦਾ ਵਰਣਨ ਕਰਦੀ ਹੈ।

ਪ੍ਰੌਕਸੀ ਮੈਨੇਜਰ ਪ੍ਰੌਕਸੀ URL ਅਨੁਸਾਰ ਕੈਸ਼ ਹੁੰਦੇ ਹਨ। ਹਰ ਕਾਲ ਵਿੱਚ ਬਦਲਣ ਵਾਲੇ ਮੁੱਲ ਲਈ ਇਸ ਹੁੱਕ ਨੂੰ ਕੈਸ਼ ਰਹਿਤ ਪ੍ਰਤੀ-ਕਾਰੋਬਾਰੀ-ਬੇਨਤੀ ਕਾਲਬੈਕ ਨਾ ਸਮਝੋ। ਖਾਤਾ ਮਾਰਕਰ ਬਦਲਣ ’ਤੇ ਉਸ ਅਨੁਸਾਰ ਟਰਾਂਸਪੋਰਟ ਮਾਲਕੀ ਚੁਣੋ।

ਸਾਧਾਰਨ HTTP ਫ਼ਾਰਵਰਡਿੰਗ ਵਿੱਚ ਪ੍ਰੌਕਸੀ ਫ਼ੀਲਡਾਂ ਲਈ ਅਜੇ ਵੀ ਵਿਚੋਲੇ ਦੀ ਇੱਛਤ ਵਰਤੋਂ ਨੀਤੀ ਲੋੜੀਂਦੀ ਹੈ। ਕਲਾਇੰਟ API ਵਿੱਚ ਹੈਡਰ ਦਾ ਪ੍ਰੌਕਸੀ-ਖ਼ਾਸ ਹੋਣਾ ਗੋਪਨੀਯਤਾ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ, ਜੇ ਪ੍ਰੌਕਸੀ ਇਸਨੂੰ ਅੱਗੇ ਭੇਜਦਾ ਹੈ।

ਸੰਬੰਧਿਤ ਲੇਖ