ಪ್ರಾಕ್ಸಿ ನಿರ್ವಾಹಕರು ನಿರ್ಧರಿಸುವ ಹೆಡರ್‌ಗಾಗಿ 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 ನಲ್ಲಿ ಹೆಡರ್ ಪ್ರಾಕ್ಸಿ-ನಿರ್ದಿಷ್ಟವಾಗಿರುವುದು ಪ್ರಾಕ್ಸಿ ಅದನ್ನು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸಿದರೆ ಗೋಪ್ಯತೆಯ ಖಾತರಿಯಲ್ಲ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು