Requests ನ HTTPAdapter.proxy_headers ಬಳಸಿ ಪ್ರಾಕ್ಸಿ ಹೆಡರ್ಗಳನ್ನು ಹೊಂದಿಸುವುದು
ಪ್ರಾಕ್ಸಿ ನಿರ್ಧರಿಸುವ ಕ್ಷೇತ್ರಕ್ಕಾಗಿ 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) ನಿಂದ ಪ್ರಾರಂಭಿಸಿ. URL Basic ಖಾತೆ ನೀಡಿದಾಗ Requests ಆ ವಿಧಾನದಿಂದ Proxy-Authorization ರಚಿಸುತ್ತದೆ. ಇಡೀ ಫಲಿತಾಂಶವನ್ನು ಬದಲಿಸುವುದು ಆ ವರ್ತನೆಯನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು.
ಅಡಾಪ್ಟರ್ ಈ ಮೌಲ್ಯಗಳನ್ನು urllib3 ನ ProxyManager ಗೆ ರವಾನಿಸುತ್ತದೆ. HTTPS ಸುರಂಗದಲ್ಲಿ ಅವು CONNECT ಜೊತೆ ಹೋಗುತ್ತವೆ. ಸಾಮಾನ್ಯ ವಿನಂತಿ-ಹೆಡರ್ ಮ್ಯಾಪಿಂಗ್ ನಂತರದ ಗಮ್ಯಸ್ಥಾನ ವಿನಂತಿಯನ್ನು ವಿವರಿಸುತ್ತದೆ.
ಪ್ರಾಕ್ಸಿ ಮ್ಯಾನೇಜರ್ಗಳನ್ನು ಪ್ರಾಕ್ಸಿ URL ಪ್ರಕಾರ ಕ್ಯಾಶೆ ಮಾಡಲಾಗುತ್ತದೆ. ಪ್ರತಿ ಕರೆಯಲ್ಲಿ ಬದಲಾಗಬೇಕಾದ ಮೌಲ್ಯಕ್ಕಾಗಿ ಈ ಹುಕ್ ಅನ್ನು ಕ್ಯಾಶೆ ರಹಿತ ಪ್ರತಿ-ವ್ಯಾಪಾರ ವಿನಂತಿ ಕಾಲ್ಬ್ಯಾಕ್ ಎಂದು ಪರಿಗಣಿಸಬೇಡಿ. ಖಾತೆ ಗುರುತು ಬದಲಾದಾಗ ಅದಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಸಾರಿಗೆ ಮಾಲೀಕತ್ವ ಆಯ್ಕೆಮಾಡಿ.
ಸರಳ HTTP ಮುಂದುವರಿಸುವಿಕೆಯಲ್ಲಿ ಪ್ರಾಕ್ಸಿ ಕ್ಷೇತ್ರಗಳಿಗೆ ಇನ್ನೂ ಮಧ್ಯವರ್ತಿಯ ಉದ್ದೇಶಿತ ಬಳಕೆ ನೀತಿ ಬೇಕು. ಕ್ಲೈಂಟ್ API ನಲ್ಲಿ ಹೆಡರ್ ಪ್ರಾಕ್ಸಿ-ನಿರ್ದಿಷ್ಟವಾಗಿರುವುದು ಪ್ರಾಕ್ಸಿ ಅದನ್ನು ಮುಂದಕ್ಕೆ ಕಳುಹಿಸಿದರೆ ಗೋಪ್ಯತೆಯ ಖಾತರಿಯಲ್ಲ.