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 बाटोमा छ।