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 ରେ ହେଡର ପ୍ରକ୍ସି-ନିର୍ଦ୍ଦିଷ୍ଟ ହେବା ଗୋପନୀୟତାର ଗ୍ୟାରେଣ୍ଟି ନୁହେଁ ଯଦି ପ୍ରକ୍ସି ଏହାକୁ ଆଗକୁ ପଠାଏ।