urllib3 ସହ ପ୍ରକ୍ସି IP ବ୍ୟବହାର କରନ୍ତୁ
HTTP ପ୍ରକ୍ସି ପାଇଁ ProxyManager ବାଛନ୍ତୁ, urllib3 ଉତ୍ତର କ୍ଷେତ୍ର ଦେଖନ୍ତୁ ଏବଂ ପୁନଃଚେଷ୍ଟା ଓ SOCKSର ଅଲଗା ମ୍ୟାନେଜର୍ ଧ୍ୟାନରେ ରଖନ୍ତୁ।
ଛୋଟ urllib3 ପ୍ରକ୍ସି ନିଦାନ ପାଇଁ ପୁନଃଚେଷ୍ଟା ବନ୍ଦ କରି ProxyManager ବ୍ୟବହାର କରନ୍ତୁ। ଏହା ଅଚଳ ଏଣ୍ଟ୍ରିକୁ ବାରମ୍ବାର ଚେଷ୍ଟା କରି ସମୟ ନଷ୍ଟ କରିବା ବଦଳରେ ପ୍ରଥମ ଚେଷ୍ଟା ଦେଖାଏ। uv ପରିଚାଳିତ ପ୍ରକଳ୍ପରେ:
uv add urllib3ଦଲିଲର ଏଣ୍ଡପଏଣ୍ଟକୁ ନିଜ ସେବା କିମ୍ବା HTTP ପ୍ରକ୍ସି ତାଲିକାର HTTP ପ୍ରକ୍ସିରେ ବଦଳାଇ ସେହି ମ୍ୟାନେଜର୍ ଦେଇ ଅନୁରୋଧ କରନ୍ତୁ:
import urllib3
proxy = urllib3.ProxyManager(
"http://203.0.113.10:8080",
timeout=urllib3.Timeout(connect=5, read=10),
retries=False,
)
try:
response = proxy.request("GET", "https://example.com/")
print(response.status)
print(response.data.decode("utf-8", errors="replace")[:200])
finally:
proxy.clear()
ପ୍ରଥମେ response.status ପଢ଼ନ୍ତୁ, ପରେ response.data ଦେଖନ୍ତୁ। ଏଗୁଡ଼ିକ urllib3ର କ୍ଷେତ୍ର; Requestsର status_code ଓ text ବିକଳ୍ପ ନୁହେଁ। ସାଇଟ୍ର ଅସ୍ୱୀକାର ସଚଳ ପ୍ରକ୍ସି ଦେଇ ଆସିପାରେ। ଉତ୍ତର ପୂର୍ବରୁ ବ୍ୟତିକ୍ରମ ହେଲେ ଅନୁରୋଧ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇନଥିବା ବୁଝାଏ।
retries=False ନିଦାନର ପସନ୍ଦ, ପ୍ରୋଡକ୍ସନ୍ ପୁନଃଚେଷ୍ଟା ନୀତି ନୁହେଁ। ସଂଯୋଗର 5 ସେକେଣ୍ଡ ଓ ପଢ଼ିବାର 10 ସେକେଣ୍ଡ ନିଜ ପର୍ଯ୍ୟାୟ ସୀମିତ କରେ; ମିଶି ନିଶ୍ଚିତ ମୋଟ 15 ସେକେଣ୍ଡ ସମୟସୀମା ହୁଏ ନାହିଁ। DNS ଓ ଉତ୍ତରର ପ୍ରଗତି ମୋଟ ଅପେକ୍ଷାକୁ ପ୍ରଭାବିତ କରିପାରେ।
ଉଦାହରଣ ବଡି ଆଗୁଆ ଲୋଡ୍ କରେ ଏବଂ ଶେଷରେ ମ୍ୟାନେଜର୍ର ପୁଲ୍ ସଫା କରେ। ସେହି ଏଣ୍ଡପଏଣ୍ଟ ଦେଇ ପୁନରାବୃତ୍ତ ଅନୁରୋଧ ପାଇଁ କାମ ଶେଷ ପର୍ଯ୍ୟନ୍ତ ମ୍ୟାନେଜର୍ ରଖନ୍ତୁ, ଯେପରି ସଂଯୋଗ ପୁଣି ବ୍ୟବହାର ହେବ। preload_content=Falseକୁ ବଦଳିଲେ ଜୀବନଚକ୍ର ବଦଳେ: ଡାକୁଥିବା ପକ୍ଷ ଷ୍ଟ୍ରିମ୍ ଉତ୍ତର ପଢ଼ି ମୁକ୍ତ କରିବା ଦରକାର।
ଶୁଣୁଥିବା ସେବା ଅନୁସାରେ ମ୍ୟାନେଜର୍ ବାଛନ୍ତୁ। ଅନ୍ୟତ୍ର URL ରଖିଲେ ସାଧାରଣ PoolManager ପ୍ରକ୍ସି-ସଚେତନ ହୁଏ ନାହିଁ; SOCKS urllib3.contrib.socks.SOCKSProxyManager ଓ ତାହାର ଇଚ୍ଛାଧୀନ ନିର୍ଭରତା ବ୍ୟବହାର କରେ। ଉପରର କୋଡ୍ HTTP ProxyManager ପଥ ଅନୁସରେ।