Python urllib: proxy ରାଉଟିଂକୁ ୱେବସାଇଟ୍ Basic Authentication ସହିତ ଏକତ୍ର କରିବା
ଗ୍ଲୋବାଲ୍ opener ଦୁଇଥର ନ ବଦଳାଇ urllib ରାଉଟିଂ ଏବଂ ଗନ୍ତବ୍ୟର Basic authentication ଏକ ସ୍ପଷ୍ଟ opener ରେ ଏକତ୍ର କରନ୍ତୁ।
install_opener() କୁ ଦୁଇଥର କଲ୍ କଲେ ଦ୍ୱିତୀୟ opener ପ୍ରଥମ ସହିତ ଯୋଡ଼ା ହୁଏ ନାହିଁ। ଏହା module ର default opener କୁ ବଦଳାଏ। ଯଦି ଗୋଟିଏ ବସ୍ତୁ proxy ଜାଣେ ଏବଂ ଅନ୍ୟଟି ୱେବସାଇଟ୍ ଲଗଇନ୍ ଜାଣେ, ତେବେ ଆବଶ୍ୟକ handlers ସହିତ ଏକ opener ତିଆରି କରନ୍ତୁ।
import os
from urllib.request import (ProxyHandler, HTTPBasicAuthHandler,
HTTPPasswordMgrWithDefaultRealm, build_opener)
passwords = HTTPPasswordMgrWithDefaultRealm()
passwords.add_password(None, 'https://example.com/private/',
os.environ['SITE_USER'], os.environ['SITE_PASSWORD'])
opener = build_opener(
ProxyHandler({'https': 'http://203.0.113.10:8080'}),
HTTPBasicAuthHandler(passwords),
)
with opener.open('https://example.com/private/report', timeout=10) as response:
body = response.read()proxy ଏବଂ ଗନ୍ତବ୍ୟ ଉଦାହରଣ। ସାର୍ବଜନୀନ HTTP proxy ମାଧ୍ୟମରେ ପହଞ୍ଚିପାରିବା ସାର୍ବଜନୀନ ସେବା ପାଇଁ HTTP proxy ତାଲିକା routing handler ପାଇଁ ପ୍ରାର୍ଥୀ endpoints ଦିଏ। ଏହି opener HTTPS ଅନୁରୋଧକୁ HTTP proxy ମାଧ୍ୟମରେ ପଠାଏ ଏବଂ ଗନ୍ତବ୍ୟର Basic ଚ୍ୟାଲେଞ୍ଜ ସମ୍ଭାଳେ। ଏହା proxy ପ୍ରମାଣୀକରଣ କନଫିଗର କରେ ନାହିଁ।
ଯଦି proxy ମଧ୍ୟ ଲଗଇନ୍ ଆବଶ୍ୟକ କରେ, ତେବେ ସମର୍ଥିତ proxy-ପ୍ରମାଣୀକରଣ ବ୍ୟବସ୍ଥା ଅଲଗା ଭାବରେ ବାଛନ୍ତୁ। CONNECT ସମୟରେ 407 ଗନ୍ତବ୍ୟ ନିଜର ଚ୍ୟାଲେଞ୍ଜ ଦେବା ପୂର୍ବରୁ ଘଟେ। ପାସୱାର୍ଡ ମ୍ୟାନେଜରରେ ୱେବସାଇଟ୍ କ୍ରେଡେନ୍ସିଆଲ୍ ଯୋଡ଼ିଲେ ସେହି ପୂର୍ବ ବିନିମୟ ପୂରଣ ହୋଇପାରିବ ନାହିଁ।
opener.open() କୁ ସିଧାସଳଖ କଲ୍ କଲେ କନଫିଗରେସନ୍ କାର୍ଯ୍ୟ ସହିତ ରହେ। module-ବ୍ୟାପୀ default ବଦଳାଇବା ଆବଶ୍ୟକ ନାହିଁ, ଯଦି ଆପ୍ଲିକେସନ୍ ଉଦ୍ଦେଶ୍ୟମୂଳକ ଭାବରେ ସମସ୍ତ ସୁବିଧାଜନକ କଲ୍ ଏହି opener ଅଂଶୀଦାର କରିବାକୁ ନଚାହେଁ।