Python urllib: ଗୋଟିଏ opener ପାଇଁ ପ୍ରକ୍ସି ବନ୍ଦ କରନ୍ତୁ
ଅନ୍ୟ କ୍ଲାଏଣ୍ଟ ଓ ପ୍ରକ୍ରିୟାର ପରିବେଶ ନ ବଦଳାଇ ProxyHandler({}) ଦ୍ୱାରା ସିଧା ଯୋଡ଼ି ହେଉଥିବା urllib opener ତିଆରି କରନ୍ତୁ।
ଗୋଟିଏ urllib opener ସିଧା ଯୋଡ଼ି ହେବା ଦରକାର ହେଲେ ProxyHandler କୁ ଖାଲି ମ୍ୟାପିଂ ଦିଅନ୍ତୁ:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
with direct.open("https://example.com/", timeout=10) as response:
print(response.status)
ଖାଲି ଡିକ୍ସନାରି କୌଣସି ପ୍ରକ୍ସି ପଥ ଦିଏ ନାହିଁ। ମ୍ୟାପିଂ ନ ଦେଲେ ହ୍ୟାଣ୍ଡଲର୍ ପରିବେଶ ଓ ପ୍ଲାଟଫର୍ମ ସେଟିଂରୁ ପ୍ରକ୍ସି ଖୋଜେ। ଏହି ଦୁଇ ନିର୍ମାଣ ପଦ୍ଧତି ଭିନ୍ନ ନୀତି ଦର୍ଶାଏ।
ଉଦାହରଣ Python ର ମାନକ ଲାଇବ୍ରେରି ବ୍ୟବହାର କରେ ଏବଂ ସାଧାରଣ HTTPS ଯାଞ୍ଚ ରଖେ। with ବ୍ଲକ୍ ଉତ୍ତର ବନ୍ଦ କରେ, ବ୍ୟତିକ୍ରମ ଯୋଗୁଁ ବ୍ଲକ୍ ଛାଡ଼ିବାବେଳେ ମଧ୍ୟ।
ଏକେ ଆପ୍ଲିକେସନ୍ରେ ସିଧା ଓ ପ୍ରକ୍ସି ମାଧ୍ୟମରେ ଅନୁରୋଧ
ଦୁଇଟି opener ଦୁଇ ନୀତି ରଖିପାରେ, କଲ୍ଗୁଡ଼ିକ ମଧ୍ୟରେ ପରିବେଶ ଚଳ ନ ବଦଳାଇ:
from urllib.request import ProxyHandler, build_opener
direct = build_opener(ProxyHandler({}))
proxied = build_opener(ProxyHandler({
"http": "http://127.0.0.1:8080",
"https": "http://127.0.0.1:8080",
}))
with proxied.open("https://example.com/", timeout=10) as response:
print(response.status)
ଲୁପ୍ବ୍ୟାକ୍ ଠିକଣାକୁ ନିଜ HTTP ପ୍ରକ୍ସି ସହ ବଦଳାନ୍ତୁ, କିମ୍ବା ପ୍ରକ୍ସି ତୁଳନା ପାଇଁ HTTP ପ୍ରକ୍ସି ତାଲିକାରୁ ଗୋଟିଏ ବାଛନ୍ତୁ। ସେବା ଅନୁମତି ଦେଲେ ଏହା HTTPS ଲକ୍ଷ୍ୟର ସଂଯୋଗକୁ CONNECT ମାଧ୍ୟମରେ ନେଇପାରେ। ଶୁଣୁଥିବା ସେବାର ପ୍ରୋଟୋକଲ୍ ଓ ପ୍ରମାଣୀକରଣ ସମର୍ଥନ ହ୍ୟାଣ୍ଡଲର୍ ସହ ମେଳ ଖାଇବା ଉଚିତ।
ଡିଫଲ୍ଟ opener ବଦଳାନ୍ତୁ ନାହିଁ
ପଥର ଦାୟିତ୍ୱ ଥିବା ଅବଜେକ୍ଟ ଦ୍ୱାରା direct.open କିମ୍ବା proxied.open କଲ୍ କରନ୍ତୁ। install_opener urllib ର ସୁବିଧାଜନକ କଲ୍ଗୁଡ଼ିକ ବ୍ୟବହାର କରୁଥିବା ପ୍ରକ୍ରିୟା-ବ୍ୟାପୀ ଡିଫଲ୍ଟ ବଦଳାଏ; ତେଣୁ ଏହା ବ୍ୟବହାର କରୁଥିବା ଲାଇବ୍ରେରି ଅସମ୍ବନ୍ଧିତ କୋଡ୍କୁ ପ୍ରଭାବିତ କରିପାରେ। ଉପରର ପୃଥକ opener ପାଇଁ ଏହା ଦରକାର ନାହିଁ।
timeout ଆର୍ଗୁମେଣ୍ଟ ଗୋଟିଏ ଅପରେସନ୍ର ସେଟିଂ, ପ୍ରତ୍ୟେକ ସ୍ଥାନାନ୍ତରର ସମ୍ପୂର୍ଣ୍ଣ ବାସ୍ତବ ସମୟସୀମା ନୁହେଁ। କାମକୁ ଦରକାର ତଥ୍ୟ ମାତ୍ର ପଢ଼ନ୍ତୁ ଏବଂ କଠୋର ମୋଟ ସମୟ ବଜେଟ୍ ଥିଲେ ଉଚ୍ଚ ସ୍ତରର ସମୟସୀମା ବ୍ୟବହାର କରନ୍ତୁ।
ଏହି opener ଅବଜେକ୍ଟଗୁଡ଼ିକ ଅନ୍ୟ ଲାଇବ୍ରେରିର କ୍ଲାଏଣ୍ଟ, ବିଦ୍ୟମାନ ପ୍ରକ୍ରିୟା କିମ୍ବା ବ୍ରାଉଜର୍ର ପ୍ରକ୍ସି ସେଟିଂ ବଦଳାନ୍ତି ନାହିଁ।