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 ਰਾਹ ਵਰਤਦਾ ਹੈ।